From 82af6a6af7cb97fe7e2ebc7dd602cda55c1a9593 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 17 May 2025 11:56:09 +1200 Subject: [PATCH] Working! --- source/build.sh | 3 + source/src/autogen/_agent.cpp | 1459 +++++++++------------------------ source/src/commands/edit.cpp | 19 +- source/src/service_runner.cpp | 2 +- 4 files changed, 405 insertions(+), 1078 deletions(-) diff --git a/source/build.sh b/source/build.sh index 504aa72..60e84c7 100755 --- a/source/build.sh +++ b/source/build.sh @@ -29,6 +29,9 @@ print_warning() { echo -e "${YELLOW}[!] $1${NC}" } +# ensure we have latest dehydrate. +dehydrate -u + # Check if build directory exists, if not create it if [ ! -d "build" ]; then print_status "Creating build directory..." diff --git a/source/src/autogen/_agent.cpp b/source/src/autogen/_agent.cpp index d3c6587..b04a4ce 100644 --- a/source/src/autogen/_agent.cpp +++ b/source/src/autogen/_agent.cpp @@ -2,9 +2,7 @@ #include #include #include -#include - - +#include /* @@ -27,1084 +25,413 @@ static uint64_t fnv1a_64(const void* data, size_t len) { return h; } -static const unsigned char data__common_sh[] = { - 0x23, 0x20, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x20, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x53, 0x0a, 0x23, 0x20, 0x4a, 0x44, 0x45, 0x0a, 0x23, 0x20, 0x32, 0x30, 0x32, 0x35, 0x2d, - 0x30, 0x35, 0x2d, 0x30, 0x33, 0x0a, 0x0a, 0x23, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, - 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x54, 0x4f, 0x20, 0x2a, 0x2a, 0x2a, 0x41, 0x4c, 0x4c, 0x2a, 0x2a, 0x2a, 0x20, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x24, 0x7b, 0x41, 0x47, 0x45, - 0x4e, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x7d, 0x2f, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x73, 0x68, 0x0a, 0x0a, 0x23, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x0a, 0x0a, 0x23, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, - 0x64, 0x69, 0x65, 0x20, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x61, - 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, - 0x69, 0x6e, 0x20, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x78, 0x69, 0x74, 0x73, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x63, 0x6f, 0x64, - 0x65, 0x20, 0x31, 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x67, 0x72, 0x65, 0x79, 0x5f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3a, 0x20, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, 0x65, 0x79, 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x67, - 0x72, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x67, 0x72, 0x65, 0x79, 0x2e, 0x0a, 0x23, - 0x20, 0x20, 0x20, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x22, - 0x3c, 0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6d, 0x64, 0x3e, 0x22, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x20, 0x3a, 0x20, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x20, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2c, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, 0x0a, 0x23, 0x20, 0x20, - 0x20, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x20, - 0x3c, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x3e, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x73, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x69, 0x66, - 0x20, 0x69, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, - 0x74, 0x20, 0x28, 0x63, 0x68, 0x6d, 0x6f, 0x64, 0x20, 0x37, 0x37, 0x37, 0x29, 0x2e, 0x0a, 0x23, - 0x20, 0x20, 0x20, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, - 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x20, 0x69, 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, - 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x73, 0x20, 0x31, 0x20, 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x20, 0x3a, 0x20, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x20, 0x28, 0x61, 0x6e, 0x79, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x29, 0x20, - 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x31, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, - 0x23, 0x20, 0x20, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x3a, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x31, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x50, 0x72, - 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x3c, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x3a, 0x20, - 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, - 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2c, - 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, - 0x53, 0x74, 0x6f, 0x70, 0x73, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x3e, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x53, 0x74, 0x6f, 0x70, 0x73, 0x20, 0x28, 0x69, 0x66, - 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x29, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x2e, 0x0a, 0x23, 0x20, 0x20, 0x20, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x20, 0x20, 0x3a, 0x20, 0x50, 0x72, - 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x0a, 0x23, - 0x20, 0x20, 0x20, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x73, 0x20, 0x22, 0x56, 0x41, 0x52, - 0x31, 0x22, 0x20, 0x2e, 0x2e, 0x2e, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, 0x20, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x74, 0x3b, 0x20, 0x63, 0x61, 0x6c, 0x6c, - 0x73, 0x20, 0x5f, 0x64, 0x69, 0x65, 0x28, 0x29, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, - 0x61, 0x72, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x23, 0x20, 0x20, - 0x20, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x74, 0x72, - 0x65, 0x65, 0x20, 0x3c, 0x70, 0x61, 0x74, 0x68, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, - 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, - 0x72, 0x6f, 0x6f, 0x74, 0x20, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x28, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x2e, 0x0a, 0x0a, 0x23, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x0a, 0x23, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, - 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x20, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x78, 0x69, - 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x63, - 0x6f, 0x64, 0x65, 0x20, 0x31, 0x2e, 0x0a, 0x5f, 0x64, 0x69, 0x65, 0x28, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x2d, 0x65, 0x20, 0x22, 0x5c, 0x30, 0x33, - 0x33, 0x5b, 0x39, 0x31, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x24, 0x31, 0x5c, 0x30, - 0x33, 0x33, 0x5b, 0x30, 0x6d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, - 0x31, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, 0x65, 0x79, 0x2e, 0x0a, 0x5f, - 0x67, 0x72, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x2d, 0x65, 0x20, 0x2d, 0x6e, 0x20, 0x22, 0x5c, - 0x30, 0x33, 0x33, 0x5b, 0x39, 0x30, 0x6d, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, - 0x67, 0x72, 0x65, 0x79, 0x2e, 0x0a, 0x5f, 0x67, 0x72, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x28, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x2d, 0x65, 0x20, - 0x2d, 0x6e, 0x20, 0x22, 0x5c, 0x30, 0x33, 0x33, 0x5b, 0x30, 0x6d, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, - 0x23, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, - 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2c, 0x20, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x2e, - 0x0a, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x28, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x2d, 0x7a, 0x20, 0x22, 0x24, 0x31, - 0x22, 0x20, 0x5d, 0x20, 0x7c, 0x7c, 0x20, 0x5b, 0x20, 0x2d, 0x7a, 0x20, 0x22, 0x24, 0x32, 0x22, - 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x5f, 0x64, 0x69, 0x65, 0x20, 0x22, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x6e, - 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x20, 0x3c, 0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6d, 0x64, 0x3e, 0x20, 0x3c, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3e, 0x22, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x69, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, - 0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6d, 0x64, 0x3d, 0x22, 0x24, 0x31, 0x22, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x24, 0x32, 0x22, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x24, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x24, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x26, 0x26, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x20, 0x24, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x5f, 0x67, 0x72, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6d, 0x64, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x67, 0x72, 0x65, 0x79, 0x5f, 0x65, 0x6e, 0x64, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x21, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x24, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x64, 0x69, 0x65, 0x20, 0x22, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x24, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, - 0x6f, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x49, 0x44, 0x3d, 0x24, 0x28, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x20, 0x24, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x20, 0x24, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x20, 0x49, 0x44, 0x20, 0x24, 0x7b, 0x49, 0x44, 0x7d, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, - 0x23, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, - 0x6e, 0x27, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x20, 0x28, 0x63, 0x68, 0x6d, 0x6f, 0x64, - 0x20, 0x37, 0x37, 0x37, 0x29, 0x2e, 0x0a, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x66, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x24, 0x31, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x2d, 0x64, 0x20, 0x22, 0x24, 0x66, 0x6f, - 0x6c, 0x64, 0x65, 0x72, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x21, 0x20, 0x6d, - 0x6b, 0x64, 0x69, 0x72, 0x20, 0x2d, 0x70, 0x20, 0x22, 0x24, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, - 0x22, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x5f, 0x64, 0x69, 0x65, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3a, 0x20, 0x24, - 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x68, 0x6d, 0x6f, 0x64, 0x20, 0x37, 0x37, 0x37, 0x20, 0x22, 0x24, 0x66, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, - 0x22, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x3a, - 0x20, 0x24, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, - 0x69, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x72, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, - 0x68, 0x61, 0x73, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x20, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x31, 0x20, 0x6f, 0x6e, 0x20, 0x66, 0x61, 0x69, - 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x0a, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x64, 0x6f, 0x63, - 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x28, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x21, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x20, 0x2d, 0x76, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x26, 0x3e, 0x20, - 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x6e, 0x75, 0x6c, 0x6c, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x44, 0x6f, - 0x63, 0x6b, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, 0x66, 0x20, 0x64, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x21, - 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x26, 0x3e, 0x20, - 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x6e, 0x75, 0x6c, 0x6c, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x44, 0x6f, - 0x63, 0x6b, 0x65, 0x72, 0x20, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x69, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x20, 0x69, 0x66, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x70, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x64, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x21, 0x20, 0x64, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x2d, 0x2d, 0x72, 0x6d, 0x20, 0x68, - 0x65, 0x6c, 0x6c, 0x6f, 0x2d, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x26, 0x3e, 0x20, 0x2f, 0x64, - 0x65, 0x76, 0x2f, 0x6e, 0x75, 0x6c, 0x6c, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x55, 0x73, 0x65, 0x72, - 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x70, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x75, 0x6e, - 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, - 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, 0x7d, - 0x0a, 0x0a, 0x23, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x28, 0x61, 0x6e, 0x79, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x29, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2e, 0x20, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x31, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, - 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x0a, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x21, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x70, - 0x73, 0x20, 0x2d, 0x61, 0x20, 0x2d, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x22, 0x7b, - 0x7b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x7d, 0x7d, 0x22, 0x20, 0x7c, 0x20, 0x67, 0x72, 0x65, - 0x70, 0x20, 0x2d, 0x71, 0x20, 0x22, 0x5e, 0x24, 0x31, 0x24, 0x22, 0x3b, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x31, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x2e, 0x0a, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x20, 0x21, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x70, 0x73, 0x20, 0x2d, - 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x22, 0x7b, 0x7b, 0x2e, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x7d, 0x7d, 0x22, 0x20, 0x7c, 0x20, 0x67, 0x72, 0x65, 0x70, 0x20, 0x2d, 0x71, 0x20, 0x22, - 0x5e, 0x24, 0x31, 0x24, 0x22, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, - 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x49, 0x44, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x0a, 0x5f, 0x67, 0x65, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x28, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x70, 0x73, 0x20, - 0x2d, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x22, 0x7b, 0x7b, 0x2e, 0x49, 0x44, 0x7d, - 0x7d, 0x22, 0x20, 0x2d, 0x2d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x22, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x24, 0x31, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x0a, 0x5f, 0x67, 0x65, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, - 0x20, 0x70, 0x73, 0x20, 0x2d, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x22, 0x7b, 0x7b, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x7d, 0x7d, 0x22, 0x20, 0x2d, 0x2d, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x20, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x24, 0x31, 0x22, 0x0a, 0x7d, 0x0a, - 0x0a, 0x23, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x20, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x24, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x20, 0x24, 0x31, 0x20, 0x26, 0x26, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x20, 0x24, 0x31, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x53, 0x74, 0x6f, 0x70, 0x73, 0x20, 0x61, - 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x2e, 0x0a, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x69, 0x73, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x20, 0x24, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x73, 0x74, 0x6f, - 0x70, 0x20, 0x24, 0x31, 0x0a, 0x7d, 0x20, 0x20, 0x20, 0x0a, 0x0a, 0x23, 0x20, 0x53, 0x74, 0x6f, - 0x70, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x29, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x2e, 0x0a, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x20, 0x24, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x24, 0x31, - 0x20, 0x7c, 0x7c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x6d, 0x20, 0x24, 0x31, 0x0a, 0x7d, - 0x0a, 0x0a, 0x23, 0x20, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, - 0x6f, 0x67, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x2e, 0x0a, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x21, 0x20, 0x5f, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x24, 0x31, 0x3b, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, - 0x20, 0x22, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x24, 0x31, 0x20, 0x64, - 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x22, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, - 0x65, 0x72, 0x20, 0x6c, 0x6f, 0x67, 0x73, 0x20, 0x24, 0x31, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x64, - 0x20, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x74, 0x3b, 0x20, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x20, 0x5f, 0x64, 0x69, 0x65, 0x28, 0x29, 0x20, 0x69, 0x66, 0x20, - 0x61, 0x6e, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2e, - 0x0a, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x73, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x5f, 0x76, 0x61, 0x72, 0x73, 0x3d, 0x28, 0x22, 0x24, 0x40, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x76, 0x61, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x22, 0x24, 0x7b, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x72, 0x73, 0x5b, 0x40, 0x5d, 0x7d, - 0x22, 0x3b, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x5b, 0x20, 0x2d, 0x7a, 0x20, 0x22, 0x24, 0x7b, 0x21, 0x76, 0x61, 0x72, 0x7d, 0x22, 0x20, - 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x5f, 0x64, 0x69, 0x65, 0x20, 0x22, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, - 0x65, 0x64, 0x20, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x24, 0x76, 0x61, 0x72, 0x20, 0x69, 0x73, 0x20, - 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x0a, 0x7d, 0x0a, 0x0a, - 0x23, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, - 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x6f, 0x6f, 0x74, 0x20, 0x44, 0x6f, - 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x28, - 0x66, 0x6f, 0x72, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x29, - 0x2e, 0x0a, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x74, - 0x72, 0x65, 0x65, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x20, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x3d, 0x22, 0x24, 0x31, 0x22, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x24, 0x28, 0x64, 0x69, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x22, 0x24, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x61, 0x62, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x24, 0x28, 0x72, 0x65, 0x61, 0x6c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x22, 0x24, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x69, - 0x6c, 0x64, 0x3d, 0x24, 0x28, 0x62, 0x61, 0x73, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x22, 0x24, - 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x2d, 0x2d, 0x72, 0x6d, 0x20, - 0x2d, 0x76, 0x20, 0x22, 0x24, 0x61, 0x62, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, - 0x3a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x6c, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x72, 0x6d, - 0x20, 0x2d, 0x72, 0x66, 0x20, 0x22, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x24, 0x63, 0x68, 0x69, - 0x6c, 0x64, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x23, 0x20, 0x4c, 0x6f, 0x61, 0x64, 0x20, 0x61, - 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x0a, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x20, 0x22, 0x24, 0x7b, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, - 0x7d, 0x2f, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, - 0x73, 0x68, 0x22 -}; -static const size_t len__common_sh = 5763; -static uint64_t hash__common_sh = 11110864345927016405U; -static const char* rel__common_sh = "_common.sh"; -static const unsigned char data__nuke_other_sh[] = { - 0x23, 0x21, 0x2f, 0x62, 0x69, 0x6e, 0x2f, 0x62, 0x61, 0x73, 0x68, 0x0a, 0x0a, 0x53, 0x43, 0x52, - 0x49, 0x50, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x3d, 0x22, 0x24, 0x28, 0x20, 0x63, 0x64, 0x20, 0x22, - 0x24, 0x28, 0x20, 0x64, 0x69, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x22, 0x24, 0x7b, 0x42, 0x41, - 0x53, 0x48, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5b, 0x30, 0x5d, 0x7d, 0x22, 0x20, 0x29, - 0x22, 0x20, 0x26, 0x26, 0x20, 0x70, 0x77, 0x64, 0x20, 0x29, 0x22, 0x0a, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x20, 0x22, 0x24, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x2f, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, - 0x68, 0x22, 0x0a, 0x0a, 0x0a, 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x3d, 0x22, - 0x24, 0x31, 0x22, 0x0a, 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x41, - 0x54, 0x48, 0x3d, 0x22, 0x24, 0x32, 0x22, 0x0a, 0x0a, 0x0a, 0x23, 0x20, 0x31, 0x2e, 0x20, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, 0x66, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x0a, 0x5b, 0x20, 0x2d, 0x64, 0x20, - 0x22, 0x24, 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, - 0x22, 0x20, 0x5d, 0x20, 0x7c, 0x7c, 0x20, 0x5f, 0x64, 0x69, 0x65, 0x20, 0x22, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x3a, 0x20, 0x24, 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x22, 0x0a, 0x0a, 0x23, 0x20, 0x75, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x69, 0x66, 0x20, 0x5b, - 0x20, 0x2d, 0x66, 0x20, 0x22, 0x24, 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, - 0x50, 0x41, 0x54, 0x48, 0x2f, 0x75, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x2e, 0x73, - 0x68, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x2f, 0x75, - 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x2e, 0x73, 0x68, 0x0a, 0x66, 0x69, 0x0a, 0x0a, - 0x23, 0x20, 0x6e, 0x75, 0x6b, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x0a, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x2d, 0x66, 0x20, 0x22, 0x24, 0x41, 0x5f, 0x53, - 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x2f, 0x6e, 0x75, 0x6b, 0x65, - 0x2e, 0x73, 0x68, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, - 0x2f, 0x6e, 0x75, 0x6b, 0x65, 0x2e, 0x73, 0x68, 0x0a, 0x66, 0x69, 0x0a, 0x0a, 0x23, 0x20, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x0a, 0x72, 0x6d, 0x20, 0x2d, - 0x72, 0x66, 0x20, 0x22, 0x24, 0x41, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, - 0x41, 0x54, 0x48, 0x22, 0x0a -}; -static const size_t len__nuke_other_sh = 533; -static uint64_t hash__nuke_other_sh = 14046958915324057884U; -static const char* rel__nuke_other_sh = "_nuke_other.sh"; -static const unsigned char data__allservicesstatus_sh[] = { - 0x23, 0x21, 0x2f, 0x62, 0x69, 0x6e, 0x2f, 0x62, 0x61, 0x73, 0x68, 0x0a, 0x0a, 0x23, 0x20, 0x54, - 0x68, 0x69, 0x73, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x20, 0x41, 0x4c, 0x4c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x6f, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x2e, 0x0a, 0x0a, 0x23, 0x20, 0x52, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, - 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x45, 0x4e, 0x56, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x3a, 0x0a, 0x23, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, - 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x3d, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x79, 0x7c, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x7c, 0x75, 0x6e, - 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x0a, 0x23, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, - 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x3d, 0x70, 0x6f, 0x72, 0x74, 0x31, - 0x2c, 0x70, 0x6f, 0x72, 0x74, 0x32, 0x2c, 0x70, 0x6f, 0x72, 0x74, 0x33, 0x0a, 0x0a, 0x23, 0x20, - 0x47, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x0a, 0x53, - 0x43, 0x52, 0x49, 0x50, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x3d, 0x22, 0x24, 0x28, 0x64, 0x69, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x22, 0x24, 0x30, 0x22, 0x29, 0x22, 0x0a, 0x0a, 0x23, 0x20, 0x2f, - 0x2f, 0x20, 0x44, 0x52, 0x4f, 0x50, 0x53, 0x48, 0x45, 0x4c, 0x4c, 0x5f, 0x44, 0x49, 0x52, 0x0a, - 0x23, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x73, 0x0a, 0x23, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x0a, 0x23, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x0a, 0x23, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x20, 0x3c, 0x2d, - 0x2d, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, - 0x20, 0x61, 0x73, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x0a, 0x23, 0x20, 0x2f, 0x2f, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, - 0x2d, 0x2d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x65, 0x6e, 0x76, 0x0a, 0x23, - 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x2d, - 0x2d, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x0a, 0x23, 0x20, 0x2f, 0x2f, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x2d, - 0x2d, 0x20, 0x28, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x29, - 0x0a, 0x23, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x0a, 0x23, - 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x5f, 0x61, 0x6c, 0x6c, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x73, 0x68, 0x0a, - 0x23, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x0a, 0x23, 0x20, - 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x65, 0x6e, 0x76, 0x0a, 0x23, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7c, 0x2d, 0x2d, 0x20, - 0x28, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x26, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x29, - 0x0a, 0x0a, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, - 0x3d, 0x22, 0x22, 0x0a, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x54, - 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x3d, 0x30, 0x0a, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x6f, - 0x74, 0x65, 0x6e, 0x76, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x24, 0x31, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x2d, 0x66, 0x20, 0x22, 0x24, 0x7b, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x20, 0x22, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x28, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x24, 0x31, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3d, 0x24, - 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x61, 0x70, 0x74, - 0x75, 0x72, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x3d, 0x24, 0x7b, 0x33, 0x3a, 0x2d, - 0x66, 0x61, 0x6c, 0x73, 0x65, 0x7d, 0x20, 0x20, 0x23, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x23, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, - 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x21, 0x20, 0x2d, 0x66, 0x20, - 0x22, 0x24, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x7d, - 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x24, 0x7b, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x7d, 0x2e, 0x73, 0x68, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x72, - 0x75, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x69, - 0x6e, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, - 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x3d, 0x24, - 0x28, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x74, 0x20, 0x2d, 0x61, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x6f, - 0x74, 0x65, 0x6e, 0x76, 0x20, 0x22, 0x24, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x5f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, 0x65, 0x6e, 0x76, 0x22, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x64, 0x6f, 0x74, 0x65, 0x6e, 0x76, - 0x20, 0x22, 0x24, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x65, 0x6e, 0x76, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, - 0x74, 0x20, 0x2b, 0x61, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x5f, 0x50, 0x41, 0x54, 0x48, 0x3d, 0x22, 0x24, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x20, - 0x69, 0x73, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x3d, 0x22, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x22, 0x24, 0x63, 0x61, 0x70, 0x74, - 0x75, 0x72, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x20, 0x3d, 0x20, 0x22, 0x74, - 0x72, 0x75, 0x65, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x43, 0x61, 0x70, 0x74, 0x75, - 0x72, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x62, 0x61, 0x73, 0x68, 0x20, 0x22, 0x24, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, - 0x24, 0x7b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x7d, 0x2e, 0x73, 0x68, 0x22, 0x20, 0x32, - 0x3e, 0x26, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x52, - 0x75, 0x6e, 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6f, 0x64, 0x65, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x73, - 0x68, 0x20, 0x22, 0x24, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x24, 0x7b, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x7d, 0x2e, 0x73, 0x68, 0x22, 0x20, 0x3e, 0x20, 0x2f, 0x64, 0x65, - 0x76, 0x2f, 0x6e, 0x75, 0x6c, 0x6c, 0x20, 0x32, 0x3e, 0x26, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x3d, 0x24, 0x3f, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x24, 0x31, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x3d, 0x24, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x21, 0x20, 0x2d, - 0x66, 0x20, 0x22, 0x24, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x24, 0x7b, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x7d, 0x2e, 0x73, 0x68, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, - 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, 0x7d, 0x0a, 0x0a, 0x23, 0x20, 0x47, 0x65, 0x74, - 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x6f, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x0a, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x53, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x3d, 0x24, 0x28, 0x72, 0x65, 0x61, 0x6c, - 0x70, 0x61, 0x74, 0x68, 0x20, 0x22, 0x24, 0x7b, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x5f, 0x44, - 0x49, 0x52, 0x7d, 0x2f, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x22, 0x29, 0x0a, - 0x0a, 0x23, 0x20, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x0a, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, - 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x3d, 0x24, 0x28, 0x6c, 0x73, 0x20, 0x22, 0x24, 0x7b, 0x53, - 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x53, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x7d, 0x22, 0x29, 0x0a, - 0x0a, 0x23, 0x20, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x0a, 0x66, 0x6f, 0x72, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x41, - 0x4d, 0x45, 0x20, 0x69, 0x6e, 0x20, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, - 0x4e, 0x41, 0x4d, 0x45, 0x53, 0x7d, 0x3b, 0x20, 0x64, 0x6f, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x3d, 0x24, 0x28, 0x72, - 0x65, 0x61, 0x6c, 0x70, 0x61, 0x74, 0x68, 0x20, 0x22, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, - 0x43, 0x45, 0x53, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x7d, 0x2f, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x7d, 0x22, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x23, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x21, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x22, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x7d, 0x22, 0x20, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x3d, - 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, - 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x75, 0x6e, 0x5f, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x7d, 0x22, 0x20, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x20, 0x22, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x22, 0x24, 0x7b, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, - 0x54, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x7d, 0x22, 0x20, 0x2d, 0x65, - 0x71, 0x20, 0x30, 0x20, 0x5d, 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, - 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x3d, 0x22, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x22, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x3d, 0x22, 0x75, 0x6e, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x79, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x23, 0x20, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x21, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x20, 0x22, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, - 0x48, 0x7d, 0x22, 0x20, 0x22, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0x3b, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x3d, 0x22, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x75, 0x6e, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x7d, 0x22, 0x20, 0x22, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x22, 0x20, 0x22, 0x74, 0x72, 0x75, 0x65, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x3d, 0x22, - 0x24, 0x7b, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, - 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x24, 0x7b, 0x53, - 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x7d, 0x5f, 0x48, 0x45, 0x41, - 0x4c, 0x54, 0x48, 0x3d, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x48, 0x45, - 0x41, 0x4c, 0x54, 0x48, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, - 0x22, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x7d, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x3d, 0x24, 0x7b, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x7d, 0x22, 0x0a, 0x64, 0x6f, 0x6e, 0x65, 0x0a -}; -static const size_t len__allservicesstatus_sh = 3230; -static uint64_t hash__allservicesstatus_sh = 1995642360604494489U; -static const char* rel__allservicesstatus_sh = "_allservicesstatus.sh"; -static const unsigned char data__autocommands_sh[] = { - 0x23, 0x21, 0x2f, 0x62, 0x69, 0x6e, 0x2f, 0x62, 0x61, 0x73, 0x68, 0x0a, 0x0a, 0x23, 0x20, 0x54, - 0x68, 0x69, 0x73, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x63, - 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x6f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x0a, 0x0a, 0x4d, 0x59, 0x49, 0x44, 0x3d, - 0x24, 0x28, 0x69, 0x64, 0x20, 0x2d, 0x75, 0x29, 0x0a, 0x4d, 0x59, 0x47, 0x52, 0x50, 0x3d, 0x24, - 0x28, 0x69, 0x64, 0x20, 0x2d, 0x67, 0x29, 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x72, 0x75, 0x6e, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x28, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3d, 0x22, 0x24, 0x31, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x22, 0x24, 0x32, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x24, - 0x33, 0x22, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x22, 0x24, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x20, 0x69, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x24, 0x7b, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x24, 0x7b, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x6e, 0x75, 0x6b, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x4e, 0x75, 0x6b, 0x69, - 0x6e, 0x67, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x20, 0x72, 0x6d, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x42, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x75, - 0x70, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x20, - 0x2d, 0x2d, 0x72, 0x6d, 0x20, 0x2d, 0x76, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x2d, - 0x76, 0x20, 0x24, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, - 0x72, 0x7d, 0x3a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x64, 0x65, 0x62, 0x69, 0x61, - 0x6e, 0x20, 0x62, 0x61, 0x73, 0x68, 0x20, 0x2d, 0x63, 0x20, 0x22, 0x74, 0x61, 0x72, 0x20, 0x2d, - 0x63, 0x7a, 0x76, 0x66, 0x20, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x2e, 0x74, 0x67, 0x7a, 0x20, 0x2d, 0x43, 0x20, 0x2f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x20, 0x2e, 0x20, 0x26, 0x26, 0x20, 0x63, 0x68, 0x6f, 0x77, 0x6e, 0x20, 0x2d, 0x52, - 0x20, 0x24, 0x4d, 0x59, 0x49, 0x44, 0x3a, 0x24, 0x4d, 0x59, 0x47, 0x52, 0x50, 0x20, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x69, - 0x6e, 0x67, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x20, 0x72, 0x6d, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x2d, 0x2d, 0x72, - 0x6d, 0x20, 0x2d, 0x76, 0x20, 0x24, 0x7b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x3a, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x2d, 0x76, 0x20, 0x24, - 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x3a, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x62, - 0x61, 0x73, 0x68, 0x20, 0x2d, 0x63, 0x20, 0x22, 0x74, 0x61, 0x72, 0x20, 0x2d, 0x78, 0x7a, 0x76, - 0x66, 0x20, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x2e, 0x74, 0x67, 0x7a, 0x20, 0x2d, 0x43, 0x20, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, - 0x2d, 0x2d, 0x73, 0x74, 0x72, 0x69, 0x70, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x73, 0x3d, 0x31, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x73, 0x61, 0x63, 0x0a, 0x7d, 0x20, - 0x20, 0x20, 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x72, 0x75, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3d, 0x22, - 0x24, 0x31, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x61, - 0x74, 0x68, 0x3d, 0x22, 0x24, 0x32, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3d, - 0x22, 0x24, 0x33, 0x22, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x22, - 0x24, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x20, 0x69, 0x6e, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x24, 0x7b, 0x70, - 0x61, 0x74, 0x68, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x6d, 0x6b, 0x64, 0x69, 0x72, 0x20, 0x2d, 0x70, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, - 0x68, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x75, 0x6b, 0x65, 0x29, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, - 0x20, 0x22, 0x4e, 0x75, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x24, 0x7b, - 0x70, 0x61, 0x74, 0x68, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x24, 0x28, 0x64, 0x69, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x24, - 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, - 0x68, 0x69, 0x6c, 0x64, 0x3d, 0x24, 0x28, 0x62, 0x61, 0x73, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, - 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x2d, 0x64, 0x20, 0x22, 0x24, 0x7b, - 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x7d, 0x2f, 0x24, 0x7b, 0x70, - 0x61, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x7d, 0x22, 0x20, 0x5d, 0x3b, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x2d, - 0x2d, 0x72, 0x6d, 0x20, 0x2d, 0x76, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x7d, 0x3a, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x64, 0x65, - 0x62, 0x69, 0x61, 0x6e, 0x20, 0x62, 0x61, 0x73, 0x68, 0x20, 0x2d, 0x63, 0x20, 0x22, 0x72, 0x6d, - 0x20, 0x2d, 0x72, 0x66, 0x20, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x2f, 0x24, 0x7b, 0x70, - 0x61, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x7d, 0x22, 0x20, 0x7c, 0x7c, 0x20, 0x65, - 0x63, 0x68, 0x6f, 0x20, 0x22, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6e, - 0x75, 0x6b, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, - 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, - 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x50, 0x61, 0x74, 0x68, 0x20, 0x24, 0x7b, - 0x70, 0x61, 0x74, 0x68, 0x7d, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, - 0x78, 0x69, 0x73, 0x74, 0x20, 0x2d, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, - 0x6f, 0x20, 0x6e, 0x75, 0x6b, 0x65, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x42, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, - 0x75, 0x70, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x22, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x5b, 0x20, 0x2d, 0x64, 0x20, 0x22, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x22, 0x20, 0x5d, - 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, - 0x6e, 0x20, 0x2d, 0x2d, 0x72, 0x6d, 0x20, 0x2d, 0x76, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, - 0x7d, 0x3a, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x20, 0x2d, 0x76, 0x20, 0x24, 0x7b, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x3a, 0x2f, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x20, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x62, 0x61, 0x73, 0x68, 0x20, - 0x2d, 0x63, 0x20, 0x22, 0x74, 0x61, 0x72, 0x20, 0x2d, 0x63, 0x7a, 0x76, 0x66, 0x20, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x74, 0x67, 0x7a, - 0x20, 0x2d, 0x43, 0x20, 0x2f, 0x70, 0x61, 0x74, 0x68, 0x20, 0x2e, 0x20, 0x26, 0x26, 0x20, 0x63, - 0x68, 0x6f, 0x77, 0x6e, 0x20, 0x2d, 0x52, 0x20, 0x24, 0x4d, 0x59, 0x49, 0x44, 0x3a, 0x24, 0x4d, - 0x59, 0x47, 0x52, 0x50, 0x20, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, - 0x63, 0x68, 0x6f, 0x20, 0x22, 0x50, 0x61, 0x74, 0x68, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, - 0x7d, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x20, 0x2d, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x22, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, 0x72, 0x20, 0x2d, - 0x78, 0x7a, 0x76, 0x66, 0x20, 0x24, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, - 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x74, 0x67, 0x7a, - 0x20, 0x2d, 0x43, 0x20, 0x24, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x20, 0x2d, 0x2d, 0x73, 0x74, - 0x72, 0x69, 0x70, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x3d, 0x31, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x65, 0x73, 0x61, 0x63, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x74, - 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x72, 0x75, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x65, - 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3d, 0x22, 0x24, 0x31, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x22, - 0x24, 0x32, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3d, 0x22, 0x24, 0x33, 0x22, - 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x22, 0x24, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x20, 0x69, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x6e, 0x75, 0x6b, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x72, 0x6d, 0x20, 0x2d, 0x66, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, - 0x74, 0x68, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, - 0x63, 0x68, 0x6f, 0x20, 0x22, 0x42, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x70, 0x20, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x7d, - 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x24, 0x28, 0x64, 0x69, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, - 0x70, 0x61, 0x74, 0x68, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x24, 0x28, 0x62, 0x61, 0x73, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x24, 0x7b, - 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x20, 0x2d, 0x66, 0x20, 0x22, - 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x7d, 0x2f, 0x24, - 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x22, 0x20, 0x5d, 0x3b, 0x20, - 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6e, 0x20, - 0x2d, 0x2d, 0x72, 0x6d, 0x20, 0x2d, 0x76, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x7d, 0x3a, 0x2f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x2d, - 0x76, 0x20, 0x24, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x6f, 0x6c, 0x64, 0x65, - 0x72, 0x7d, 0x3a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x64, 0x65, 0x62, 0x69, 0x61, - 0x6e, 0x20, 0x62, 0x61, 0x73, 0x68, 0x20, 0x2d, 0x63, 0x20, 0x22, 0x63, 0x70, 0x20, 0x2f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x2f, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x20, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x24, 0x7b, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x20, 0x26, 0x26, 0x20, 0x63, 0x68, 0x6f, 0x77, 0x6e, - 0x20, 0x2d, 0x52, 0x20, 0x24, 0x4d, 0x59, 0x49, 0x44, 0x3a, 0x24, 0x4d, 0x59, 0x47, 0x52, 0x50, - 0x20, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, - 0x22, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, - 0x7d, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x20, 0x2d, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, - 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x24, - 0x28, 0x62, 0x61, 0x73, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, - 0x70, 0x61, 0x74, 0x68, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x70, 0x20, 0x24, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x66, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x20, 0x24, 0x7b, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x65, 0x73, 0x61, 0x63, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x70, 0x61, 0x72, 0x73, 0x65, 0x28, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x20, - 0x74, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x74, 0x77, - 0x6f, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, - 0x79, 0x20, 0x70, 0x61, 0x74, 0x68, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x61, 0x6c, 0x6c, - 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x23, 0x20, 0x6b, 0x65, 0x79, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x23, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x63, 0x61, - 0x6e, 0x20, 0x62, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x2c, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x65, - 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x69, 0x73, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6f, 0x72, 0x20, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, - 0x20, 0x77, 0x65, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6f, 0x76, 0x65, 0x72, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x61, - 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x77, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x3a, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x20, 0x20, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x72, 0x75, 0x6e, - 0x20, 0x3c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3e, 0x20, 0x3c, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x66, 0x69, 0x6c, 0x65, 0x3e, 0x20, 0x3c, 0x6b, 0x65, 0x79, 0x3e, 0x20, 0x3c, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3d, 0x22, 0x24, 0x31, 0x22, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x70, - 0x61, 0x74, 0x68, 0x3d, 0x22, 0x24, 0x31, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x68, 0x69, - 0x66, 0x74, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x61, 0x75, - 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x70, 0x61, 0x72, 0x73, 0x65, 0x3a, 0x20, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3d, 0x24, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x3d, 0x24, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x70, - 0x61, 0x74, 0x68, 0x22, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x45, 0x78, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x66, - 0x69, 0x6c, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x20, 0x70, 0x61, 0x74, - 0x68, 0x20, 0x28, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x61, 0x72, 0x67, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x20, 0x61, 0x72, 0x67, 0x73, 0x3d, 0x28, 0x22, 0x24, 0x40, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x61, 0x72, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x3d, 0x24, 0x7b, 0x23, 0x61, 0x72, 0x67, 0x73, 0x5b, 0x40, 0x5d, 0x7d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x6b, 0x65, 0x79, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x70, 0x61, - 0x69, 0x72, 0x73, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x28, 0x69, 0x3d, - 0x30, 0x3b, 0x20, 0x69, 0x3c, 0x24, 0x61, 0x72, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3b, - 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x29, 0x3b, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x69, 0x72, 0x3d, 0x22, 0x24, - 0x7b, 0x61, 0x72, 0x67, 0x73, 0x5b, 0x24, 0x69, 0x5d, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x53, - 0x6b, 0x69, 0x70, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x6b, 0x65, - 0x79, 0x3d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x5b, 0x5b, 0x20, 0x22, 0x24, 0x70, - 0x61, 0x69, 0x72, 0x22, 0x20, 0x21, 0x3d, 0x20, 0x2a, 0x22, 0x3d, 0x22, 0x2a, 0x20, 0x5d, 0x5d, - 0x3b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6b, 0x65, - 0x79, 0x3d, 0x22, 0x24, 0x7b, 0x70, 0x61, 0x69, 0x72, 0x25, 0x25, 0x3d, 0x2a, 0x7d, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x24, 0x7b, 0x70, 0x61, 0x69, 0x72, 0x23, 0x2a, 0x3d, 0x7d, 0x22, - 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, 0x20, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, - 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x6b, 0x65, 0x79, 0x2f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x20, 0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x3d, 0x24, 0x28, 0x65, 0x63, - 0x68, 0x6f, 0x20, 0x22, 0x24, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x5f, 0x24, 0x7b, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x7d, 0x22, 0x20, 0x7c, 0x20, 0x74, 0x72, 0x20, 0x2d, 0x63, 0x64, 0x20, 0x27, 0x5b, - 0x3a, 0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x3a, 0x5d, 0x5f, 0x2d, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x22, 0x24, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, - 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x7d, 0x2f, 0x24, 0x7b, 0x62, 0x66, 0x6f, - 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6d, - 0x6b, 0x64, 0x69, 0x72, 0x20, 0x2d, 0x70, 0x20, 0x24, 0x7b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x70, 0x61, 0x74, 0x68, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, - 0x20, 0x4b, 0x65, 0x79, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6f, 0x6e, 0x65, - 0x20, 0x6f, 0x66, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x2c, 0x20, 0x70, 0x61, 0x74, 0x68, - 0x20, 0x6f, 0x72, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x22, 0x24, 0x6b, 0x65, 0x79, 0x22, 0x20, 0x69, 0x6e, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x72, 0x75, 0x6e, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x22, 0x24, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x20, 0x22, 0x24, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x22, - 0x24, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x70, 0x61, 0x74, 0x68, 0x22, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x74, 0x68, - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x72, 0x75, - 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x20, 0x22, 0x24, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x22, 0x20, 0x22, 0x24, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x22, 0x24, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x70, 0x61, 0x74, 0x68, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x29, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x61, - 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x72, 0x75, 0x6e, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x20, 0x22, 0x24, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x20, 0x22, 0x24, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x22, 0x24, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x70, - 0x61, 0x74, 0x68, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x2a, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x64, 0x69, 0x65, 0x20, 0x22, 0x55, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x24, 0x6b, 0x65, 0x79, 0x20, 0x70, 0x61, - 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x24, 0x7b, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x7d, 0x2e, 0x20, 0x57, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x2c, 0x20, - 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x73, 0x61, 0x63, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x61, 0x75, 0x74, - 0x6f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x70, 0x61, 0x72, 0x73, - 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x20, 0x22, 0x24, - 0x40, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x75, 0x6b, 0x65, 0x28, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x6e, 0x75, 0x6b, 0x65, 0x20, 0x6e, - 0x6f, 0x6e, 0x65, 0x20, 0x22, 0x24, 0x40, 0x22, 0x0a, 0x7d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x65, - 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x73, 0x20, 0x22, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, - 0x46, 0x49, 0x4c, 0x45, 0x22, 0x20, 0x22, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x44, 0x49, 0x52, 0x22, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x45, 0x4d, 0x50, - 0x5f, 0x50, 0x41, 0x54, 0x48, 0x3d, 0x22, 0x24, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x44, 0x49, 0x52, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, - 0x6b, 0x64, 0x69, 0x72, 0x20, 0x2d, 0x70, 0x20, 0x22, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x65, 0x63, 0x68, 0x6f, 0x20, 0x22, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x5b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5d, - 0x20, 0x5b, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x50, - 0x41, 0x54, 0x48, 0x5d, 0x20, 0x5b, 0x24, 0x40, 0x5d, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, - 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x22, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x22, 0x20, 0x22, 0x24, 0x40, 0x22, - 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, 0x72, 0x20, 0x7a, 0x63, 0x76, 0x66, 0x20, 0x22, - 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x22, 0x20, 0x2d, 0x43, - 0x20, 0x22, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x50, - 0x41, 0x54, 0x48, 0x22, 0x20, 0x2e, 0x0a, 0x7d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x72, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x6e, - 0x76, 0x5f, 0x76, 0x61, 0x72, 0x73, 0x20, 0x22, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x46, - 0x49, 0x4c, 0x45, 0x22, 0x20, 0x22, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x44, 0x49, 0x52, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, - 0x50, 0x41, 0x54, 0x48, 0x3d, 0x22, 0x24, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x44, 0x49, 0x52, 0x2f, - 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x63, - 0x68, 0x6f, 0x20, 0x22, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x5b, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5d, 0x20, - 0x5b, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x50, 0x41, - 0x54, 0x48, 0x5d, 0x20, 0x5b, 0x24, 0x40, 0x5d, 0x22, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6d, - 0x6b, 0x64, 0x69, 0x72, 0x20, 0x2d, 0x70, 0x20, 0x22, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x74, 0x61, 0x72, 0x20, 0x7a, 0x78, 0x76, 0x66, 0x20, 0x22, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, - 0x50, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x22, 0x20, 0x2d, 0x43, 0x20, 0x22, 0x24, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x22, 0x20, 0x2d, - 0x2d, 0x73, 0x74, 0x72, 0x69, 0x70, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x73, 0x3d, 0x31, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x72, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x20, 0x22, 0x24, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x54, 0x45, 0x4d, 0x50, - 0x5f, 0x50, 0x41, 0x54, 0x48, 0x22, 0x20, 0x22, 0x24, 0x40, 0x22, 0x0a, 0x7d, 0x0a -}; -static const size_t len__autocommands_sh = 5854; -static uint64_t hash__autocommands_sh = 16592349636416977993U; -static const char* rel__autocommands_sh = "_autocommands.sh"; + +// Base64 decoding function - no dependencies +static void base64_decode(const char* encoded_data, size_t encoded_len, unsigned char* output, size_t* output_len) { + const char* base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + size_t out_pos = 0; + int val = 0, valb = -8; + + for (size_t i = 0; i < encoded_len; i++) { + char c = encoded_data[i]; + if (c == '=') break; + + // Find position in base64_chars + const char* pos = strchr(base64_chars, c); + if (pos == nullptr) continue; // Skip invalid characters + + val = (val << 6) + static_cast(pos - base64_chars); + valb += 6; + if (valb >= 0) { + output[out_pos++] = static_cast((val >> valb) & 0xFF); + valb -= 8; + } + } + + *output_len = out_pos; +} + +// Utility function to recreate a file with proper permissions +static bool _recreate_file_(const std::filesystem::path& outpath, uint64_t file_hash, std::filesystem::perms file_perms, const unsigned char* filedata, size_t filedata_len) { + namespace fs = std::filesystem; + bool needs_write = false; + + // Check if file exists and has correct hash + if (fs::exists(outpath)) { + // Check content hash + std::ifstream in(outpath, std::ios::binary); + std::ostringstream oss; + oss << in.rdbuf(); + std::string data = oss.str(); + uint64_t existing_hash = fnv1a_64(data.data(), data.size()); + needs_write = existing_hash != file_hash; + } else { + needs_write = true; // File doesn't exist, need to create it + } + + bool needs_permission_update = true; + if (!needs_write) { // we always update permissions if the file is written or changed. Othewise we check. + fs::perms current_perms = fs::status(outpath).permissions(); + needs_permission_update = current_perms != file_perms; + } + + if (needs_write) { + fs::create_directories(outpath.parent_path()); + std::ofstream out(outpath, std::ios::binary); + out.write(reinterpret_cast(filedata), filedata_len); + out.close(); + // Set the file permissions + fs::permissions(outpath, file_perms); + + if (!fs::exists(outpath)) { + std::cout << "[dehydrate] " << outpath.filename() << ": created\n"; + } else { + std::cout << "[dehydrate] " << outpath.filename() << ": updated (hash changed)\n"; + } + return true; + } + + if (needs_permission_update) { + // Update only permissions + fs::permissions(outpath, file_perms); + std::cout << "[dehydrate] " << outpath.filename() << ": updated (permissions changed)\n"; + return true; + } + + return false; +} bool recreate_tree(std::string destination_folder) { namespace fs = std::filesystem; bool any_written = false; { - fs::path outpath = fs::path(destination_folder) / rel__common_sh; - fs::create_directories(outpath.parent_path()); - uint64_t existing_hash; - if (fs::exists(outpath)) { - std::ifstream in(outpath, std::ios::binary); - std::ostringstream oss; oss << in.rdbuf(); - std::string data = oss.str(); - existing_hash = fnv1a_64(data.data(), data.size()); - } - bool needs_write = !fs::exists(outpath) || existing_hash != hash__common_sh; - if (needs_write) { - std::ofstream out(outpath, std::ios::binary); - out.write(reinterpret_cast(data__common_sh), len__common_sh); - } + // File: _common.sh + fs::path outpath = fs::path(destination_folder) / "_common.sh"; + static const char filedata_base64[] = "IyBDT01NT04gRlVOQ1RJT05TCiMgSkRFCiMgMjAyNS0wNS0wMwoKIyBUaGlzIGZpbGUgaXMgYXZh"\ + "aWxhYmxlIFRPICoqKkFMTCoqKiB0ZW1wbGF0ZXMsIGFzICR7QUdFTlRfUEFUSH0vX2NvbW1vbi5z"\ + "aAoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoj"\ + "IHN1bW1hcnkgb2YgZnVuY3Rpb25zOgojICAgX2RpZSAibWVzc2FnZSIgICAgICAgICAgICAgICAg"\ + "ICAgICAgICAgOiBQcmludHMgYW4gZXJyb3IgbWVzc2FnZSBpbiByZWQgYW5kIGV4aXRzIHdpdGgg"\ + "c3RhdHVzIGNvZGUgMS4KIyAgIF9ncmV5X3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg"\ + "IDogU3dpdGNoZXMgdGVybWluYWwgb3V0cHV0IGNvbG9yIHRvIGdyZXkuCiMgICBfZ3JleV9lbmQg"\ + "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJlc2V0cyB0ZXJtaW5hbCBvdXRwdXQgY29s"\ + "b3IgZnJvbSBncmV5LgojICAgX2NyZWF0ZV9hbmRfc3RhcnRfY29udGFpbmVyICI8cnVuX2NtZD4i"\ + "IDxjb250YWluZXJfbmFtZT4gOiBDcmVhdGVzL3N0YXJ0cyBhIGNvbnRhaW5lciwgdmVyaWZ5aW5n"\ + "IGl0IHJ1bnMuCiMgICBfY3JlYXRlX2ZvbGRlciA8Zm9sZGVyX3BhdGg+ICAgICAgICAgICA6IENy"\ + "ZWF0ZXMgYSBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCAoY2htb2QgNzc3KS4KIyAgIF9j"\ + "aGVja19kb2NrZXJfaW5zdGFsbGVkICAgICAgICAgICAgICAgOiBDaGVja3MgaWYgRG9ja2VyIGlz"\ + "IGluc3RhbGxlZCwgcnVubmluZywgYW5kIHVzZXIgaGFzIHBlcm1pc3Npb24uIFJldHVybnMgMSBv"\ + "biBmYWlsdXJlLgojICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgPGNvbnRhaW5lcl9uYW1lPiA6IENo"\ + "ZWNrcyBpZiBhIGNvbnRhaW5lciAoYW55IHN0YXRlKSBleGlzdHMuIFJldHVybnMgMSBpZiBub3Qg"\ + "Zm91bmQuCiMgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgPGNvbnRhaW5lcl9uYW1lPjogQ2hlY2tz"\ + "IGlmIGEgY29udGFpbmVyIGlzIGN1cnJlbnRseSBydW5uaW5nLiBSZXR1cm5zIDEgaWYgbm90IHJ1"\ + "bm5pbmcuCiMgICBfZ2V0X2NvbnRhaW5lcl9pZCA8Y29udGFpbmVyX25hbWU+ICAgIDogUHJpbnRz"\ + "IHRoZSBJRCBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgojICAgX2dldF9jb250YWluZXJfc3RhdHVz"\ + "IDxjb250YWluZXJfbmFtZT46IFByaW50cyB0aGUgc3RhdHVzIHN0cmluZyBvZiB0aGUgbmFtZWQg"\ + "Y29udGFpbmVyLgojICAgX3N0YXJ0X2NvbnRhaW5lciA8Y29udGFpbmVyX25hbWU+ICAgICA6IFN0"\ + "YXJ0cyBhbiBleGlzdGluZywgc3RvcHBlZCBjb250YWluZXIuCiMgICBfc3RvcF9jb250YWluZXIg"\ + "PGNvbnRhaW5lcl9uYW1lPiAgICAgIDogU3RvcHMgYSBydW5uaW5nIGNvbnRhaW5lci4KIyAgIF9y"\ + "ZW1vdmVfY29udGFpbmVyIDxjb250YWluZXJfbmFtZT4gICAgOiBTdG9wcyAoaWYgbmVlZGVkKSBh"\ + "bmQgcmVtb3ZlcyBhIGNvbnRhaW5lci4KIyAgIF9nZXRfY29udGFpbmVyX2xvZ3MgPGNvbnRhaW5l"\ + "cl9uYW1lPiAgOiBQcmludHMgdGhlIGxvZ3MgZm9yIGEgY29udGFpbmVyLgojICAgX2NoZWNrX3Jl"\ + "cXVpcmVkX2Vudl92YXJzICJWQVIxIiAuLi4gICAgOiBDaGVja3MgaWYgbGlzdGVkIGVudmlyb25t"\ + "ZW50IHZhcmlhYmxlcyBhcmUgc2V0OyBjYWxscyBfZGllKCkgaWYgYW55IGFyZSBtaXNzaW5nLgoj"\ + "ICAgX3Jvb3RfcmVtb3ZlX3RyZWUgPHBhdGg+ICAgICAgICAgICAgICA6IFJlbW92ZXMgYSBwYXRo"\ + "IHVzaW5nIGEgcm9vdCBEb2NrZXIgY29udGFpbmVyIChmb3IgcGVybWlzc2lvbnMpLgoKIyAtLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIFByaW50cyBh"\ + "biBlcnJvciBtZXNzYWdlIGluIHJlZCBhbmQgZXhpdHMgd2l0aCBzdGF0dXMgY29kZSAxLgpfZGll"\ + "KCkgewogICAgZWNobyAtZSAiXDAzM1s5MW1FcnJvcjogJDFcMDMzWzBtIgogICAgZXhpdCAxCn0K"\ + "CiMgU3dpdGNoZXMgdGVybWluYWwgb3V0cHV0IGNvbG9yIHRvIGdyZXkuCl9ncmV5X3N0YXJ0KCkg"\ + "ewogICAgZWNobyAtZSAtbiAiXDAzM1s5MG0iCn0KCiMgUmVzZXRzIHRlcm1pbmFsIG91dHB1dCBj"\ + "b2xvciBmcm9tIGdyZXkuCl9ncmV5X2VuZCgpIHsKICAgIGVjaG8gLWUgLW4gIlwwMzNbMG0iCn0K"\ + "CiMgQ3JlYXRlcy9zdGFydHMgYSBjb250YWluZXIsIHZlcmlmeWluZyBpdCBydW5zLgpfY3JlYXRl"\ + "X2FuZF9zdGFydF9jb250YWluZXIoKSB7CiAgICBpZiBbIC16ICIkMSIgXSB8fCBbIC16ICIkMiIg"\ + "XTsgdGhlbgogICAgICAgIF9kaWUgIlRlbXBsYXRlIGVycm9yOiBjcmVhdGVfYW5kX3N0YXJ0X2Nv"\ + "bnRhaW5lciA8cnVuX2NtZD4gPGNvbnRhaW5lcl9uYW1lPiIKICAgIGZpCgogICAgbG9jYWwgcnVu"\ + "X2NtZD0iJDEiCiAgICBsb2NhbCBjb250YWluZXJfbmFtZT0iJDIiCgogICAgaWYgX2lzX2NvbnRh"\ + "aW5lcl9leGlzdHMgJGNvbnRhaW5lcl9uYW1lOyB0aGVuCiAgICAgICAgX2lzX2NvbnRhaW5lcl9y"\ + "dW5uaW5nICRjb250YWluZXJfbmFtZSAmJiByZXR1cm4gMAogICAgICAgIF9zdGFydF9jb250YWlu"\ + "ZXIgJGNvbnRhaW5lcl9uYW1lCiAgICBlbHNlCiAgICAgICAgX2dyZXlfc3RhcnQKICAgICAgICAk"\ + "cnVuX2NtZAogICAgICAgIF9ncmV5X2VuZAogICAgZmkKCiAgICBpZiAhIF9pc19jb250YWluZXJf"\ + "cnVubmluZyAkY29udGFpbmVyX25hbWU7IHRoZW4KICAgICAgICBfZGllICJDb250YWluZXIgJHtj"\ + "b250YWluZXJfbmFtZX0gZmFpbGVkIHRvIHN0YXJ0IgogICAgZmkKCiAgICBJRD0kKF9nZXRfY29u"\ + "dGFpbmVyX2lkICRjb250YWluZXJfbmFtZSkKICAgIGVjaG8gIkNvbnRhaW5lciAke2NvbnRhaW5l"\ + "cl9uYW1lfSBpcyBydW5uaW5nIHdpdGggSUQgJHtJRH0iCn0KCiMgQ3JlYXRlcyBhIGRpcmVjdG9y"\ + "eSBpZiBpdCBkb2Vzbid0IGV4aXN0IChjaG1vZCA3NzcpLgpfY3JlYXRlX2ZvbGRlcigpIHsKICAg"\ + "IGxvY2FsIGZvbGRlcj0iJDEiCiAgICBpZiBbIC1kICIkZm9sZGVyIiBdOyB0aGVuCiAgICAgICAg"\ + "cmV0dXJuIDAKICAgIGZpCiAgICBpZiAhIG1rZGlyIC1wICIkZm9sZGVyIjsgdGhlbgogICAgICAg"\ + "IF9kaWUgIkZhaWxlZCB0byBjcmVhdGUgZm9sZGVyOiAkZm9sZGVyIgogICAgZmkKICAgIGNobW9k"\ + "IDc3NyAiJGZvbGRlciIKICAgIGVjaG8gIkZvbGRlciBjcmVhdGVkOiAkZm9sZGVyIgp9CgojIENo"\ + "ZWNrcyBpZiBEb2NrZXIgaXMgaW5zdGFsbGVkLCBydW5uaW5nLCBhbmQgdXNlciBoYXMgcGVybWlz"\ + "c2lvbi4gUmV0dXJucyAxIG9uIGZhaWx1cmUuCl9jaGVja19kb2NrZXJfaW5zdGFsbGVkKCkgewog"\ + "ICAgaWYgISBjb21tYW5kIC12IGRvY2tlciAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBlY2hv"\ + "ICJEb2NrZXIgaXMgbm90IGluc3RhbGxlZCIKICAgICAgICByZXR1cm4gMQogICAgZmkKCiAgICAj"\ + "IGNoZWNrIGlmIGRvY2tlciBkYWVtb24gaXMgcnVubmluZwogICAgaWYgISBkb2NrZXIgaW5mbyAm"\ + "PiAvZGV2L251bGw7IHRoZW4KICAgICAgICBlY2hvICJEb2NrZXIgZGFlbW9uIGlzIG5vdCBydW5u"\ + "aW5nIgogICAgICAgIHJldHVybiAxCiAgICBmaQoKICAgICMgY2hlY2sgaWYgdXNlciBoYXMgcGVy"\ + "bWlzc2lvbiB0byBydW4gZG9ja2VyCiAgICBpZiAhIGRvY2tlciBydW4gLS1ybSBoZWxsby13b3Js"\ + "ZCAmPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBlY2hvICJVc2VyIGRvZXMgbm90IGhhdmUgcGVy"\ + "bWlzc2lvbiB0byBydW4gZG9ja2VyIgogICAgICAgIHJldHVybiAxCiAgICBmaQoKICAgIHJldHVy"\ + "biAwCn0KCiMgQ2hlY2tzIGlmIGEgY29udGFpbmVyIChhbnkgc3RhdGUpIGV4aXN0cy4gUmV0dXJu"\ + "cyAxIGlmIG5vdCBmb3VuZC4KX2lzX2NvbnRhaW5lcl9leGlzdHMoKSB7CiAgICBpZiAhIGRvY2tl"\ + "ciBwcyAtYSAtLWZvcm1hdCAie3suTmFtZXN9fSIgfCBncmVwIC1xICJeJDEkIjsgdGhlbgogICAg"\ + "ICAgIHJldHVybiAxCiAgICBmaQogICAgcmV0dXJuIDAKfQoKIyBDaGVja3MgaWYgYSBjb250YWlu"\ + "ZXIgaXMgY3VycmVudGx5IHJ1bm5pbmcuIFJldHVybnMgMSBpZiBub3QgcnVubmluZy4KX2lzX2Nv"\ + "bnRhaW5lcl9ydW5uaW5nKCkgewogICAgaWYgISBkb2NrZXIgcHMgLS1mb3JtYXQgInt7Lk5hbWVz"\ + "fX0iIHwgZ3JlcCAtcSAiXiQxJCI7IHRoZW4KICAgICAgICByZXR1cm4gMQogICAgZmkKICAgIHJl"\ + "dHVybiAwCn0KCiMgUHJpbnRzIHRoZSBJRCBvZiB0aGUgbmFtZWQgY29udGFpbmVyLgpfZ2V0X2Nv"\ + "bnRhaW5lcl9pZCgpIHsKICAgIGRvY2tlciBwcyAtLWZvcm1hdCAie3suSUR9fSIgLS1maWx0ZXIg"\ + "Im5hbWU9JDEiCn0KCiMgUHJpbnRzIHRoZSBzdGF0dXMgc3RyaW5nIG9mIHRoZSBuYW1lZCBjb250"\ + "YWluZXIuCl9nZXRfY29udGFpbmVyX3N0YXR1cygpIHsKICAgIGRvY2tlciBwcyAtLWZvcm1hdCAi"\ + "e3suU3RhdHVzfX0iIC0tZmlsdGVyICJuYW1lPSQxIgp9CgojIFN0YXJ0cyBhbiBleGlzdGluZywg"\ + "c3RvcHBlZCBjb250YWluZXIuCl9zdGFydF9jb250YWluZXIoKSB7CiAgICBfaXNfY29udGFpbmVy"\ + "X2V4aXN0cyAkMSB8fCByZXR1cm4gMQogICAgX2lzX2NvbnRhaW5lcl9ydW5uaW5nICQxICYmIHJl"\ + "dHVybiAwCiAgICBkb2NrZXIgc3RhcnQgJDEKfQoKIyBTdG9wcyBhIHJ1bm5pbmcgY29udGFpbmVy"\ + "Lgpfc3RvcF9jb250YWluZXIoKSB7CiAgICBfaXNfY29udGFpbmVyX3J1bm5pbmcgJDEgfHwgcmV0"\ + "dXJuIDA7CiAgICBkb2NrZXIgc3RvcCAkMQp9ICAgCgojIFN0b3BzIChpZiBuZWVkZWQpIGFuZCBy"\ + "ZW1vdmVzIGEgY29udGFpbmVyLgpfcmVtb3ZlX2NvbnRhaW5lcigpIHsKICAgIF9zdG9wX2NvbnRh"\ + "aW5lciAkMQogICAgX2lzX2NvbnRhaW5lcl9leGlzdHMgJDEgfHwgcmV0dXJuIDA7CiAgICBkb2Nr"\ + "ZXIgcm0gJDEKfQoKIyBQcmludHMgdGhlIGxvZ3MgZm9yIGEgY29udGFpbmVyLgpfZ2V0X2NvbnRh"\ + "aW5lcl9sb2dzKCkgewogICAgaWYgISBfaXNfY29udGFpbmVyX2V4aXN0cyAkMTsgdGhlbgogICAg"\ + "ICAgIGVjaG8gIkNvbnRhaW5lciAkMSBkb2VzIG5vdCBleGlzdCIKICAgICAgICByZXR1cm4gMQog"\ + "ICAgZmkKCiAgICBkb2NrZXIgbG9ncyAkMQp9CgojIENoZWNrcyBpZiBsaXN0ZWQgZW52aXJvbm1l"\ + "bnQgdmFyaWFibGVzIGFyZSBzZXQ7IGNhbGxzIF9kaWUoKSBpZiBhbnkgYXJlIG1pc3NpbmcuCl9j"\ + "aGVja19yZXF1aXJlZF9lbnZfdmFycygpIHsKICAgIGxvY2FsIHJlcXVpcmVkX3ZhcnM9KCIkQCIp"\ + "CiAgICBmb3IgdmFyIGluICIke3JlcXVpcmVkX3ZhcnNbQF19IjsgZG8KICAgICAgICBpZiBbIC16"\ + "ICIkeyF2YXJ9IiBdOyB0aGVuCiAgICAgICAgICAgIF9kaWUgIlJlcXVpcmVkIGVudmlyb25tZW50"\ + "IHZhcmlhYmxlICR2YXIgaXMgbm90IHNldCIKICAgICAgICBmaQogICAgZG9uZQp9CgojIFJlbW92"\ + "ZXMgYSBwYXRoIHVzaW5nIGEgcm9vdCBEb2NrZXIgY29udGFpbmVyIChmb3IgcGVybWlzc2lvbnMp"\ + "Lgpfcm9vdF9yZW1vdmVfdHJlZSgpIHsKICAgIGxvY2FsIHRvX3JlbW92ZT0iJDEiCiAgICBwYXJl"\ + "bnQ9JChkaXJuYW1lICIkdG9fcmVtb3ZlIikKICAgIGFic19wYXJlbnQ9JChyZWFscGF0aCAiJHBh"\ + "cmVudCIpCiAgICBjaGlsZD0kKGJhc2VuYW1lICIkdG9fcmVtb3ZlIikKICAgIGRvY2tlciBydW4g"\ + "LS1ybSAtdiAiJGFic19wYXJlbnQiOi9kYXRhIGFscGluZSBybSAtcmYgIi9kYXRhLyRjaGlsZCIK"\ + "fQoKCiMgTG9hZCBhdXRvY29tbWFuZHMKc291cmNlICIke0FHRU5UX1BBVEh9L19hdXRvY29tbWFu"\ + "ZHMuc2gi"; - if (!fs::exists(outpath)) { - std::cout << "[dehydrate] " << outpath.filename() << ": created\n"; - } else if (needs_write) { - std::cout << "[dehydrate] " << outpath.filename() << ": updated (hash changed)\n"; - } - any_written = any_written || needs_write; + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 11110864345927016405ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; } { - fs::path outpath = fs::path(destination_folder) / rel__nuke_other_sh; - fs::create_directories(outpath.parent_path()); - uint64_t existing_hash; - if (fs::exists(outpath)) { - std::ifstream in(outpath, std::ios::binary); - std::ostringstream oss; oss << in.rdbuf(); - std::string data = oss.str(); - existing_hash = fnv1a_64(data.data(), data.size()); - } - bool needs_write = !fs::exists(outpath) || existing_hash != hash__nuke_other_sh; - if (needs_write) { - std::ofstream out(outpath, std::ios::binary); - out.write(reinterpret_cast(data__nuke_other_sh), len__nuke_other_sh); - } + // File: _nuke_other.sh + fs::path outpath = fs::path(destination_folder) / "_nuke_other.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKClNDUklQVF9ESVI9IiQoIGNkICIkKCBkaXJuYW1lICIke0JBU0hfU09VUkNF"\ + "WzBdfSIgKSIgJiYgcHdkICkiCnNvdXJjZSAiJFNDUklQVF9ESVIvc2hhcmVkL19jb21tb24uc2gi"\ + "CgoKQV9TRVJWSUNFPSIkMSIKQV9TRVJWSUNFX1BBVEg9IiQyIgoKCiMgMS4gQ2hlY2sgaWYgc2Vy"\ + "dmljZSBkaXJlY3RvcnkgZXhpc3RzIG9uIHNlcnZlcgpbIC1kICIkQV9TRVJWSUNFX1BBVEgiIF0g"\ + "fHwgX2RpZSAiU2VydmljZSBpcyBub3QgaW5zdGFsbGVkOiAkQV9TRVJWSUNFIgoKIyB1bmluc3Rh"\ + "bGwgdGhlIHNlcnZpY2UKaWYgWyAtZiAiJEFfU0VSVklDRV9QQVRIL3VuaW5zdGFsbC5zaCIgXTsg"\ + "dGhlbgogICAgJEFfU0VSVklDRV9QQVRIL3VuaW5zdGFsbC5zaApmaQoKIyBudWtlIHRoZSBzZXJ2"\ + "aWNlCmlmIFsgLWYgIiRBX1NFUlZJQ0VfUEFUSC9udWtlLnNoIiBdOyB0aGVuCiAgICAkQV9TRVJW"\ + "SUNFX1BBVEgvbnVrZS5zaApmaQoKIyByZW1vdmUgdGhlIHNlcnZpY2UgZGlyZWN0b3J5CnJtIC1y"\ + "ZiAiJEFfU0VSVklDRV9QQVRIIgo="; - if (!fs::exists(outpath)) { - std::cout << "[dehydrate] " << outpath.filename() << ": created\n"; - } else if (needs_write) { - std::cout << "[dehydrate] " << outpath.filename() << ": updated (hash changed)\n"; - } - any_written = any_written || needs_write; + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 14046958915324057884ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; } { - fs::path outpath = fs::path(destination_folder) / rel__allservicesstatus_sh; - fs::create_directories(outpath.parent_path()); - uint64_t existing_hash; - if (fs::exists(outpath)) { - std::ifstream in(outpath, std::ios::binary); - std::ostringstream oss; oss << in.rdbuf(); - std::string data = oss.str(); - existing_hash = fnv1a_64(data.data(), data.size()); - } - bool needs_write = !fs::exists(outpath) || existing_hash != hash__allservicesstatus_sh; - if (needs_write) { - std::ofstream out(outpath, std::ios::binary); - out.write(reinterpret_cast(data__allservicesstatus_sh), len__allservicesstatus_sh); - } + // File: _allservicesstatus.sh + fs::path outpath = fs::path(destination_folder) / "_allservicesstatus.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgVGhpcyBzY3JpcHQgY2hlY2tzIEFMTCBzZXJ2aWNlcyBvbiB0aGUgc2Vy"\ + "dmVyIGFuZCByZXR1cm5zIGEgc3RhdHVzIGZvciBlYWNoLgoKIyBSZXR1cm4gZm9ybWF0IGlzIHNp"\ + "bXBsZSBFTlYgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm1hdDoKIyBTRVJWSUNFX05BTUVfSEVBTFRI"\ + "PWhlYWx0aHl8dW5oZWFsdGh5fHVua25vd24KIyBTRVJWSUNFX05BTUVfUE9SVFM9cG9ydDEscG9y"\ + "dDIscG9ydDMKCiMgR2V0IGFsbCBzZXJ2aWNlcyBvbiB0aGUgc2VydmVyClNDUklQVF9ESVI9IiQo"\ + "ZGlybmFtZSAiJDAiKSIKCiMgLy8gRFJPUFNIRUxMX0RJUgojIC8vICAgfC0tIGJhY2t1cHMKIyAv"\ + "LyAgIHwtLSBzZXJ2aWNlcwojIC8vICAgICAgIHwtLSBzZXJ2aWNlIG5hbWUKIyAvLyAgICAgICAg"\ + "ICAgfC0tIGNvbmZpZyAgPC0tIHRoaXMgaXMgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIGFsbCBzY3Jp"\ + "cHRzCiMgLy8gICAgICAgICAgICAgICB8LS0gc2VydmljZS5lbnYKIyAvLyAgICAgICAgICAgfC0t"\ + "IHRlbXBsYXRlCiMgLy8gICAgICAgICAgICAgICB8LS0gKHNjcmlwdCBmaWxlcykKIyAvLyAgICAg"\ + "ICAgICAgICAgIHwtLSBzaGFyZWQKIyAvLyAgICAgICAgICAgICAgICAgICB8LS0gX2FsbHNlcnZp"\ + "Y2Vzc3RhdHVzLnNoCiMgLy8gICAgICAgICAgICAgICB8LS0gY29uZmlnCiMgLy8gICAgICAgICAg"\ + "ICAgICAgICAgfC0tIHNlcnZpY2UuZW52CiMgLy8gICAgICAgICAgICAgICAgICAgfC0tIChvdGhl"\ + "ciBjb25maWcgZmlsZXMgZm9yIHNwZWNpZmljIHNlcnZlciZzZXJ2aWNlKQoKQ1VSUkVOVF9PVVRQ"\ + "VVQ9IiIKQ1VSUkVOVF9FWElUX0NPREU9MAoKbG9hZF9kb3RlbnYoKXsKICAgIGxvY2FsIGZpbGVf"\ + "cGF0aD0kMQogICAgaWYgWyAtZiAiJHtmaWxlX3BhdGh9IiBdOyB0aGVuCiAgICAgICAgc291cmNl"\ + "ICIke2ZpbGVfcGF0aH0iCiAgICBmaQp9CgpmdW5jdGlvbiBydW5fY29tbWFuZCgpIHsKICAgIGxv"\ + "Y2FsIHNlcnZpY2VfcGF0aD0kMQogICAgbG9jYWwgY29tbWFuZD0kMgogICAgbG9jYWwgY2FwdHVy"\ + "ZV9vdXRwdXQ9JHszOi1mYWxzZX0gICMgZGVmYXVsdCB0byBmYWxzZSBpZiBub3Qgc3BlY2lmaWVk"\ + "CgogICAgIyBjaGVjayBpZiB0aGUgY29tbWFuZCBpcyBhIGZpbGUKICAgIGlmIFsgISAtZiAiJHtz"\ + "ZXJ2aWNlX3BhdGh9L3RlbXBsYXRlLyR7Y29tbWFuZH0uc2giIF07IHRoZW4KICAgICAgICByZXR1"\ + "cm47CiAgICBmaQoKICAgICMgcnVuIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwgdG8gcHJldmVu"\ + "dCBlbnZpcm9ubWVudCBjaGFuZ2VzCiAgICBDVVJSRU5UX09VVFBVVD0kKAogICAgICAgIHNldCAt"\ + "YQogICAgICAgIGxvYWRfZG90ZW52ICIke3NlcnZpY2VfcGF0aH0vdGVtcGxhdGUvX2RlZmF1bHQu"\ + "ZW52IgogICAgICAgIGxvYWRfZG90ZW52ICIke3NlcnZpY2VfcGF0aH0vY29uZmlnL3NlcnZpY2Uu"\ + "ZW52IgogICAgICAgIHNldCArYQoKICAgICAgICAjIHVwZGF0ZSB0aGUgbWFpbiB2YXJpYWJsZXMu"\ + "CiAgICAgICAgZXhwb3J0IENPTkZJR19QQVRIPSIke3NlcnZpY2VfcGF0aH0vY29uZmlnIgogICAg"\ + "ICAgICMgU0VSVkVSIGlzIGNvcnJlY3QKICAgICAgICBleHBvcnQgU0VSVklDRT0iJHtTRVJWSUNF"\ + "X05BTUV9IgogICAgICAgIAogICAgICAgIGlmIFsgIiRjYXB0dXJlX291dHB1dCIgPSAidHJ1ZSIg"\ + "XTsgdGhlbgogICAgICAgICAgICAjIENhcHR1cmUgYW5kIHJldHVybiBvdXRwdXQKICAgICAgICAg"\ + "ICAgYmFzaCAiJHtzZXJ2aWNlX3BhdGh9L3RlbXBsYXRlLyR7Y29tbWFuZH0uc2giIDI+JjEKICAg"\ + "ICAgICBlbHNlCiAgICAgICAgICAgICMgUnVuIHNpbGVudGx5IGFuZCByZXR1cm4gZXhpdCBjb2Rl"\ + "CiAgICAgICAgICAgIGJhc2ggIiR7c2VydmljZV9wYXRofS90ZW1wbGF0ZS8ke2NvbW1hbmR9LnNo"\ + "IiA+IC9kZXYvbnVsbCAyPiYxCiAgICAgICAgZmkKICAgICkKICAgIENVUlJFTlRfRVhJVF9DT0RF"\ + "PSQ/Cn0KCmZ1bmN0aW9uIGNvbW1hbmRfZXhpc3RzKCkgewogICAgbG9jYWwgc2VydmljZV9wYXRo"\ + "PSQxCiAgICBsb2NhbCBjb21tYW5kPSQyCiAgICBpZiBbICEgLWYgIiR7c2VydmljZV9wYXRofS90"\ + "ZW1wbGF0ZS8ke2NvbW1hbmR9LnNoIiBdOyB0aGVuCiAgICAgICAgcmV0dXJuIDEKICAgIGZpCiAg"\ + "ICByZXR1cm4gMAp9CgojIEdldCBhbGwgc2VydmljZXMgb24gdGhlIHNlcnZlcgpTRVJWSUNFU19Q"\ + "QVRIPSQocmVhbHBhdGggIiR7U0NSSVBUX0RJUn0vLi4vLi4vLi4vIikKCiMgR2V0IGFsbCBzZXJ2"\ + "aWNlIG5hbWVzClNFUlZJQ0VfTkFNRVM9JChscyAiJHtTRVJWSUNFU19QQVRIfSIpCgojIEl0ZXJh"\ + "dGUgb3ZlciBhbGwgc2VydmljZSBuYW1lcwpmb3IgU0VSVklDRV9OQU1FIGluICR7U0VSVklDRV9O"\ + "QU1FU307IGRvCgogICAgU0VSVklDRV9QQVRIPSQocmVhbHBhdGggIiR7U0VSVklDRVNfUEFUSH0v"\ + "JHtTRVJWSUNFX05BTUV9IikKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K"\ + "ICAgICMgR2V0IHRoZSBzZXJ2aWNlIGhlYWx0aAogICAgaWYgISBjb21tYW5kX2V4aXN0cyAiJHtT"\ + "RVJWSUNFX1BBVEh9IiAic3RhdHVzIjsgdGhlbgogICAgICAgIFNFUlZJQ0VfSEVBTFRIPSJ1bmtu"\ + "b3duIgogICAgZWxzZQogICAgICAgIHJ1bl9jb21tYW5kICIke1NFUlZJQ0VfUEFUSH0iICJzdGF0"\ + "dXMiICJmYWxzZSIKICAgICAgICBpZiBbICIke0NVUlJFTlRfRVhJVF9DT0RFfSIgLWVxIDAgXTsg"\ + "dGhlbgogICAgICAgICAgICBTRVJWSUNFX0hFQUxUSD0iaGVhbHRoeSIKICAgICAgICBlbHNlCiAg"\ + "ICAgICAgICAgIFNFUlZJQ0VfSEVBTFRIPSJ1bmhlYWx0aHkiCiAgICAgICAgZmkKICAgIGZpCgog"\ + "ICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEdldCB0aGUgc2Vydmlj"\ + "ZSBwb3J0cwogICAgaWYgISBjb21tYW5kX2V4aXN0cyAiJHtTRVJWSUNFX1BBVEh9IiAicG9ydHMi"\ + "OyB0aGVuCiAgICAgICAgU0VSVklDRV9QT1JUUz0iIgogICAgZWxzZQogICAgICAgIHJ1bl9jb21t"\ + "YW5kICIke1NFUlZJQ0VfUEFUSH0iICJwb3J0cyIgInRydWUiCiAgICAgICAgU0VSVklDRV9QT1JU"\ + "Uz0iJHtDVVJSRU5UX09VVFBVVH0iCiAgICBmaQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t"\ + "LS0tLS0tLS0tLQogICAgIyByZXR1cm4gdGhlIGhlYWx0aCBhbmQgcG9ydHMKICAgIGVjaG8gIiR7"\ + "U0VSVklDRV9OQU1FfV9IRUFMVEg9JHtTRVJWSUNFX0hFQUxUSH0iCiAgICBlY2hvICIke1NFUlZJ"\ + "Q0VfTkFNRX1fUE9SVFM9JHtTRVJWSUNFX1BPUlRTfSIKZG9uZQo="; - if (!fs::exists(outpath)) { - std::cout << "[dehydrate] " << outpath.filename() << ": created\n"; - } else if (needs_write) { - std::cout << "[dehydrate] " << outpath.filename() << ": updated (hash changed)\n"; - } - any_written = any_written || needs_write; + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 1995642360604494489ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; } { - fs::path outpath = fs::path(destination_folder) / rel__autocommands_sh; - fs::create_directories(outpath.parent_path()); - uint64_t existing_hash; - if (fs::exists(outpath)) { - std::ifstream in(outpath, std::ios::binary); - std::ostringstream oss; oss << in.rdbuf(); - std::string data = oss.str(); - existing_hash = fnv1a_64(data.data(), data.size()); - } - bool needs_write = !fs::exists(outpath) || existing_hash != hash__autocommands_sh; - if (needs_write) { - std::ofstream out(outpath, std::ios::binary); - out.write(reinterpret_cast(data__autocommands_sh), len__autocommands_sh); - } + // File: _autocommands.sh + fs::path outpath = fs::path(destination_folder) / "_autocommands.sh"; + static const char filedata_base64[] = "IyEvYmluL2Jhc2gKCiMgVGhpcyBzY3JpcHQgY29udGFpbnMgdGhlIGNvbW1vbiBjb2RlIGZvciB0"\ + "aGUgYXV0b2NvbW1hbmRzLgoKTVlJRD0kKGlkIC11KQpNWUdSUD0kKGlkIC1nKQoKX2F1dG9jb21t"\ + "YW5kcnVuX3ZvbHVtZSgpIHsKICAgIGxvY2FsIGNvbW1hbmQ9IiQxIgogICAgbG9jYWwgdm9sdW1l"\ + "X25hbWU9IiQyIgogICAgbG9jYWwgYmFja3VwX2ZvbGRlcj0iJDMiCgogICAgY2FzZSAiJGNvbW1h"\ + "bmQiIGluCiAgICAgICAgY3JlYXRlKQogICAgICAgICAgICBlY2hvICJDcmVhdGluZyB2b2x1bWUg"\ + "JHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tlciB2b2x1bWUgY3JlYXRlICR7dm9sdW1l"\ + "X25hbWV9CiAgICAgICAgICAgIDs7CiAgICAgICAgbnVrZSkKICAgICAgICAgICAgZWNobyAiTnVr"\ + "aW5nIHZvbHVtZSAke3ZvbHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2VyIHZvbHVtZSBybSAk"\ + "e3ZvbHVtZV9uYW1lfQogICAgICAgICAgICA7OwogICAgICAgIGJhY2t1cCkKICAgICAgICAgICAg"\ + "ZWNobyAiQmFja2luZyB1cCB2b2x1bWUgJHt2b2x1bWVfbmFtZX0iCiAgICAgICAgICAgIGRvY2tl"\ + "ciBydW4gLS1ybSAtdiAke3ZvbHVtZV9uYW1lfTovdm9sdW1lIC12ICR7YmFja3VwX2ZvbGRlcn06"\ + "L2JhY2t1cCBkZWJpYW4gYmFzaCAtYyAidGFyIC1jenZmIC9iYWNrdXAvYmFja3VwLnRneiAtQyAv"\ + "dm9sdW1lIC4gJiYgY2hvd24gLVIgJE1ZSUQ6JE1ZR1JQIC9iYWNrdXAiCiAgICAgICAgICAgIDs7"\ + "CiAgICAgICAgcmVzdG9yZSkKICAgICAgICAgICAgZWNobyAiUmVzdG9yaW5nIHZvbHVtZSAke3Zv"\ + "bHVtZV9uYW1lfSIKICAgICAgICAgICAgZG9ja2VyIHZvbHVtZSBybSAke3ZvbHVtZV9uYW1lfQog"\ + "ICAgICAgICAgICBkb2NrZXIgdm9sdW1lIGNyZWF0ZSAke3ZvbHVtZV9uYW1lfQogICAgICAgICAg"\ + "ICBkb2NrZXIgcnVuIC0tcm0gLXYgJHt2b2x1bWVfbmFtZX06L3ZvbHVtZSAtdiAke2JhY2t1cF9m"\ + "b2xkZXJ9Oi9iYWNrdXAgZGViaWFuIGJhc2ggLWMgInRhciAteHp2ZiAvYmFja3VwL2JhY2t1cC50"\ + "Z3ogLUMgL3ZvbHVtZSAtLXN0cmlwLWNvbXBvbmVudHM9MSIKICAgICAgICAgICAgOzsKICAgIGVz"\ + "YWMKfSAgIAoKX2F1dG9jb21tYW5kcnVuX3BhdGgoKSB7CiAgICBsb2NhbCBjb21tYW5kPSIkMSIK"\ + "ICAgIGxvY2FsIHBhdGg9IiQyIgogICAgbG9jYWwgYmFja3VwX2ZvbGRlcj0iJDMiCgogICAgY2Fz"\ + "ZSAiJGNvbW1hbmQiIGluCiAgICAgICAgY3JlYXRlKQogICAgICAgICAgICBlY2hvICJDcmVhdGlu"\ + "ZyBwYXRoICR7cGF0aH0iCiAgICAgICAgICAgIG1rZGlyIC1wICR7cGF0aH0KICAgICAgICAgICAg"\ + "OzsKICAgICAgICBudWtlKQogICAgICAgICAgICBlY2hvICJOdWtpbmcgcGF0aCAke3BhdGh9Igog"\ + "ICAgICAgICAgICBsb2NhbCBwYXRoX3BhcmVudD0kKGRpcm5hbWUgJHtwYXRofSkKICAgICAgICAg"\ + "ICAgbG9jYWwgcGF0aF9jaGlsZD0kKGJhc2VuYW1lICR7cGF0aH0pCiAgICAgICAgICAgIGlmIFsg"\ + "LWQgIiR7cGF0aF9wYXJlbnR9LyR7cGF0aF9jaGlsZH0iIF07IHRoZW4KICAgICAgICAgICAgICAg"\ + "IGRvY2tlciBydW4gLS1ybSAtdiAke3BhdGhfcGFyZW50fTovdm9sdW1lIGRlYmlhbiBiYXNoIC1j"\ + "ICJybSAtcmYgL3ZvbHVtZS8ke3BhdGhfY2hpbGR9IiB8fCBlY2hvICJGYWlsZWQgdG8gbnVrZSBw"\ + "YXRoICR7cGF0aH0iCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVjaG8gIlBhdGgg"\ + "JHtwYXRofSBkb2VzIG5vdCBleGlzdCAtIG5vdGhpbmcgdG8gbnVrZSIKICAgICAgICAgICAgZmkK"\ + "ICAgICAgICAgICAgOzsKICAgICAgICBiYWNrdXApCiAgICAgICAgICAgIGVjaG8gIkJhY2tpbmcg"\ + "dXAgcGF0aCAke3BhdGh9IgogICAgICAgICAgICBpZiBbIC1kICIke3BhdGh9IiBdOyB0aGVuCiAg"\ + "ICAgICAgICAgICAgICBkb2NrZXIgcnVuIC0tcm0gLXYgJHtwYXRofTovcGF0aCAtdiAke2JhY2t1"\ + "cF9mb2xkZXJ9Oi9iYWNrdXAgZGViaWFuIGJhc2ggLWMgInRhciAtY3p2ZiAvYmFja3VwL2JhY2t1"\ + "cC50Z3ogLUMgL3BhdGggLiAmJiBjaG93biAtUiAkTVlJRDokTVlHUlAgL2JhY2t1cCIKICAgICAg"\ + "ICAgICAgZWxzZQogICAgICAgICAgICAgICAgZWNobyAiUGF0aCAke3BhdGh9IGRvZXMgbm90IGV4"\ + "aXN0IC0gbm90aGluZyB0byBiYWNrdXAiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIDs7CiAg"\ + "ICAgICAgcmVzdG9yZSkKICAgICAgICAgICAgZWNobyAiUmVzdG9yaW5nIHBhdGggJHtwYXRofSIK"\ + "ICAgICAgICAgICAgdGFyIC14enZmICR7YmFja3VwX2ZvbGRlcn0vYmFja3VwLnRneiAtQyAke3Bh"\ + "dGh9IC0tc3RyaXAtY29tcG9uZW50cz0xCiAgICAgICAgICAgIDs7CiAgICBlc2FjCn0KCl9hdXRv"\ + "Y29tbWFuZHJ1bl9maWxlKCkgewogICAgbG9jYWwgY29tbWFuZD0iJDEiCiAgICBsb2NhbCBmaWxl"\ + "cGF0aD0iJDIiCiAgICBsb2NhbCBiYWNrdXBfZm9sZGVyPSIkMyIKCiAgICBjYXNlICIkY29tbWFu"\ + "ZCIgaW4KICAgICAgICBjcmVhdGUpCiAgICAgICAgICAgIDs7CiAgICAgICAgbnVrZSkKICAgICAg"\ + "ICAgICAgcm0gLWYgJHtmaWxlcGF0aH0KICAgICAgICAgICAgOzsKICAgICAgICBiYWNrdXApCiAg"\ + "ICAgICAgICAgIGVjaG8gIkJhY2tpbmcgdXAgZmlsZSAke2ZpbGVwYXRofSIKICAgICAgICAgICAg"\ + "bG9jYWwgZmlsZV9wYXJlbnQ9JChkaXJuYW1lICR7ZmlsZXBhdGh9KQogICAgICAgICAgICBsb2Nh"\ + "bCBmaWxlX25hbWU9JChiYXNlbmFtZSAke2ZpbGVwYXRofSkKICAgICAgICAgICAgaWYgWyAtZiAi"\ + "JHtmaWxlX3BhcmVudH0vJHtmaWxlX25hbWV9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBkb2Nr"\ + "ZXIgcnVuIC0tcm0gLXYgJHtmaWxlX3BhcmVudH06L3ZvbHVtZSAtdiAke2JhY2t1cF9mb2xkZXJ9"\ + "Oi9iYWNrdXAgZGViaWFuIGJhc2ggLWMgImNwIC92b2x1bWUvJHtmaWxlX25hbWV9IC9iYWNrdXAv"\ + "JHtmaWxlX25hbWV9ICYmIGNob3duIC1SICRNWUlEOiRNWUdSUCAvYmFja3VwIgogICAgICAgICAg"\ + "ICBlbHNlCiAgICAgICAgICAgICAgICBlY2hvICJGaWxlICR7ZmlsZXBhdGh9IGRvZXMgbm90IGV4"\ + "aXN0IC0gbm90aGluZyB0byBiYWNrdXAiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIDs7CiAg"\ + "ICAgICAgcmVzdG9yZSkKICAgICAgICAgICAgZWNobyAiUmVzdG9yaW5nIGZpbGUgJHtmaWxlcGF0"\ + "aH0iCiAgICAgICAgICAgIGxvY2FsIGZpbGVfbmFtZT0kKGJhc2VuYW1lICR7ZmlsZXBhdGh9KQog"\ + "ICAgICAgICAgICBjcCAke2JhY2t1cF9mb2xkZXJ9LyR7ZmlsZV9uYW1lfSAke2ZpbGVwYXRofQog"\ + "ICAgICAgICAgICA7OwogICAgZXNhYwp9CgpfYXV0b2NvbW1hbmRwYXJzZSgpIHsKICAgICMgZmly"\ + "c3QgYXJndW1lbnQgaXMgdGhlIGNvbW1hbmQKICAgICMgaWYgdGhlIGNvbW1hbmQgaXMgYmFja3Vw"\ + "IG9yIHJlc3RvcmUsIHRoZW4gdGhlIGxhc3QgdHdvIGFyZ3VtZW50cyBhcmUgdGhlIGJhY2t1cCBm"\ + "aWxlIGFuZCB0aGUgdGVtcG9yYXJ5IHBhdGgKICAgICMgYWxsIG90aGVyIGFyZ3VtZW50cyBhcmUg"\ + "b2YgZm9ybToKICAgICMga2V5PXZhbHVlCiAgICAjIHdoZXJlIGtleSBjYW4gYmUgb25lIG9mIHZv"\ + "bHVtZSwgcGF0aCBvciBmaWxlLgogICAgIyB2YWx1ZSBpcyB0aGUgcGF0aCBvciB2b2x1bWUgbmFt"\ + "ZS4KCiAgICAjIHdlIGl0ZXJhdGUgb3ZlciB0aGUga2V5PXZhbHVlIGFyZ3VtZW50cywgYW5kIGZv"\ + "ciBlYWNoIHdlIGNhbGw6CiAgICAjICAgIGF1dG9ydW4gPGNvbW1hbmQ+IDxiYWNrdXBmaWxlPiA8"\ + "a2V5PiA8dmFsdWU+CgogICAgbG9jYWwgY29tbWFuZD0iJDEiCiAgICBzaGlmdAoKICAgIGxvY2Fs"\ + "IGJhY2t1cF90ZW1wX3BhdGg9IiQxIgogICAgc2hpZnQKCiAgICBlY2hvICJhdXRvY29tbWFuZHBh"\ + "cnNlOiBjb21tYW5kPSRjb21tYW5kIGJhY2t1cF90ZW1wX3BhdGg9JGJhY2t1cF90ZW1wX3BhdGgi"\ + "CgogICAgIyBFeHRyYWN0IHRoZSBiYWNrdXAgZmlsZSBhbmQgdGVtcCBwYXRoIChsYXN0IHR3byBh"\ + "cmd1bWVudHMpCiAgICBsb2NhbCBhcmdzPSgiJEAiKQogICAgbG9jYWwgYXJnX2NvdW50PSR7I2Fy"\ + "Z3NbQF19CiAgICAKICAgICMgUHJvY2VzcyBhbGwga2V5PXZhbHVlIHBhaXJzCiAgICBmb3IgKChp"\ + "PTA7IGk8JGFyZ19jb3VudDsgaSsrKSk7IGRvCiAgICAgICAgbG9jYWwgcGFpcj0iJHthcmdzWyRp"\ + "XX0iCiAgICAgICAgCiAgICAgICAgIyBTa2lwIGlmIG5vdCBpbiBrZXk9dmFsdWUgZm9ybWF0CiAg"\ + "ICAgICAgaWYgW1sgIiRwYWlyIiAhPSAqIj0iKiBdXTsgdGhlbgogICAgICAgICAgICBjb250aW51"\ + "ZQogICAgICAgIGZpCiAgICAgICAgCiAgICAgICAgbG9jYWwga2V5PSIke3BhaXIlJT0qfSIKICAg"\ + "ICAgICBsb2NhbCB2YWx1ZT0iJHtwYWlyIyo9fSIKCiAgICAgICAgIyBjcmVhdGUgYmFja3VwIGZv"\ + "bGRlciB1bmlxdWUgdG8ga2V5L3ZhbHVlLgogICAgICAgIGxvY2FsIGJmb2xkZXI9JChlY2hvICIk"\ + "e2tleX1fJHt2YWx1ZX0iIHwgdHIgLWNkICdbOmFsbnVtOl1fLScpCiAgICAgICAgbG9jYWwgdGFy"\ + "Z2V0cGF0aD0iJHtiYWNrdXBfdGVtcF9wYXRofS8ke2Jmb2xkZXJ9IgogICAgICAgIG1rZGlyIC1w"\ + "ICR7dGFyZ2V0cGF0aH0KCiAgICAgICAgIyBLZXkgbXVzdCBiZSBvbmUgb2Ygdm9sdW1lLCBwYXRo"\ + "IG9yIGZpbGUKICAgICAgICBjYXNlICIka2V5IiBpbgogICAgICAgICAgICB2b2x1bWUpCiAgICAg"\ + "ICAgICAgICAgICBfYXV0b2NvbW1hbmRydW5fdm9sdW1lICIkY29tbWFuZCIgIiR2YWx1ZSIgIiR0"\ + "YXJnZXRwYXRoIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgcGF0aCkKICAgICAgICAg"\ + "ICAgICAgIF9hdXRvY29tbWFuZHJ1bl9wYXRoICIkY29tbWFuZCIgIiR2YWx1ZSIgIiR0YXJnZXRw"\ + "YXRoIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgZmlsZSkKICAgICAgICAgICAgICAg"\ + "IF9hdXRvY29tbWFuZHJ1bl9maWxlICIkY29tbWFuZCIgIiR2YWx1ZSIgIiR0YXJnZXRwYXRoIgog"\ + "ICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgIF9kaWUgIlVu"\ + "a25vd24ga2V5ICRrZXkgcGFzc2VkIHRvIGF1dG8ke2NvbW1hbmR9LiBXZSBvbmx5IHN1cHBvcnQg"\ + "dm9sdW1lLCBwYXRoIGFuZCBmaWxlLiIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYwog"\ + "ICAgZG9uZQp9CgoKYXV0b2NyZWF0ZSgpIHsKICAgIF9hdXRvY29tbWFuZHBhcnNlIGNyZWF0ZSBu"\ + "b25lICIkQCIKfQoKCmF1dG9udWtlKCkgewogICAgX2F1dG9jb21tYW5kcGFyc2UgbnVrZSBub25l"\ + "ICIkQCIKfQoKYXV0b2JhY2t1cCgpIHsKICAgIF9jaGVja19yZXF1aXJlZF9lbnZfdmFycyAiQkFD"\ + "S1VQX0ZJTEUiICJURU1QX0RJUiIKICAgIEJBQ0tVUF9URU1QX1BBVEg9IiRURU1QX0RJUi9iYWNr"\ + "dXAiCgoKICAgIG1rZGlyIC1wICIkQkFDS1VQX1RFTVBfUEFUSCIKICAgIGVjaG8gIl9hdXRvY29t"\ + "bWFuZHBhcnNlIFtiYWNrdXBdIFskQkFDS1VQX1RFTVBfUEFUSF0gWyRAXSIKICAgIF9hdXRvY29t"\ + "bWFuZHBhcnNlIGJhY2t1cCAiJEJBQ0tVUF9URU1QX1BBVEgiICIkQCIKCiAgICB0YXIgemN2ZiAi"\ + "JEJBQ0tVUF9GSUxFIiAtQyAiJEJBQ0tVUF9URU1QX1BBVEgiIC4KfQoKYXV0b3Jlc3RvcmUoKSB7"\ + "CiAgICBfY2hlY2tfcmVxdWlyZWRfZW52X3ZhcnMgIkJBQ0tVUF9GSUxFIiAiVEVNUF9ESVIiCiAg"\ + "ICBCQUNLVVBfVEVNUF9QQVRIPSIkVEVNUF9ESVIvcmVzdG9yZSIKCiAgICBlY2hvICJfYXV0b2Nv"\ + "bW1hbmRwYXJzZSBbcmVzdG9yZV0gWyRCQUNLVVBfVEVNUF9QQVRIXSBbJEBdIgoKICAgIG1rZGly"\ + "IC1wICIkQkFDS1VQX1RFTVBfUEFUSCIKICAgIHRhciB6eHZmICIkQkFDS1VQX0ZJTEUiIC1DICIk"\ + "QkFDS1VQX1RFTVBfUEFUSCIgLS1zdHJpcC1jb21wb25lbnRzPTEKCiAgICBfYXV0b2NvbW1hbmRw"\ + "YXJzZSByZXN0b3JlICIkQkFDS1VQX1RFTVBfUEFUSCIgIiRAIgp9Cg=="; - if (!fs::exists(outpath)) { - std::cout << "[dehydrate] " << outpath.filename() << ": created\n"; - } else if (needs_write) { - std::cout << "[dehydrate] " << outpath.filename() << ": updated (hash changed)\n"; - } - any_written = any_written || needs_write; + // Decode Base64 data + size_t decoded_size = (strlen(filedata_base64) * 3) / 4; + unsigned char* decoded_data = new unsigned char[decoded_size]; + size_t actual_size; + base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size); + + bool file_written = _recreate_file_(outpath, 16592349636416977993ULL, std::filesystem::perms(493), decoded_data, actual_size); + delete[] decoded_data; + any_written = any_written || file_written; } return any_written; } diff --git a/source/src/commands/edit.cpp b/source/src/commands/edit.cpp index f0b90fb..0c57be8 100644 --- a/source/src/commands/edit.cpp +++ b/source/src/commands/edit.cpp @@ -111,25 +111,22 @@ int edit_config() // ------------------------------------------------------------------------------------------------ int edit_server(const std::string &server_name) { - std::string serverpath = localpath::server(server_name); - if (serverpath.empty()) { + if (localpath::server(server_name).empty()) { std::cerr << "Error: Server not found: " << server_name << std::endl; return -1; } - std::ostringstream aftertext; - aftertext << "If you have changed DROPSHELL_DIR, you should manually move the files to the new location NOW.\n" - << "You can ssh in to the remote server with: dropshell ssh "< service_runner::get_all_services_status(std } std::string output; - if (!execute_ssh_command(env.get_SSH_INFO(), sCommand(remotepath::agent(server_name), "_allservicesstatus.sh", {}), cMode::CaptureOutput, &output)) + if (!execute_ssh_command(env.get_SSH_INFO(), sCommand(remotepath::agent(server_name), "./_allservicesstatus.sh", {}), cMode::CaptureOutput, &output)) return status; std::stringstream ss(output);