Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php eval(base64_decode('CiBuYW1lc3BhY2UgQXBwXEh0dHBcQ29udHJvbGxlcnM7IHVzZSBBcHBcTW9kZWxz..
Decoded Output download
namespace App\Http\Controllers; use App\Models\RubricGrades; use App\Models\PartGrades; use App\Models\CriteriaGrades; use App\Models\Classes; use App\Models\ClassesAsign; use App\Models\classEx; use App\Models\ExperimentGrades; use App\Models\ExperimentReport; use App\Models\HomePage; use App\Models\Notifications; use App\Models\ScheduleAuth; use App\Models\SmartlabApps; use App\Models\UpdatesTable; use App\Models\Users; use App\Models\weekDays; use App\Models\rubrics; use App\Models\rubric_parts; use App\Models\rubric_criterias; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Yajra\DataTables\DataTables; use Illuminate\Support\Str; use PhpParser\Node\Expr\FuncCall; use Image; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Hash; use function PHPUnit\Framework\isEmpty; use Illuminate\Validation\Rule; use League\Csv\Reader; use League\Csv\Statement; use Carbon\Carbon; use PDF; use Illuminate\Support\Facades\Response; class AdminController extends Controller { public function downloadPDF(Request $request) { $content = $request->input("\x63\157\x6e\164\x65\x6e\x74"); $styles = $request->input("\163\164\x79\x6c\145\x73"); $pdfContent = $styles . $content; $pdf = PDF::loadHTML($pdfContent); return $pdf->download("\144\157\167\156\154\157\141\144\145\144\56\x70\x64\146"); } public function downloadCsv() { $filePath = public_path("\143\163\166\57\x62\x75\154\x6b\x2d\x72\145\x67\x69\x73\x74\x65\162\x2d\146\157\162\x6d\x61\164\x2e\143\x73\x76"); if (file_exists($filePath)) { return Response::download($filePath, "\x62\x75\154\x6b\55\x72\x65\x67\151\163\x74\x65\x72\x2d\x66\x6f\x72\155\x61\164\x2e\143\163\x76", array("\103\x6f\x6e\x74\x65\x6e\x74\x2d\124\x79\x70\145" => "\164\x65\x78\164\x2f\x63\163\166")); } else { return redirect()->back()->withErrors(array("\x63\x73\166\x5f\x66\x69\154\145" => "\106\151\154\x65\40\x6e\157\164\x20\106\x6f\x75\x6e\144")); } } public function getDashboard() { if (Session::get("\x61\144\x6d\151\x6e") == "\x61\x64\155\151\x6e" || Session::get("\x61\x64\x6d\x69\x6e") == "\x6c\x6f\167\x5f\x61\144\155\151\156") { return view("\163\171\163\164\x65\155\x70\141\147\x65\x73\x2e\144\x65\x76\x69\x63\x65\163"); } else { $currentDay = strtolower(Carbon::now("\x41\163\151\x61\57\115\x61\x6e\151\154\141")->format("\x6c")); $dayMapping = array("\x6d\x6f\156\x64\141\x79" => "\115", "\164\165\x65\163\144\141\x79" => "\x54", "\x77\x65\x64\156\x65\163\144\x61\x79" => "\127", "\x74\150\165\162\x73\x64\141\171" => "\x54\150", "\x66\x72\151\144\141\171" => "\106", "\x73\141\164\x75\x72\144\141\x79" => "\x53\x61\x74", "\163\165\156\144\141\x79" => "\123"); $shortDay = $dayMapping[$currentDay]; $currentHour = Carbon::now("\101\x73\x69\x61\x2f\115\141\156\151\154\x61")->format("\110\x3a\151\72\163"); $ongoingData = DB::table("\143\x6c\141\x73\x73\145\163\x5f\x61\x73\151\147\x6e\163")->select("\x63\x6c\x61\163\x73\x65\x73\x5f\x61\x73\x69\147\156\x73\56\x2a", "\143\154\x61\x73\163\x65\163\x2e\52")->join("\x63\154\x61\163\x73\145\x73", "\143\154\141\x73\163\x65\x73\137\141\163\151\147\x6e\x73\56\143\154\x61\163\x73\x5f\x69\144", "\x3d", "\x63\x6c\141\163\163\x65\x73\56\151\x64")->where("\143\x6c\141\163\163\x65\x73\137\141\x73\151\147\x6e\163\x2e\x75\163\x65\x72\137\x69\144", Session::get("\165\163\145\x72\156\x61\x6d\145"))->where("\143\154\x61\x73\x73\145\163\x2e" . $shortDay, "\x74\x72\x75\x65")->where("\143\x6c\x61\163\x73\145\163\56\163\x74\141\x72\164", "\x3c\75", $currentHour)->where("\x63\154\141\163\163\x65\x73\56\145\x6e\x64", "\76\x3d", $currentHour)->get(); $ClassesData = DB::table("\143\x6c\141\x73\163\145\x73\137\x61\x73\151\147\x6e\163")->select("\x63\154\x61\x73\163\145\x73\137\x61\x73\151\x67\156\163\x2e\x2a", "\143\154\141\163\x73\x65\163\56\x2a")->join("\143\154\141\163\x73\145\163", "\143\154\x61\x73\x73\x65\163\x5f\x61\163\151\147\x6e\163\x2e\143\154\141\x73\x73\137\151\144", "\x3d", "\143\x6c\141\163\x73\x65\163\56\151\144")->where("\x63\x6c\x61\163\163\145\163\x5f\x61\x73\151\147\x6e\163\x2e\165\x73\145\x72\x5f\x69\x64", Session::get("\165\163\145\x72\156\141\155\145"))->get(); $studentRowCount = array(); foreach ($ClassesData as $rowData) { $studentCount = ClassesAsign::join("\x75\163\145\162\163", "\x75\163\145\x72\x73\x2e\151\144", "\75", "\143\154\x61\x73\163\x65\x73\x5f\141\x73\x69\147\x6e\x73\x2e\165\163\145\x72\x5f\151\144")->where("\143\x6c\x61\163\x73\x65\x73\137\141\163\151\147\x6e\163\56\143\154\141\163\163\137\151\x64", $rowData->class_id)->where("\x75\x73\x65\162\163\x2e\162\x6f\x6c\x65", "\x73\164\x75\144\x65\156\164")->groupBy("\x63\x6c\x61\x73\x73\x65\x73\x5f\141\x73\x69\x67\x6e\163\56\x63\x6c\141\163\163\x5f\x69\144")->select("\143\x6c\141\x73\163\145\x73\137\141\x73\x69\x67\x6e\163\56\143\x6c\141\163\163\137\151\144", DB::raw("\103\x4f\x55\116\124\50\x2a\51\40\x41\x53\x20\x72\x6f\167\137\143\x6f\x75\156\164"))->first(); if ($studentCount) { $studentRowCount[] = $studentCount->row_count; } else { $studentRowCount[] = 0; } } return view("\x73\171\163\x74\x65\155\160\141\147\x65\163\56\x64\x61\x73\x68\142\x6f\x61\162\144", array("\103\x6c\x61\x73\x73\145\x73\104\x61\x74\141" => $ClassesData, "\x6f\x6e\147\x6f\151\x6e\x67\104\141\x74\141" => $ongoingData, "\163\164\165\144\145\156\x74\103\157\165\x6e\x74" => $studentRowCount)); } } public function studentList($class_id) { $className = Classes::find($class_id)->classname; $classData = ClassesAsign::join("\x75\163\x65\162\163", "\x75\163\x65\162\x73\x2e\x69\144", "\75", "\x63\154\x61\163\x73\145\x73\137\x61\x73\x69\147\156\163\x2e\165\163\x65\x72\x5f\x69\x64")->where("\143\154\x61\x73\163\145\163\x5f\141\163\151\147\x6e\x73\56\x63\154\x61\x73\163\137\x69\x64", $class_id)->where("\165\x73\145\162\163\56\162\x6f\154\x65", "\75", "\163\164\x75\x64\x65\156\x74")->select("\x63\154\x61\163\163\x65\x73\x5f\x61\163\151\147\156\x73\x2e\52", "\x75\x73\145\162\x73\56\x2a", "\x63\154\x61\x73\x73\x65\x73\137\141\x73\x69\x67\x6e\163\x2e\x63\162\x65\141\x74\x65\144\x5f\x62\x79\40\x61\163\40\145\x6e\x72\x6f\x6c\x6c\145\144\137\142\171", "\143\x6c\x61\163\x73\145\x73\x5f\x61\x73\x69\x67\156\163\x2e\x75\160\x64\x61\x74\x65\x64\x5f\141\x74\x20\141\x73\40\x64\x61\x74\145")->get(); $experimentData = classEx::where("\143\x6c\x61\x73\163\137\x69\144", $class_id)->whereNull("\163\164\141\164\165\163")->get(); return view("\163\171\x73\164\x65\155\x70\x61\147\x65\163\x2e\163\164\165\144\x65\156\x74\x2d\154\x69\163\164", array("\x64\141\164\x61" => $classData, "\x63\154\141\163\163\x5f\x6e\x61\x6d\x65" => $className, "\145\x78\x44\141\x74\141" => $experimentData)); } public function activityList($class_id) { $className = DB::table("\143\154\x61\x73\163\x65\163")->where("\151\144", $class_id)->first(); $hasRubric = DB::table("\x63\x6c\141\x73\163\x65\x73")->select("\x72\x75\142\162\151\x63\x5f\x61\x73\163\x69\x67\156\145\x64")->where("\151\x64", $class_id)->whereNotNull("\x72\x75\142\162\x69\143\137\141\163\x73\151\x67\x6e\x65\x64")->first(); if ($hasRubric) { $classData = ClassEx::join("\x63\x6c\x61\x73\x73\x65\x73", "\x63\x6c\x61\x73\x73\145\163\56\151\144", "\75", "\x63\154\141\163\x73\x5f\145\170\x65\x73\56\143\154\x61\163\x73\137\151\144")->join("\x72\x75\x62\162\151\143\137\147\x72\x61\x64\145\163", "\x63\x6c\141\163\x73\x5f\x65\x78\145\163\56\151\x64", "\x3d", "\x72\x75\142\x72\151\x63\137\x67\162\141\x64\x65\x73\56\141\143\x74\x5f\151\x64")->where("\x63\x6c\141\x73\163\137\145\170\145\163\x2e\x63\154\x61\163\163\137\x69\144", $class_id)->where("\x72\x75\x62\x72\151\143\137\x67\x72\141\x64\x65\x73\x2e\165\137\x69\144", Session::get("\x75\163\x65\162\x6e\141\x6d\x65"))->select("\143\x6c\x61\163\163\137\x65\x78\x65\163\x2e\x2a", "\x63\154\141\x73\163\x65\163\x2e\x2a", "\x72\165\142\162\x69\x63\x5f\x67\162\x61\144\145\163\56\x2a", "\x72\x75\142\162\x69\143\x5f\147\x72\x61\x64\x65\x73\56\165\160\x64\x61\164\x65\x64\x5f\x61\x74\40\141\x73\40\x64\x61\x74\x65\x5f\x67\x72\141\144\x65\x64")->get(); return view("\163\x79\163\x74\x65\x6d\160\141\x67\145\x73\x2e\x61\x63\164\151\x76\x69\x74\x79\x2d\154\x69\163\x74", array("\x64\x61\164\x61" => $classData, "\143\x6c\x61\163\163\116\141\x6d\145" => $className)); } else { $standardGrade = DB::table("\143\x6c\141\163\x73\137\x65\x78\x65\x73")->join("\x65\170\x70\x65\162\x69\x6d\x65\x6e\x74\x5f\x72\145\x70\157\x72\x74\x73", "\143\154\x61\x73\x73\137\x65\x78\145\163\x2e\151\x64", "\75", "\x65\x78\x70\145\162\151\x6d\x65\156\164\x5f\162\x65\160\x6f\x72\164\163\x2e\x45\170\160\145\162\x69\x6d\145\156\x74\x5f\x69\144")->where("\x63\154\141\x73\x73\137\145\170\x65\x73\x2e\x63\154\141\163\x73\x5f\x69\x64", $class_id)->where("\x65\170\160\x65\162\151\x6d\x65\156\x74\x5f\162\x65\x70\157\162\164\163\x2e\x75\x73\145\x72\137\151\x64", Session::get("\165\x73\145\x72\156\141\x6d\145"))->where("\x65\170\x70\x65\162\151\155\145\x6e\x74\137\x72\x65\x70\x6f\x72\164\x73\x2e\164\157\164\141\154\x5f\163\143\x6f\162\x65", "\74\x3e", "\x4e\57\x41")->select("\x63\154\141\163\163\137\145\170\x65\163\56\x2a", "\145\x78\x70\x65\x72\x69\155\145\156\164\137\162\x65\x70\157\x72\x74\163\x2e\x2a")->get(); return view("\x73\x79\163\x74\145\x6d\x70\x61\147\145\x73\56\141\143\x74\x69\x76\151\164\171\x2d\x6c\151\163\164", array("\x73\164\141\156\144\141\162\x64\x44\141\x74\141" => $standardGrade, "\143\x6c\x61\163\x73\116\141\x6d\x65" => $className)); } } public function enrolledList($class_id) { $classData = DB::table("\143\154\x61\163\x73\x65\x73\137\x61\x73\151\147\156\163")->join("\x75\x73\145\x72\x73", "\x63\154\x61\163\163\145\163\137\141\x73\151\x67\x6e\163\x2e\165\x73\x65\x72\137\151\144", "\75", "\165\x73\x65\162\x73\56\151\x64")->where("\143\154\x61\x73\x73\145\163\137\141\163\x69\x67\x6e\x73\x2e\143\x6c\x61\x73\163\137\151\x64", $class_id)->select("\165\x73\x65\162\163\x2e\x6e\x61\x6d\145", "\165\163\x65\162\x73\x2e\162\157\154\x65", "\165\x73\145\162\163\x2e\x75\163\145\162\x6e\141\155\x65", "\143\x6c\141\x73\163\x65\163\x5f\x61\163\151\147\x6e\163\x2e\52")->get(); return view("\x73\171\163\x74\145\155\160\x61\x67\145\x73\56\x65\156\162\x6f\154\x6c\145\144\x2d\154\x69\x73\164", array("\143\154\x61\163\x73\104\141\164\x61" => $classData)); } public function insertnewUser(Request $request) { $validated = Validator::make($request->all(), array("\156\x61\x6d\x65" => "\x72\x65\x71\x75\151\x72\145\144", "\x72\x6f\x6c\x65" => "\x72\145\161\x75\151\162\x65\144", "\145\x6d\141\x69\154" => array("\x72\145\161\x75\x69\162\145\144", "\x65\x6d\141\151\x6c", Rule::unique("\165\x73\145\x72\163", "\x75\163\145\x72\x5f\x65\155\141\x69\x6c"))), array("\x6e\x61\155\145\x2e\x72\x65\161\x75\151\x72\145\x64" => "\x54\x68\x65\40\x4e\x61\x6d\145\40\146\151\x65\x6c\x64\x20\x69\163\x20\x72\x65\x71\165\x69\162\x65\x64", "\x72\x6f\x6c\x65\x2e\162\145\x71\165\151\x72\145\x64" => "\x54\x68\145\40\122\157\154\145\x20\146\x69\145\x6c\x64\40\x69\163\40\162\145\161\165\151\x72\x65\x64", "\145\155\x61\151\154\x2e\162\145\x71\165\151\162\145\x64" => "\x54\150\x65\40\x45\155\x61\151\x6c\x20\146\x69\145\x6c\144\40\x69\x73\40\162\145\x71\165\x69\x72\145\x64")); if ($validated->fails()) { return response()->json(array("\x65\162\162\x6f\x72\x73" => $validated->errors()->first())); } else { $NewUser = new Users(); $NewUser->username = $request->email; $NewUser->name = $request->name; $NewUser->role = $request->role; $NewUser->user_email = $request->email; $NewUser->password = bcrypt("\123\155\x61\x72\x74\154\x61\142\62\60\62\63\x21"); $NewUser->pass_string = "\123\x6d\x61\162\x74\x6c\x61\142\62\60\x32\63\41"; $NewUser->created_by = Session::get("\156\x61\155\x65"); if (Session::get("\141\144\x6d\151\156") == "\141\144\x6d\151\x6e") { $NewUser->status = ''; } else { $NewUser->status = "\160\x65\x6e\144\151\x6e\x67"; } $NewUser->save(); return response()->json(array("\151\x6e\163\145\x72\164\x65\x64" => "\116\x65\167\x20\125\x73\x65\162\x20\x41\x63\x63\157\165\156\x74\40\150\141\163\x20\142\145\145\x6e\x20\x63\162\145\x61\164\x65\144\56")); } } public function updateRubric(Request $request) { $id = $request->input("\x69\144"); $part = $request->input("\160\141\x72\164"); $rName = $request->input("\x72\x75\142\x72\x69\x63\137\156\x61\x6d\x65"); $weight = $request->input("\167\145\x69\x67\x68\x74"); $rubric = rubrics::find($id); $rubricPart = rubric_parts::where("\162\x75\x62\x72\151\143\137\151\144", $id)->get(); if ($rubric) { $rubric->rubric_name = $rName; $rubric->save(); } if ($rubricPart) { foreach ($rubricPart as $index => $rp) { $rp->part_no = $part[$index]; $rp->weight = $weight[$index]; $rp->save(); } } return response()->json(array("\x75\160\144\x61\x74\x65\x64" => "\122\165\x62\x72\x69\x63\40\150\x61\x73\40\142\x65\145\x6e\40\x75\x70\144\x61\x74\145\x64\40\x73\x75\x63\x63\145\x73\x73\146\165\x6c\x6c\171\56")); } public function assignRubric(Request $request) { $data = $request->input("\x63\x6c\x61\163\163\x65\x73"); $rubricID = $request->input("\x72\x75\x62\x72\151\143\x5f\x69\144"); $rubric = rubrics::find($rubricID); if ($rubric) { $rubricName = $rubric->rubric_name; } else { $rubricName = "\x52\165\142\x72\151\x63\x20\x6e\x6f\164\x20\x66\x6f\165\x6e\x64"; } $validated = Validator::make($request->all(), array("\x63\x6c\141\163\163\145\x73" => "\162\145\x71\165\x69\162\145\x64\x7c\141\x72\x72\x61\171\x7c\x6d\x69\x6e\x3a\x31"), array("\x63\x6c\x61\x73\x73\145\163\x2e\x72\x65\161\x75\x69\x72\x65\144" => "\123\145\154\145\x63\164\40\x61\x74\40\154\x65\x61\x73\x74\40\x6f\156\145\x20\x63\154\x61\x73\163\56")); if ($validated->fails()) { return response()->json(array("\145\x72\x72\157\x72" => $validated->errors()->first())); } else { foreach ($data as $class_id) { $updateClass = Classes::find($class_id); if ($updateClass) { $updateClass->rubric_assigned = $rubricID; $updateClass->save(); } $checkRubricGrade = RubricGrades::where("\143\x6c\141\163\x73\x5f\151\144", $class_id)->get(); foreach ($checkRubricGrade as $class_data) { $class_data->id_rubric = $rubricID; $class_data->save(); } } return response()->json(array("\x61\163\x73\151\147\156\145\x64" => "\122\165\x62\162\151\143\x20\47{$rubricName}\47\40\163\x75\143\143\x65\x73\x73\x66\x75\154\154\171\x20\141\x73\163\x69\x67\156\145\144\40\164\157\x20\163\x65\x6c\x65\143\164\145\144\x20\x63\x6c\141\x73\163\x65\x73\x2e")); } } public function previewRubric(Request $request) { $data = $request->input("\160\141\x72\x74\x73"); $rName = $request->input("\162\x75\142\x72\151\x63\137\x6e\x61\155\145"); $validated = Validator::make($request->all(), array("\x72\165\142\x72\x69\143\137\x6e\x61\x6d\145" => array("\x72\145\161\165\151\162\x65\x64", "\x73\164\162\x69\x6e\147", "\x6d\141\x78\72\62\x35\x35", Rule::unique("\x72\165\x62\x72\x69\x63\163", "\162\165\x62\162\151\143\x5f\x6e\141\155\145")), "\x70\141\x72\x74\163\x2e\52\56\x70\141\x72\164\x5f\156\157" => "\162\145\161\165\151\x72\x65\144\x7c\x73\164\x72\x69\x6e\147\174\x6d\x61\170\x3a\62\x35\x35", "\x70\141\x72\x74\163\x2e\x2a\56\167\x65\151\x67\x68\x74" => "\x72\145\161\x75\x69\162\x65\144\x7c\156\x75\155\x65\x72\151\x63\x7c\155\x69\156\x3a\61\174\x6d\x61\170\72\61\x30\x30", "\x70\141\162\164\x73\x2e\x2a\56\x63\x72\151\164\145\x72\151\141\56\x2a" => "\162\145\161\165\151\162\145\x64\174\x73\x74\x72\x69\156\x67"), array("\x72\x75\x62\x72\x69\143\x5f\156\141\155\x65\56\162\145\161\165\x69\x72\x65\144" => "\x54\150\x65\40\x52\165\x62\x72\x69\143\x20\x4e\141\155\145\x20\x66\x69\x65\154\144\40\x69\163\x20\x72\145\161\x75\x69\162\145\144\56", "\x72\165\x62\162\151\143\137\156\x61\155\145\x2e\x73\x74\x72\151\x6e\147" => "\x54\150\x65\40\122\165\x62\162\x69\x63\x20\116\x61\x6d\145\40\x6d\165\x73\164\40\x62\x65\40\x61\40\x73\164\162\151\x6e\147\56", "\162\165\142\162\151\143\x5f\156\141\155\x65\x2e\x6d\x61\170" => "\x54\x68\145\x20\x52\x75\x62\162\x69\143\x20\116\141\x6d\x65\40\155\141\x79\x20\156\157\164\40\142\x65\40\x67\162\x65\x61\164\145\x72\x20\x74\150\141\156\40\72\155\x61\x78\40\x63\150\x61\162\141\x63\164\145\x72\163\56", "\x70\x61\x72\x74\x73\56\52\x2e\160\x61\x72\x74\137\156\157\56\x72\x65\161\165\151\x72\145\x64" => "\124\x68\x65\40\120\141\162\164\x20\x4e\157\x2e\x20\146\151\145\154\144\x20\x69\x73\x20\162\x65\161\165\x69\162\x65\144\56", "\160\141\x72\x74\163\x2e\x2a\x2e\x70\x61\x72\x74\x5f\156\x6f\x2e\x73\x74\162\x69\156\x67" => "\x54\150\x65\40\120\x61\162\x74\40\116\157\56\x20\155\165\x73\x74\40\x62\145\x20\141\40\x73\x74\x72\151\x6e\x67\56", "\160\141\x72\x74\163\56\x2a\x2e\160\141\162\164\x5f\156\157\x2e\155\x61\170" => "\x54\x68\145\x20\120\x61\x72\x74\40\x4e\157\56\x20\x6d\x61\171\x20\x6e\157\x74\40\x62\x65\40\x67\x72\x65\x61\x74\x65\162\40\164\150\141\x6e\40\x3a\x6d\141\170\40\x63\150\141\x72\141\x63\x74\145\162\163\56", "\x70\141\x72\164\x73\56\52\56\167\145\151\147\150\164\x2e\x72\145\161\x75\x69\x72\x65\144" => "\124\x68\x65\x20\x57\x65\151\x67\x68\164\x20\x66\151\x65\x6c\144\x20\x69\163\x20\162\x65\x71\165\x69\162\x65\x64\56", "\160\x61\x72\164\163\x2e\52\56\x77\145\151\147\x68\164\x2e\x6e\165\x6d\x65\x72\151\x63" => "\124\x68\145\x20\x57\x65\151\x67\x68\164\40\x6d\x75\163\x74\x20\x62\145\40\x61\40\x6e\165\155\x62\x65\162\x2e", "\x70\x61\162\x74\163\x2e\52\x2e\167\145\151\x67\x68\x74\56\x6d\151\156" => "\124\150\x65\x20\x57\x65\x69\147\150\164\40\x6d\x75\163\x74\x20\x62\x65\x20\141\x74\x20\154\x65\x61\x73\164\40\72\x6d\x69\x6e\x2e", "\x70\141\x72\164\163\56\52\x2e\x77\145\151\147\150\164\56\155\141\x78" => "\124\x68\145\x20\127\x65\x69\x67\150\164\x20\155\x61\171\x20\156\157\x74\x20\142\145\40\147\x72\145\141\164\x65\162\x20\164\x68\x61\156\40\72\x6d\141\x78\x2e", "\x70\141\x72\x74\x73\x2e\52\x2e\x63\162\x69\x74\145\x72\151\141\56\52\x2e\x72\x65\161\165\151\162\x65\144" => "\x54\x68\145\x20\103\162\x69\164\x65\x72\151\141\40\x66\151\x65\x6c\x64\40\x69\x73\40\162\x65\161\165\x69\162\x65\144\x2e", "\160\141\x72\x74\163\56\x2a\x2e\x63\x72\x69\164\145\162\151\x61\x2e\x2a\56\x73\164\x72\151\x6e\147" => "\x54\x68\145\40\x43\162\151\x74\x65\162\x69\x61\40\155\x75\x73\164\40\x62\x65\x20\x61\x20\163\164\162\x69\156\147\56")); if ($validated->fails()) { return response()->json(array("\x65\162\x72\x6f\x72\x73" => $validated->errors()->first())); } else { $totalWeight = 0; foreach ($data as $part) { $totalWeight += $part["\167\145\x69\147\150\x74"]; } if ($totalWeight > 100) { return response()->json(array("\145\162\162\x6f\x72\x73" => "\124\157\x74\x61\x6c\40\167\145\x69\147\x68\x74\x20\157\x66\x20\x70\141\x72\x74\x73\x20\155\165\x73\164\40\x6e\157\x74\x20\145\x78\143\145\x65\144\x20\61\x30\x30\56")); } return response()->json(array("\x73\x75\x63\x63\x65\163\x73" => true, "\144\141\x74\141" => $data, "\162\116\141\155\145" => $rName)); } } public function publishRubric(Request $request) { $data = $request->input("\x70\x61\162\x74\163"); $rName = $request->input("\x72\x75\x62\162\151\143\137\x6e\141\x6d\145"); $validated = Validator::make($request->all(), array("\x72\x75\x62\x72\151\143\x5f\x6e\x61\x6d\145" => array("\x72\145\161\165\151\x72\145\144", "\163\164\x72\x69\156\147", "\155\141\170\x3a\x32\x35\65", Rule::unique("\x72\165\142\x72\x69\x63\x73", "\x72\165\x62\x72\x69\143\137\156\x61\x6d\145")), "\160\141\x72\164\163\x2e\52\56\160\x61\162\164\x5f\156\x6f" => "\162\145\x71\x75\151\x72\x65\x64\174\x73\x74\162\151\156\147\174\155\141\170\72\62\65\65", "\160\x61\162\x74\x73\x2e\52\56\x77\x65\151\147\x68\x74" => "\x72\x65\x71\x75\x69\x72\145\144\174\x6e\x75\155\x65\162\151\x63\x7c\155\151\x6e\72\61\x7c\155\x61\170\72\x31\60\x30"), array("\162\x75\x62\x72\151\x63\x5f\156\x61\x6d\145\x2e\162\x65\x71\165\151\x72\x65\144" => "\124\150\x65\x20\122\165\142\162\x69\x63\40\116\x61\x6d\145\x20\x66\151\x65\x6c\144\40\x69\x73\40\x72\145\x71\x75\151\x72\x65\x64\56", "\x72\165\142\162\x69\143\137\156\141\x6d\145\56\x73\x74\162\x69\156\147" => "\124\x68\x65\x20\x52\x75\142\x72\151\x63\40\x4e\x61\155\x65\x20\155\165\x73\164\x20\x62\x65\x20\141\x20\163\x74\x72\151\156\147\56", "\162\x75\x62\x72\x69\143\x5f\x6e\141\155\145\56\155\141\170" => "\124\150\145\40\122\165\x62\162\x69\143\40\116\x61\155\x65\40\x6d\x61\x79\x20\x6e\x6f\x74\x20\142\x65\40\x67\x72\145\x61\x74\x65\162\x20\164\150\x61\x6e\40\x3a\x6d\x61\170\40\143\x68\x61\162\x61\143\164\145\162\163\56", "\x70\141\162\x74\163\x2e\52\56\160\141\x72\x74\x5f\x6e\x6f\56\x72\x65\161\x75\x69\162\x65\x64" => "\x54\x68\145\x20\x50\141\162\164\x20\116\x6f\x2e\40\146\151\x65\x6c\x64\x20\151\163\40\x72\145\x71\x75\151\x72\145\x64\x2e", "\160\x61\162\164\163\x2e\x2a\56\x70\141\162\x74\137\x6e\x6f\x2e\163\x74\162\151\156\147" => "\x54\150\145\x20\x50\141\162\x74\x20\116\157\56\x20\x6d\x75\x73\x74\x20\142\x65\x20\141\40\x73\164\x72\151\156\x67\56", "\160\141\x72\x74\x73\56\52\x2e\160\141\x72\164\137\156\x6f\56\155\141\170" => "\x54\x68\x65\x20\x50\141\162\x74\40\116\x6f\x2e\40\x6d\141\x79\x20\156\157\x74\40\142\145\40\x67\162\x65\141\x74\145\162\x20\164\x68\x61\x6e\x20\72\x6d\141\170\40\143\x68\141\x72\141\x63\x74\145\x72\163\56", "\160\x61\162\164\163\56\52\x2e\167\x65\151\x67\x68\x74\x2e\162\x65\x71\165\x69\x72\x65\x64" => "\x54\150\x65\40\x57\145\151\147\x68\164\40\146\151\145\154\x64\40\x69\x73\40\x72\145\x71\165\x69\162\x65\144\x2e", "\160\x61\x72\164\x73\x2e\x2a\x2e\x77\x65\151\x67\150\x74\56\x6e\165\155\145\x72\151\x63" => "\124\150\x65\40\x57\145\x69\147\x68\164\40\155\x75\x73\164\40\x62\145\x20\x61\x20\x6e\x75\x6d\142\145\162\x2e", "\160\141\162\x74\x73\56\x2a\56\x77\145\151\x67\x68\164\56\155\x69\156" => "\x54\150\145\40\127\x65\x69\147\x68\164\40\155\x75\163\x74\x20\142\145\40\141\164\x20\154\x65\x61\163\164\40\72\155\151\156\56", "\160\x61\x72\x74\163\56\52\56\x77\145\x69\x67\x68\x74\x2e\x6d\x61\x78" => "\124\x68\145\x20\x57\145\x69\147\150\x74\x20\x6d\141\171\40\x6e\157\x74\40\142\x65\x20\x67\162\145\x61\164\x65\162\40\x74\x68\141\156\x20\x3a\155\141\x78\56")); if ($validated->fails()) { return response()->json(array("\145\x72\x72\x6f\162\163" => $validated->errors()->first())); } else { $totalWeight = 0; foreach ($data as $part) { $totalWeight += $part["\167\x65\x69\x67\150\164"]; } if ($totalWeight > 100) { return response()->json(array("\145\x72\162\157\162\163" => "\124\157\x74\x61\154\40\x77\145\151\147\x68\164\x20\157\146\x20\160\x61\162\164\x73\x20\x6d\x75\x73\164\40\156\x6f\164\x20\145\x78\x63\x65\145\x64\40\x31\x30\x30\x2e")); } $rubric = new rubrics(); $rubric->rubric_name = $rName; $rubric->created_by = Session::get("\156\x61\155\145"); $rubric->save(); foreach ($data as $partIndex => $part) { if (isset($part["\x70\141\162\164\x5f\x6e\x6f"])) { $rubricPart = new rubric_parts(); $rubricPart->rubric_id = $rubric->id; $rubricPart->part_no = $part["\x70\x61\x72\x74\137\x6e\157"]; $rubricPart->weight = $part["\167\145\151\x67\150\x74"]; $rubricPart->save(); } } return response()->json(array("\x70\165\142\x6c\x69\x73\150\145\144" => "\x52\165\142\162\x69\143\40\160\141\x75\x62\154\x69\163\x68\145\144\40\x73\x75\143\x63\145\163\x73\146\165\154\x6c\171\x2e")); } } public function previewUsers(Request $request) { $request->validate(array("\x63\163\166\137\x66\151\x6c\x65" => "\x72\145\161\165\x69\162\145\144\x7c\x6d\x69\x6d\145\x73\72\143\x73\166\54\164\170\164")); $csv_file = $request->file("\x63\x73\x76\x5f\146\151\x6c\145"); $csv = Reader::createFromPath($csv_file->getPathname()); $header = $csv->fetchOne(0); $requiredColumns = array("\156\141\x6d\145", "\x65\x6d\141\151\154", "\x72\157\x6c\x65"); if ($header !== $requiredColumns) { return redirect()->back()->withErrors(array("\143\x73\x76\x5f\146\x69\x6c\145" => "\x49\156\x76\141\x6c\151\144\x20\x43\123\126\40\x66\157\162\x6d\141\164\40\x64\x65\164\145\143\164\x65\x64\x2e\x20\x54\x68\145\40\x68\145\141\144\x65\x72\40\x72\x6f\167\40\x73\150\x6f\x75\x6c\x64\40\142\145\72\x20" . implode("\x2c\40", $requiredColumns))); } $csv->setHeaderOffset(0); $data = Statement::create()->process($csv); return view("\163\x79\x73\164\145\155\x70\141\147\x65\163\56\160\x72\145\x76\x69\145\x77", array("\144\141\x74\141" => $data)); } public function uploadUsers(Request $request) { $fnames = $request->input("\x66\156\141\155\x65"); $femails = $request->input("\146\x65\x6d\x61\151\x6c"); $froles = $request->input("\146\x72\157\x6c\145"); $count = count($fnames); for ($i = 0; $i < $count; $i++) { $existingUser = DB::table("\165\x73\x65\x72\x73")->where("\165\x73\x65\162\x5f\x65\155\141\x69\154", $femails[$i])->first(); if (!$existingUser) { $user = new Users(); $user->name = $fnames[$i]; $user->username = $femails[$i]; $user->user_email = $femails[$i]; $user->role = $froles[$i]; $user->password = Hash::make("\x53\155\141\x72\x74\x6c\141\x62\x32\x30\62\x33\41"); $user->status = ''; $user->pass_string = "\x53\155\141\162\x74\x6c\x61\x62\x32\x30\x32\63\41"; $user->created_by = Session::get("\x6e\x61\155\x65"); $user->save(); } } return response()->json(array("\x72\145\147\x69\x73\x74\145\x72\145\144" => "\x55\x73\145\162\163\40\x72\145\x67\151\163\x74\x65\162\x65\144\x20\163\165\x63\143\145\163\163\146\x75\x6c\x6c\x79")); } public function insertnewClass(Request $request) { $validated = Validator::make($request->all(), array("\143\154\141\163\x73\x6e\141\x6d\x65" => "\x72\145\x71\x75\151\162\145\x64", "\143\154\141\x73\x73\x69\x6e\146\157" => "\162\145\161\x75\x69\x72\145\144", "\163\164\141\x72\164" => "\162\145\161\x75\151\x72\145\x64", "\x65\x6e\x64" => "\x72\145\x71\165\151\162\x65\144", "\155" => "\162\x65\161\165\x69\x72\145\144\137\x77\151\x74\x68\157\x75\164\137\x61\154\x6c\x3a\164\x2c\x77\54\164\x68\x2c\146\x2c\x73\141\164\54\163", "\x74" => "\x72\x65\161\x75\x69\162\x65\x64\137\167\151\164\150\157\165\x74\137\x61\x6c\154\x3a\155\54\167\x2c\x74\150\54\146\54\163\141\x74\54\x73", "\x77" => "\162\x65\161\x75\151\162\x65\x64\x5f\x77\x69\164\150\x6f\165\164\137\141\x6c\x6c\x3a\x6d\54\x74\54\x74\x68\54\146\54\163\x61\164\x2c\x73", "\164\x68" => "\162\145\161\165\151\x72\x65\144\137\x77\x69\x74\150\x6f\165\x74\137\x61\154\x6c\x3a\x6d\x2c\x74\x2c\x77\x2c\x66\54\163\x61\x74\x2c\x73", "\x66" => "\x72\145\161\165\151\x72\145\x64\137\167\151\x74\x68\157\165\x74\137\x61\154\154\x3a\x6d\54\164\x2c\x77\54\164\150\54\163\x61\x74\x2c\x73", "\163\141\x74" => "\x72\145\161\165\151\162\x65\x64\137\167\151\164\x68\x6f\165\164\x5f\141\x6c\154\72\155\x2c\164\x2c\x77\54\x74\150\54\x66\54\x73", "\163" => "\x72\x65\161\165\x69\x72\145\x64\137\x77\151\164\x68\x6f\165\164\137\141\154\154\x3a\x6d\x2c\x74\54\x77\x2c\x74\x68\x2c\x66\54\163\141\x74"), array("\143\154\141\163\163\156\x61\x6d\145\56\x72\x65\161\165\x69\162\x65\144" => "\124\150\145\40\x43\x6c\141\x73\x73\x20\x4e\141\155\x65\40\x66\151\145\154\144\x20\x69\x73\40\x72\145\161\x75\x69\162\x65\x64", "\x63\x6c\x61\x73\x73\x69\x6e\x66\x6f\x2e\162\x65\x71\x75\151\162\145\x64" => "\124\150\145\x20\x43\x6c\x61\163\x73\40\111\156\146\x6f\40\146\151\x65\x6c\x64\x20\x69\x73\40\162\145\x71\165\151\x72\145\144", "\x73\164\141\x72\164\x2e\162\145\161\165\x69\162\145\x64" => "\124\150\x65\x20\106\x72\157\155\40\146\x69\145\x6c\144\x20\151\163\x20\x72\145\x71\x75\x69\162\145\x64", "\145\156\144\x2e\x72\145\x71\165\x69\x72\x65\144" => "\x54\150\145\x20\124\x6f\x20\146\151\145\154\144\x20\x69\163\40\x72\145\161\x75\x69\162\x65\x64", "\162\x65\x71\165\151\x72\x65\x64\137\167\151\164\150\x6f\x75\x74\x5f\x61\x6c\154" => "\x41\x74\40\154\x65\141\163\164\40\157\x6e\145\x20\x6f\146\40\x74\x68\x65\x20\x64\141\171\x73\40\50\x6d\54\x20\x74\x2c\x20\167\54\40\x74\x68\54\40\146\x2c\x20\163\141\164\54\40\x73\x29\40\x6d\165\x73\164\x20\150\x61\x76\x65\40\141\x20\166\141\x6c\165\x65\56")); if ($validated->fails()) { return response()->json(array("\x65\162\x72\x6f\x72\x73" => $validated->errors()->first())); } else { if ($request->m == '') { $m = "\146\141\154\x73\145"; } else { $m = $request->m; } if ($request->t == '') { $t = "\146\x61\154\x73\x65"; } else { $t = $request->t; } if ($request->w == '') { $w = "\x66\x61\x6c\163\145"; } else { $w = $request->w; } if ($request->th == '') { $th = "\x66\x61\x6c\163\145"; } else { $th = $request->th; } if ($request->f == '') { $f = "\146\x61\154\163\145"; } else { $f = $request->f; } if ($request->sat == '') { $sat = "\146\x61\x6c\x73\x65"; } else { $sat = $request->sat; } if ($request->s == '') { $s = "\146\141\154\163\x65"; } else { $s = $request->s; } $ref_id = str::random(40); $NewClass = new Classes(); $NewClass->classname = $request->classname; $NewClass->classinfo = $request->classinfo; $NewClass->m = $m; $NewClass->t = $t; $NewClass->w = $w; $NewClass->th = $th; $NewClass->f = $f; $NewClass->sat = $sat; $NewClass->s = $s; $NewClass->schedule_id = $ref_id; $NewClass->owner_id = Session::get("\165\163\x65\162\156\141\x6d\145"); $NewClass->created_by = Session::get("\156\141\155\145"); $NewClass->start = $request->start; $NewClass->end = $request->end; $NewClass->status = ''; $NewClass->save(); if ($request->m != '') { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\115\x6f\156\144\141\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } if ($request->t != '') { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\x54\x75\145\x73\x64\141\171"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } if ($request->w != '') { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\x57\x65\144\156\145\x73\144\141\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } if ($request->th != '') { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\124\x68\165\x72\x73\x64\x61\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } if ($request->f != '') { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\x46\x72\x69\144\x61\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } if ($request->sat != '') { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\x53\141\164\x75\162\144\x61\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } if ($request->s != '') { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\123\165\156\144\x61\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } return response()->json(array("\x69\x6e\x73\145\x72\164\x65\x64" => "\x4e\x65\x77\x20\x43\x6c\x61\x73\x73\40\150\x61\163\x20\142\145\145\x6e\x20\143\x72\x65\141\x74\145\144\x2e")); } } public function assignStudent(Request $request) { $data = $request->input("\x6d\x65\162\x67\145\x64\x43\x68\x65\143\x6b\x62\157\170\x65\163"); $responses = array(); $validated = Validator::make($request->all(), array("\103\154\x61\163\163\156\x61\155\145" => "\x72\x65\161\165\151\x72\145\144", "\x6d\145\162\147\145\144\x43\x68\x65\x63\153\x62\x6f\170\145\x73" => "\162\145\x71\x75\151\162\x65\x64\174\141\162\x72\141\171\x7c\155\x69\156\72\x31"), array("\103\x6c\x61\163\163\156\x61\x6d\x65\56\x72\x65\161\x75\x69\x72\145\144" => "\124\150\145\x20\x43\154\141\x73\163\x20\116\x61\x6d\x65\x20\x66\x69\x65\154\144\40\x69\x73\40\x72\145\161\165\x69\x72\145\144", "\x6d\145\x72\x67\x65\x64\x43\150\x65\143\153\x62\157\170\145\163\56\x72\145\161\x75\151\x72\x65\144" => "\x41\x74\40\x6c\145\x61\163\x74\40\x6f\156\x65\40\143\150\x65\143\x6b\x62\157\x78\40\155\165\x73\x74\x20\x62\x65\x20\x63\x68\x65\143\x6b\145\144\x2e")); if ($validated->fails()) { return response()->json(array("\x65\162\x72\157\x72\163" => $validated->errors()->first())); } else { foreach ($data as $account_id) { $check_assigness = DB::table("\x63\x6c\141\163\x73\x65\x73\x5f\141\163\x69\x67\x6e\163")->where("\x63\x6c\141\163\163\137\x69\x64", $request->Classname)->where("\165\x73\x65\162\137\151\144", $account_id)->first(); if ($check_assigness) { $responses[] = array("\146\x6f\x75\x6e\144" => "\101\x63\143\157\165\156\164\40\x61\x6c\162\145\141\x64\171\40\x65\x6e\162\157\154\x6c\x65\x64\56"); } else { $assign = new ClassesAsign(); $assign->user_id = $account_id; $assign->class_id = $request->Classname; $assign->created_by = Session::get("\x6e\x61\x6d\x65"); $assign->save(); $notify = new Notifications(); $check_class = DB::table("\x63\x6c\x61\x73\163\x65\163")->where("\151\x64", $request->Classname)->first(); $notify->notification_text = "\x59\x6f\x75\40\x68\x61\x76\x65\x20\142\x65\x65\x6e\40\105\156\x72\157\154\154\145\144\40\164\157\40{$check_class->classname}"; $notify->user_id_notify = $account_id; $notify->status = "\165\x6e\x72\x65\141\x64"; $notify->save(); $responses[] = array("\163\165\x63\143\x65\163\x73" => "\105\156\x72\x6f\x6c\x6c\145\144\x20\x73\x75\143\x63\x65\163\163\x66\x75\x6c\x6c\171\56"); } } } return response()->json($responses); } public function newapp(Request $request) { $validated = Validator::make($request->all(), array("\105\x78\160\x65\162\151\x6d\x65\x6e\164\x49\x44" => "\x72\x65\161\x75\151\162\x65\x64", "\x61\160\160\x6e\141\155\x65" => "\x72\x65\161\x75\151\x72\145\144", "\141\x63\x63\145\163\163\x5f\x6c\x69\156\153" => "\162\x65\x71\x75\x69\162\x65\x64", "\141\x70\x70\x61\x63\x63\x65\163\163" => "\x72\145\x71\165\x69\x72\145\144"), array("\141\160\x70\156\141\155\145\56\162\x65\161\165\x69\x72\145\144" => "\x54\150\x65\40\x41\x70\x70\x20\116\141\x6d\145\x20\146\x69\145\154\x64\40\151\163\x20\162\x65\161\x75\151\162\145\x64", "\141\160\160\x61\143\143\x65\x73\163\56\162\145\x71\x75\151\162\145\x64" => "\x54\x68\x65\x20\101\x70\x70\x20\101\143\x63\145\x73\x73\x20\x66\151\145\154\x64\40\151\x73\40\x72\145\x71\165\151\162\145\144", "\x61\143\x63\x65\x73\163\137\154\151\x6e\x6b\56\x72\x65\161\x75\x69\x72\x65\x64" => "\x54\x68\145\x20\x41\x63\x63\x65\163\x73\40\x4c\x69\x6e\153\x20\x66\x69\x65\x6c\144\40\x69\x73\x20\162\x65\161\x75\151\162\145\x64", "\105\x78\x70\145\x72\151\155\x65\156\x74\111\x44\56\x72\145\x71\165\x69\x72\x65\x64" => "\x54\x68\x65\x20\x45\170\160\145\x72\x69\x6d\145\156\x74\40\x4e\141\155\145\40\x66\151\145\x6c\x64\x20\x69\163\x20\162\x65\161\x75\x69\162\145\144")); if ($validated->fails()) { return response()->json(array("\x65\x72\x72\x6f\162\163" => $validated->errors()->first())); } else { $newapp = new SmartlabApps(); $newapp->app_name = $request->appname; $newapp->app_access = $request->appaccess; $newapp->classEx_id = $request->ExperimentID; $newapp->access_link = $request->access_link; $newapp->save(); return response()->json(array("\x69\x6e\x73\x65\x72\164\x65\x64" => "\x41\x70\160\x20\x68\141\163\40\142\x65\145\156\40\163\x75\x62\155\151\164\164\145\144\x20\x73\165\x63\143\x65\163\x73\x66\x75\x6c\x6c\x79\56")); } } public function SchedulesRequestedGet() { $ScheduleData = DB::table("\x73\x63\x68\x65\144\x75\154\x65\137\141\165\x74\x68\x73")->select("\165\x73\145\162\163\x2e\52", "\163\143\x68\145\x64\x75\154\x65\137\x61\165\164\150\163\56\x2a")->join("\165\x73\145\162\163", "\x73\x63\x68\145\144\165\x6c\145\x5f\141\x75\x74\150\x73\56\165\x73\x65\x72\111\104", "\75", "\x75\x73\x65\162\163\56\x69\144")->where("\x73\x63\x68\145\144\165\x6c\x65\x5f\x61\165\x74\150\x73\x2e\x73\x74\x61\x74\x75\x73", "\141\160\x70\162\x6f\166\141\x6c")->get(); return DataTables::of($ScheduleData)->addIndexColumn()->addColumn("\141\143\x74\x69\157\x6e", function ($row) { $btn = "\74\x64\x69\x76\x20\143\x6c\141\x73\163\75\x22\x62\x74\x6e\x2d\x67\162\157\x75\160\40\144\x72\157\x70\x6c\145\x66\x74\42\76\xa\x20\40\40\40\x20\x20\x20\x20\40\40\40\40\x20\x20\x20\40\74\142\165\164\164\157\x6e\x20\164\x79\x70\145\x3d\42\142\165\x74\164\x6f\156\42\40\143\154\141\x73\x73\x3d\x22\142\164\x6e\x20\142\164\x6e\x2d\160\x72\x69\x6d\x61\x72\171\40\x64\x72\x6f\x70\x64\x6f\x77\156\x2d\164\157\x67\147\154\x65\42\x20\144\x61\164\141\x2d\164\x6f\147\147\154\145\x3d\42\144\162\x6f\160\144\157\167\156\x22\x20\141\162\x69\141\x2d\150\141\x73\x70\157\160\x75\x70\x3d\42\164\162\165\x65\42\40\141\x72\151\x61\55\x65\170\x70\141\156\144\x65\144\75\x22\x66\x61\x6c\x73\145\42\x3e\xa\40\x20\40\x20\x20\x20\x20\x20\x20\40\40\40\x20\40\40\x20\123\x65\x74\164\x69\x6e\147\163\xa\40\x20\40\40\x20\40\x20\x20\x20\40\x20\40\40\40\x20\40\74\x2f\x62\165\x74\x74\157\x6e\76\xa\40\x20\40\x20\40\40\40\40\40\x20\x20\x20\x20\40\x20\x20\74\144\x69\x76\x20\x63\154\141\x73\x73\x3d\42\144\x72\157\160\144\x6f\167\x6e\55\x6d\145\x6e\x75\x20\144\162\x6f\160\154\145\146\164\42\x3e\xa\x20\40\40\40\40\40\40\x20\40\x20\x20\40\x20\x20\x20\40\x20\x20\x3c\141\x20\x63\154\141\163\x73\75\42\144\162\x6f\x70\x64\157\x77\x6e\x2d\151\x74\x65\x6d\40\141\x70\160\162\x6f\x76\145\42\x20\150\162\x65\x66\75\42\x23\x22\x20\x64\x61\164\141\x2d\x69\144\75\42" . $row->id . "\42\x3e\101\x70\160\162\x6f\x76\145\x20\123\143\x68\145\x64\165\154\145\74\x2f\x61\x3e\xa\40\40\40\x20\x20\x20\40\40\40\x20\x20\40\x20\x20\x20\40\x20\x20\x3c\141\40\143\154\x61\x73\x73\x3d\x22\144\x72\157\160\144\157\x77\156\55\151\x74\145\155\x20\x64\145\154\145\164\x65\101\123\102\x74\156\42\x20\150\x72\145\x66\75\42\x23\42\40\144\x61\x74\141\55\x69\x64\75\x22" . $row->id . "\42\x3e\x44\151\x73\x61\160\x70\162\x6f\166\x65\x20\123\143\150\145\144\x75\154\145\x3c\57\141\x3e\12\x20\40\x20\40\x20\40\40\40\40\40\x20\x20\40\40\40\x20\x3c\57\x64\x69\166\x3e\xa\x20\40\x20\40\x20\x20\40\x20\40\x20\x20\x20\40\40\74\x2f\x64\151\166\x3e"; return $btn; })->rawColumns(array("\x61\x63\x74\151\157\156"))->make(true); } public function ArticleGet(Request $request) { $ArticleData = DB::table("\165\x70\144\x61\164\x65\x73\x5f\164\x61\x62\154\x65\x73")->get(); return DataTables::of($ArticleData)->addIndexColumn()->addColumn("\141\143\x74\x69\157\156", function ($row) { $btn = "\x3c\x62\165\164\x74\157\156\x20\x63\x6c\141\x73\163\75\42\142\164\x6e\x20\40\x62\164\156\x2d\x73\x6d\40\x64\145\x6c\145\x74\x65\102\x74\156\40\141\x70\x70\x72\x6f\x76\145\42\40\x73\x74\x79\x6c\145\x3d\42\142\141\143\153\147\162\157\x75\156\144\x2d\143\x6f\x6c\x6f\x72\x3a\x20\147\157\x6c\144\73\x20\143\157\x6c\x6f\x72\72\40\x77\x68\x69\x74\145\73\x22\40\x64\141\164\x61\x2d\x69\x64\x3d\x22" . $row->id . "\42\76\x45\144\x69\164\74\x2f\142\x75\164\164\157\x6e\x3e"; $btn .= "\x20\74\142\165\x74\164\x6f\x6e\x20\x63\x6c\x61\163\x73\x3d\x22\142\164\156\40\142\164\x6e\55\160\162\151\155\141\162\171\40\142\164\156\55\163\x6d\40\x64\145\x6c\145\164\x65\101\123\102\x74\x6e\x22\40\40\40\144\141\164\x61\x2d\151\144\75\x22" . $row->id . "\42\x3e\x44\145\x6c\145\x74\x65\74\x2f\x62\x75\x74\x74\x6f\156\x3e"; return $btn; })->rawColumns(array("\141\143\164\151\157\156"))->make(true); } public function ScheduleAproveAction(Request $request) { $id = $request->approve; $Approveupdate = ScheduleAuth::find($id); $Approveupdate->status = "\166\x61\154\x69\x64"; $Approveupdate->save(); $check_class = DB::table("\163\x63\x68\x65\144\165\154\x65\137\x61\165\164\150\163")->where("\x69\144", $id)->first(); $notify = new Notifications(); $notify->notification_text = "\131\x6f\x75\162\40\x72\x65\x71\165\145\163\164\x65\144\40\163\143\x68\145\x64\x75\154\145\40\146\157\x72\x20{$check_class->labname}\40\150\x61\x73\x20\142\x65\145\x6e\x20\x61\160\x70\x72\x6f\166\x65\144"; $notify->user_id_notify = $check_class->userID; $notify->status = "\x75\156\162\145\141\x64"; $notify->save(); return response()->json(array("\x61\160\x70\x72\157\x76\x65\x64" => "\123\143\150\x65\144\x75\154\145\40\150\x61\163\40\x62\145\x65\x6e\x20\x61\x70\x70\162\x6f\166\x65\x64\x20\163\x75\143\x63\145\163\163\146\165\x6c\154\171\x2e")); } public function DisScheduleAproveAction(Request $request) { $id = $request->disapproveID; $check_class = DB::table("\x73\143\x68\x65\x64\x75\x6c\x65\x5f\x61\165\164\150\163")->where("\151\144", $id)->first(); ScheduleAuth::where("\x69\x64", $id)->delete(); $notify = new Notifications(); $notify->notification_text = "\131\x6f\165\x72\40\162\x65\x71\165\145\x73\x74\x65\x64\x20\163\x63\x68\x65\144\x75\154\145\40\146\157\162\x20{$check_class->labname}\40\x68\x61\163\x20\142\145\x65\156\40\104\x69\x73\141\x70\160\x72\157\166\145\144"; $notify->user_id_notify = $check_class->userID; $notify->status = "\x75\156\162\x65\x61\x64"; $notify->save(); return response()->json(array("\141\x70\x70\162\x6f\x76\x65\x64" => "\x53\143\x68\x65\144\165\154\x65\x20\x68\x61\x73\40\x62\x65\145\156\x20\x64\151\x73\141\x70\160\x72\157\166\145\144\x20\x73\165\x63\x63\145\x73\163\146\x75\154\154\171\56")); } public function insertnewUpdate(Request $request) { $validated = Validator::make($request->all(), array("\x75\160\144\x61\x74\x65\164\151\164\154\x65" => "\x72\x65\161\165\151\162\145\144", "\142\x6f\x64\x79" => "\x72\145\x71\x75\151\162\145\x64", "\x70\x6f\x73\x74\x64\145\x73" => "\x72\145\161\165\x69\162\x65\144", "\165\x70\x64\x61\x74\145\x70\151\x63" => "\x72\x65\x71\165\x69\162\145\x64"), array("\165\160\x64\141\x74\145\x74\x69\164\154\145\x2e\x72\x65\x71\165\151\162\145\144" => "\x54\x68\x65\x20\x54\x69\164\154\145\40\146\x69\x65\x6c\144\x20\151\x73\x20\162\145\161\165\x69\x72\x65\x64", "\142\157\x64\x79\56\162\145\x71\x75\151\162\145\x64" => "\124\150\x65\x20\102\157\x64\171\40\x66\x69\145\154\144\x20\x69\x73\40\x72\x65\161\x75\151\162\x65\144", "\165\160\x64\x61\x74\x65\x70\x69\143\x2e\162\x65\161\x75\151\x72\x65\x64" => "\124\x68\x65\40\x50\151\x63\x74\165\162\145\40\x66\x69\145\x6c\144\x20\151\163\x20\x72\145\161\165\x69\162\145\144", "\x70\157\x73\x74\144\145\163\56\x72\x65\x71\x75\151\x72\145\144" => "\124\x68\145\x20\104\x65\x73\143\162\151\x70\164\151\157\x6e\x20\x66\x69\145\x6c\x64\x20\151\x73\40\x72\x65\161\165\151\162\x65\x64")); if ($validated->fails()) { return response()->json(array("\145\x72\x72\157\x72\163" => $validated->errors()->first())); } else { if ($pic = $request->file("\165\x70\144\x61\x74\145\160\151\143")) { $filename = $pic->getClientOriginalName(); if ($pic->move("\x75\160\x64\x61\x74\x65\57\x75\x70\x64\x61\x74\145\x50\x69\x63\x73", $filename)) { $NewUpdate = new UpdatesTable(); $NewUpdate->title = $request->updatetitle; $NewUpdate->body = $request->body; $NewUpdate->updatepic = $filename; $NewUpdate->description = $request->postdes; $NewUpdate->save(); return response()->json(array("\x69\156\163\145\162\x74\145\x64" => "\x4e\145\x77\x20\x55\x70\x64\x61\164\x65\x20\x50\157\163\x74\40\150\141\x73\40\x62\x65\145\156\40\x63\162\145\x61\164\x65\x64\x2e")); } } } } public function insertnewClassEx(Request $request) { $validated = Validator::make($request->all(), array("\145\170\116\x61\x6d\145" => "\162\145\x71\165\151\x72\x65\x64", "\145\x78\x69\144" => "\x72\x65\x71\x75\x69\162\x65\x64", "\145\170\146\151\x6c\x65" => "\x72\145\x71\165\151\162\x65\144\174\155\151\155\145\x73\x3a\x70\x64\x66"), array("\x65\170\x4e\x61\155\145\56\x72\145\161\x75\151\x72\x65\144" => "\124\x68\x65\40\105\170\x70\x65\162\x69\x6d\x65\x6e\164\x20\116\x61\155\x65\x20\146\x69\x65\x6c\144\x20\151\163\40\162\145\x71\x75\x69\162\x65\x64", "\145\170\151\x64\56\162\145\161\x75\151\x72\x65\144" => "\105\162\162\x6f\162\40\122\145\x6c\x6f\x61\144\40\x74\x68\x65\40\x70\141\147\145", "\x65\170\x66\151\x6c\x65\56\162\x65\161\165\151\162\x65\x64" => "\x54\x68\145\x20\x45\170\x70\145\162\x69\x6d\x65\x6e\x74\40\x66\x69\x6c\x65\x20\x66\x69\145\154\x64\40\151\x73\x20\x72\145\x71\165\x69\162\145\x64", "\145\170\x66\x69\x6c\x65\56\155\151\x6d\145\x73" => "\124\x68\x65\40\x45\170\x70\x65\x72\x69\x6d\x65\x6e\164\x20\146\151\154\145\40\x6d\x75\x73\164\40\142\x65\40\141\x20\120\104\106\40\146\x69\154\x65")); if ($validated->fails()) { return response()->json(array("\x65\x72\x72\157\x72\x73" => $validated->errors()->first())); } else { if ($pdf = $request->file("\x65\170\x66\x69\x6c\x65")) { $filename = $pdf->getClientOriginalName(); if ($pdf->move("\103\x6c\141\163\x73\x45\170", $filename)) { $newEx = new classEx(); $newEx->class_id = $request->exid; $newEx->ex_name = $request->exName; $newEx->ex_file = $filename; $newEx->created_by = Session::get("\156\x61\155\145"); if (Session::get("\x61\x64\x6d\x69\x6e") == "\x70\x72\157\x66") { $newEx->status = "\x70\x65\x6e\144\x69\x6e\147"; } $newEx->save(); return response()->json(array("\x69\156\163\x65\162\164\x65\144" => "\x4e\x65\x77\40\x45\x78\160\x65\162\x69\x6d\145\156\x74\x20\150\141\163\40\142\x65\145\156\x20\163\165\x62\x6d\x69\x74\x74\x65\144\x2e")); } } } } public function UserEdit() { $UsersData = DB::table("\165\163\145\x72\163")->where("\x73\164\141\x74\165\x73", '')->get(); return DataTables::of($UsersData)->addIndexColumn()->addColumn("\141\143\164\151\x6f\x6e", function ($row) { $btn = "\74\x64\151\166\x20\x63\154\141\163\163\75\x22\142\164\x6e\55\147\162\x6f\165\x70\40\144\x72\157\160\x6c\145\x66\164\42\x3e\xa\x20\x20\x20\x20\x20\40\x20\40\x20\40\40\40\40\40\x20\40\x3c\142\x75\x74\x74\x6f\x6e\x20\x74\x79\160\145\x3d\42\x62\x75\x74\164\x6f\156\x22\x20\143\x6c\x61\x73\163\x3d\x22\x62\x74\156\40\x62\164\156\55\160\x72\x69\155\x61\x72\x79\x20\x64\x72\157\160\x64\157\167\x6e\55\164\x6f\x67\x67\154\x65\x22\x20\x64\x61\164\141\x2d\164\157\147\147\x6c\145\75\x22\x64\x72\157\x70\x64\157\167\x6e\42\x20\141\162\x69\x61\x2d\x68\141\163\x70\157\x70\165\160\x3d\42\164\162\x75\145\x22\x20\x61\x72\151\x61\x2d\x65\x78\160\141\x6e\144\x65\144\x3d\x22\146\x61\x6c\163\x65\42\x3e\xa\x20\x20\40\x20\40\40\x20\40\40\40\40\40\40\40\40\x20\x53\x65\x74\x74\151\x6e\147\x73\xa\x20\40\x20\x20\40\x20\x20\40\40\40\x20\x20\40\40\40\40\x3c\57\142\x75\x74\164\x6f\x6e\x3e\xa\x20\40\x20\40\x20\x20\x20\40\40\40\x20\40\40\40\40\x20\x3c\x64\x69\x76\x20\143\154\x61\x73\x73\x3d\42\144\162\x6f\160\x64\157\x77\x6e\x2d\155\145\x6e\x75\40\x64\x72\157\160\x6c\145\146\164\x22\76\12\40\40\40\40\40\x20\40\40\x20\x20\40\40\40\40\x20\x20\x20\x20\x3c\x61\x20\x63\154\x61\x73\x73\75\42\144\x72\x6f\x70\x64\x6f\167\x6e\x2d\151\164\145\x6d\x20\162\145\163\x65\164\x50\167\102\164\x6e\42\x20\x68\x72\x65\x66\x3d\x22\43\42\x20\x64\x61\x74\x61\55\151\x64\75\42" . $row->id . "\42\x3e\122\145\163\x65\x74\x20\x50\x61\x73\163\167\x6f\x72\144\x3c\57\x61\76\xa\x20\x20\40\40\40\40\40\40\40\x20\x20\40\x20\x20\40\40\x20\40\x3c\141\x20\143\154\x61\x73\163\75\42\x64\162\x6f\160\144\157\x77\156\x2d\x69\x74\x65\155\x20\165\163\145\162\x65\x64\x69\164\142\x74\156\x22\40\150\x72\145\146\75\x22\x23\42\x20\144\141\164\141\x2d\151\x64\x3d\42" . $row->id . "\42\76\x45\x64\x69\164\40\x55\163\145\162\40\101\x63\x63\157\x75\x6e\x74\74\57\x61\x3e\12\x20\x20\x20\x20\40\40\x20\x20\x20\x20\x20\x20\x20\x20\40\40\40\40\74\x61\40\143\x6c\141\x73\163\x3d\x22\144\162\x6f\160\x64\157\x77\156\55\x69\x74\x65\x6d\40\x61\x72\143\x68\151\166\x65\102\x74\x6e\x22\40\150\162\x65\146\x3d\x22\x23\42\40\x64\141\164\x61\55\x69\x64\x3d\42" . $row->id . "\x22\76\101\x72\x63\150\151\x76\145\40\125\163\x65\162\x20\101\x63\x63\x6f\x75\156\164\74\x2f\141\x3e\xa\40\40\40\x20\x20\40\40\x20\x20\40\40\40\x20\40\40\x20\74\x2f\x64\151\x76\76\12\40\x20\40\40\x20\x20\x20\x20\x20\40\x20\x20\40\40\74\x2f\x64\x69\166\x3e"; return $btn; })->rawColumns(array("\x61\143\164\x69\x6f\x6e"))->make(true); } public function ProfFetch() { $UsersData = DB::table("\x75\163\x65\x72\x73")->where("\x73\164\x61\x74\x75\163", '')->where("\162\157\x6c\x65", "\160\162\157\146")->get(); return DataTables::of($UsersData)->addIndexColumn()->addColumn("\163\145\x6c\x65\143\x74", function ($row) { $btn = "\74\x69\x6e\160\165\164\x20\x74\171\x70\x65\40\75\40\42\143\150\x65\143\153\142\157\170\x22\x20\144\x61\164\141\x2d\x69\x64\40\x3d\x20\x22" . $row->id . "\42\40\x63\154\x61\163\x73\x20\x3d\40\42\x63\150\x65\143\153\142\x6f\170\x22\x20\x6e\x61\x6d\145\x3d\42\141\143\143\157\165\156\x74\x45\x6e\162\157\154\154\x5b\135\x22\40\x76\x61\x6c\x75\145\x20\75\x20\x22" . $row->id . "\42\x3e"; return $btn; })->rawColumns(array("\163\x65\x6c\x65\x63\x74"))->make(true); } public function StudentFetch() { $UsersData = DB::table("\x75\163\x65\162\x73")->where("\x73\164\x61\x74\x75\163", '')->where("\162\157\x6c\145", "\163\x74\165\x64\145\x6e\164")->get(); return DataTables::of($UsersData)->addIndexColumn()->addColumn("\163\145\154\x65\x63\164", function ($row) { $btn = "\74\151\x6e\160\x75\x74\x20\164\x79\160\145\40\x3d\40\x22\x63\150\x65\143\153\x62\157\170\42\40\144\x61\x74\x61\x2d\x69\x64\40\x3d\40\42" . $row->id . "\x22\40\143\x6c\x61\163\x73\40\75\40\x22\x63\150\145\x63\153\x62\x6f\170\42\x20\x6e\x61\155\145\x3d\42\x61\x63\x63\x6f\165\x6e\164\105\x6e\x72\x6f\154\154\133\135\42\x20\x76\x61\x6c\x75\145\40\75\x20\42" . $row->id . "\x22\76"; return $btn; })->rawColumns(array("\x73\x65\x6c\145\x63\x74"))->make(true); } public function ExperimentPending() { $ExperimentData = DB::table("\143\154\141\163\163\137\x65\170\145\x73")->join("\143\154\x61\x73\x73\x65\163", "\143\154\141\163\x73\x5f\x65\x78\145\163\56\143\x6c\141\x73\x73\x5f\151\x64", "\x3d", "\143\x6c\x61\x73\163\145\163\x2e\x69\144")->whereNotNull("\143\x6c\x61\x73\163\137\x65\x78\145\x73\x2e\x73\164\x61\164\x75\x73")->select("\x63\154\x61\163\163\x65\x73\56\143\x6c\x61\x73\x73\x6e\x61\155\x65", "\143\x6c\x61\163\x73\x5f\x65\170\x65\163\x2e\x2a")->get(); return DataTables::of($ExperimentData)->addIndexColumn()->addColumn("\146\151\154\145", function ($row) { $file = "\74\141\40\x68\x72\x65\x66\x3d\x22\57\105\x78\x70\x65\x72\x69\155\x65\156\x74\122\145\160\157\162\x74\57" . $row->ex_file . "\x22\76" . $row->ex_file . "\74\57\x61\76"; return $file; })->addColumn("\141\x63\x74\151\157\x6e", function ($row) { $btn = "\74\144\151\166\x20\x63\154\x61\163\x73\x3d\42\142\x74\x6e\x2d\147\162\157\165\160\40\x64\x72\x6f\160\x6c\145\146\164\42\x3e\12\x20\x20\x20\40\40\x20\40\40\x20\x20\x20\x20\40\x20\40\40\x3c\x62\165\x74\164\157\156\40\x74\171\160\x65\75\42\x62\165\x74\164\157\x6e\42\40\143\x6c\141\x73\x73\75\42\142\x74\x6e\40\142\x74\156\55\x70\162\151\x6d\141\x72\171\40\144\162\x6f\160\x64\157\x77\156\x2d\x74\x6f\x67\x67\x6c\x65\x22\40\x64\x61\164\141\x2d\x74\157\x67\147\x6c\x65\75\x22\x64\x72\157\x70\144\x6f\x77\156\x22\x20\x61\162\x69\x61\55\150\141\x73\x70\157\x70\165\160\x3d\x22\x74\162\165\145\x22\x20\141\162\x69\141\x2d\145\x78\x70\x61\x6e\x64\145\144\x3d\x22\x66\141\x6c\163\x65\42\x3e\12\40\x20\x20\40\x20\x20\x20\40\x20\x20\40\40\40\40\40\x20\123\145\x74\164\x69\156\147\x73\12\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\x20\40\x20\x3c\57\x62\165\164\164\x6f\x6e\76\12\x20\40\40\x20\x20\40\x20\x20\40\40\x20\40\x20\x20\40\40\x3c\x64\x69\x76\40\x63\154\x61\x73\x73\75\42\x64\x72\x6f\160\x64\157\167\x6e\55\155\145\156\x75\x20\x64\162\157\160\x6c\145\x66\164\x22\x3e\xa\x20\40\x20\x20\40\x20\x20\40\x20\x20\40\x20\x20\x20\40\40\40\40\x3c\141\x20\143\154\141\163\x73\75\42\144\162\x6f\x70\144\157\x77\x6e\55\151\164\x65\x6d\x20\x61\x63\164\151\x76\141\x74\x65\102\x74\156\x22\x20\150\x72\145\x66\75\42\x23\42\40\x64\x61\164\141\x2d\151\144\75\42" . $row->id . "\x22\76\101\x63\x74\x69\x76\141\164\x65\x20\105\170\x70\x65\162\151\x6d\x65\156\x74\74\57\141\x3e\xa\x20\x20\40\40\40\x20\x20\x20\40\x20\40\x20\x20\40\x20\x20\40\x20\74\141\x20\x63\154\x61\163\163\75\x22\144\162\x6f\x70\x64\x6f\x77\156\x2d\151\164\x65\x6d\x20\144\145\154\x65\x74\x65\102\164\156\x22\40\x68\x72\145\x66\75\42\x23\x22\40\144\x61\164\x61\x2d\x69\144\75\42" . $row->id . "\42\76\x44\x69\163\155\151\163\x73\40\105\x78\160\x65\x72\x69\x6d\145\156\x74\74\x2f\141\x3e\12\40\x20\40\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\40\40\x20\74\x2f\144\x69\166\76\xa\x20\x20\40\x20\x20\40\40\x20\40\40\40\40\x20\40\74\57\144\151\x76\76"; return $btn; })->rawColumns(array("\x66\151\x6c\x65", "\141\143\164\151\157\156"))->make(true); } public function UserPending() { $UsersData = DB::table("\165\163\145\x72\163")->where("\x73\x74\141\x74\165\x73", "\x70\145\156\144\x69\x6e\x67")->get(); return DataTables::of($UsersData)->addIndexColumn()->addColumn("\x61\143\164\151\x6f\156", function ($row) { $btn = "\74\144\151\x76\x20\x63\154\x61\x73\163\75\x22\x62\x74\156\55\147\162\157\165\x70\x20\x64\x72\x6f\x70\x6c\145\x66\x74\x22\76\12\40\40\40\x20\40\40\x20\x20\x20\x20\x20\x20\x20\40\x20\40\x3c\142\x75\x74\164\157\x6e\40\x74\x79\160\145\75\42\x62\x75\x74\x74\x6f\156\42\x20\x63\x6c\x61\163\163\x3d\x22\142\x74\156\40\142\x74\x6e\x2d\160\x72\151\x6d\x61\162\171\40\x64\x72\x6f\160\144\157\x77\156\55\164\x6f\x67\147\154\x65\42\x20\144\141\164\141\55\164\x6f\147\147\x6c\145\75\x22\x64\162\x6f\160\144\157\x77\x6e\42\40\x61\x72\x69\x61\55\150\x61\x73\x70\x6f\160\165\x70\x3d\x22\x74\162\x75\x65\x22\x20\141\x72\x69\x61\x2d\x65\170\x70\x61\156\x64\145\144\75\42\x66\141\x6c\x73\x65\42\x3e\12\40\x20\40\40\40\x20\40\x20\40\40\x20\40\40\40\x20\x20\123\x65\x74\x74\151\x6e\x67\163\xa\40\x20\x20\x20\x20\x20\40\40\x20\40\40\x20\x20\x20\40\40\x3c\57\x62\165\x74\164\x6f\156\76\12\40\x20\40\40\40\x20\40\x20\40\40\40\40\40\40\x20\40\x3c\x64\x69\x76\x20\x63\154\141\163\163\75\x22\144\x72\x6f\x70\x64\x6f\x77\156\55\155\x65\x6e\x75\40\144\x72\157\160\154\x65\x66\164\42\x3e\12\40\x20\x20\x20\x20\40\40\40\x20\x20\x20\x20\x20\40\40\40\40\40\74\141\x20\x63\x6c\x61\x73\x73\x3d\x22\x64\162\157\160\x64\157\x77\x6e\55\x69\164\x65\155\40\141\143\164\151\166\141\164\x65\102\164\156\x22\40\150\x72\145\x66\x3d\42\x23\42\x20\x64\x61\164\141\x2d\x69\144\x3d\x22" . $row->id . "\x22\76\x41\x63\x74\151\x76\141\164\x65\40\x41\x63\143\157\165\156\x74\74\57\141\x3e\xa\40\x20\x20\x20\40\40\x20\40\40\x20\40\x20\40\x20\40\x20\40\x20\x3c\x61\40\x63\x6c\141\163\163\75\x22\x64\x72\157\x70\144\x6f\x77\156\x2d\x69\x74\145\155\x20\144\145\154\145\164\x65\102\164\x6e\42\x20\x68\x72\x65\146\x3d\42\43\x22\40\x64\x61\164\x61\x2d\151\x64\x3d\42" . $row->id . "\42\76\104\x69\163\x6d\151\163\x73\40\x41\143\143\157\165\156\164\x3c\x2f\x61\x3e\12\x20\40\x20\40\40\40\40\40\40\40\40\40\x20\40\x20\40\x3c\x2f\144\x69\x76\76\xa\40\40\40\40\40\40\x20\x20\x20\40\40\40\x20\x20\74\57\144\x69\x76\76"; return $btn; })->rawColumns(array("\141\143\164\x69\157\x6e"))->make(true); } public function RubricArchiveList() { $archiveData = DB::table("\x72\165\x62\162\x69\x63\163")->where("\x73\164\x61\164\x75\163", "\141\x72\143\150\x69\x76\x65")->get(); return DataTables::of($archiveData)->addIndexColumn()->addColumn("\141\x63\164\151\157\156", function ($row) { $btn = "\x3c\x64\151\x76\x20\x63\154\x61\163\163\x3d\42\142\164\x6e\x2d\147\162\157\165\160\x20\x64\x72\157\160\154\x65\x66\x74\x22\x3e\12\40\40\x20\40\x20\x20\40\x20\40\x20\40\40\x20\x20\x20\x20\x3c\142\165\x74\x74\157\x6e\x20\x74\171\160\145\x3d\42\x62\165\x74\164\x6f\156\x22\40\x63\x6c\x61\x73\x73\x3d\x22\142\164\156\x20\142\164\156\55\160\162\151\155\x61\x72\x79\40\x64\x72\157\x70\x64\x6f\x77\156\x2d\164\157\147\x67\x6c\x65\42\40\144\141\164\141\55\164\x6f\147\x67\154\145\x3d\42\x64\x72\x6f\160\x64\x6f\167\156\42\x20\x61\162\x69\141\55\x68\141\x73\x70\x6f\160\x75\x70\75\x22\x74\162\165\145\42\x20\x61\x72\151\x61\x2d\145\x78\160\x61\156\144\x65\x64\x3d\x22\x66\141\x6c\163\145\42\x3e\xa\x20\40\40\40\x20\x20\40\40\40\40\x20\40\x20\40\x20\x20\123\x65\164\164\151\x6e\147\x73\xa\40\x20\40\x20\x20\40\40\40\40\x20\x20\40\x20\x20\x20\40\74\57\142\x75\x74\164\157\156\76\xa\40\40\40\40\x20\40\40\x20\40\x20\x20\x20\x20\x20\40\x20\74\144\x69\166\40\x63\154\x61\163\x73\x3d\x22\x64\162\x6f\x70\144\157\167\x6e\55\x6d\145\x6e\165\x20\144\162\x6f\x70\x6c\145\146\164\x22\76\12\40\x20\x20\x20\40\x20\x20\40\40\40\x20\40\40\40\x20\40\40\40\74\141\x20\x63\x6c\x61\x73\163\x3d\42\144\x72\157\x70\x64\157\x77\156\x2d\x69\x74\145\x6d\x20\162\145\x73\164\x6f\x72\x65\x42\164\x6e\x22\40\x68\162\x65\x66\75\42\43\42\40\x64\x61\x74\x61\x2d\151\x64\75\x22" . $row->id . "\x22\76\x52\145\163\164\x6f\162\x65\40\x52\x75\142\162\x69\143\x3c\x2f\141\x3e\xa\x20\x20\x20\40\40\x20\x20\40\40\x20\x20\40\x20\40\x20\x20\x3c\x2f\x64\x69\166\x3e\12\x20\x20\x20\40\40\40\40\40\x20\x20\x20\x20\x20\x20\74\57\144\x69\166\76"; return $btn; })->rawColumns(array("\141\143\x74\151\157\x6e"))->make(true); } public function UserArchive() { $UsersData = DB::table("\x75\x73\145\x72\x73")->where("\x73\x74\141\164\165\x73", "\x61\162\143\x68\x69\x76\145")->get(); return DataTables::of($UsersData)->addIndexColumn()->addColumn("\x61\x63\164\151\x6f\156", function ($row) { $btn = "\74\x64\151\x76\x20\143\x6c\x61\163\x73\x3d\42\x62\x74\156\x2d\x67\162\x6f\165\160\x20\144\162\157\160\x6c\145\x66\164\x22\x3e\xa\x20\40\40\x20\x20\40\40\40\x20\40\x20\x20\x20\x20\x20\40\74\142\165\164\164\157\x6e\40\x74\171\x70\x65\75\x22\x62\165\164\164\x6f\156\42\40\x63\154\141\163\163\x3d\x22\142\164\x6e\x20\x62\x74\156\x2d\160\x72\x69\x6d\141\162\171\x20\x64\162\x6f\x70\144\157\167\156\55\x74\157\147\x67\x6c\145\x22\x20\x64\141\x74\141\55\x74\157\147\x67\x6c\x65\75\42\x64\162\157\160\x64\x6f\x77\156\x22\40\141\x72\151\141\55\150\141\x73\160\x6f\160\165\x70\75\x22\164\162\x75\145\x22\x20\x61\162\x69\141\x2d\x65\x78\160\x61\156\x64\145\144\x3d\x22\146\141\x6c\163\145\42\x3e\xa\x20\x20\40\x20\40\40\x20\x20\40\40\40\x20\40\40\40\x20\123\145\164\164\151\156\x67\163\xa\x20\40\x20\40\x20\x20\x20\40\40\40\40\x20\40\x20\40\x20\x3c\x2f\142\x75\x74\x74\157\x6e\76\12\x20\x20\40\x20\x20\40\40\40\x20\40\x20\x20\x20\x20\x20\x20\x3c\x64\151\x76\40\x63\154\x61\x73\x73\75\42\x64\162\x6f\x70\144\x6f\167\x6e\x2d\x6d\145\x6e\165\x20\x64\162\157\160\154\x65\x66\x74\x22\76\12\40\40\x20\x20\40\40\40\x20\40\40\40\x20\x20\x20\40\40\40\x20\74\141\x20\x63\x6c\x61\x73\x73\75\x22\x64\162\x6f\x70\x64\157\x77\x6e\x2d\x69\164\x65\x6d\x20\x72\145\x73\x74\x6f\162\145\102\164\156\42\40\x68\162\145\x66\x3d\x22\43\x22\40\x64\x61\164\x61\55\151\x64\x3d\42" . $row->id . "\x22\76\122\145\163\x74\x6f\162\x65\40\x41\143\x63\157\x75\x6e\x74\x3c\x2f\x61\76\xa\x20\x20\40\x20\40\x20\40\x20\40\40\x20\x20\40\x20\x20\40\40\x20\x3c\141\40\143\154\x61\x73\x73\75\42\x64\x72\157\160\x64\x6f\x77\x6e\x2d\151\x74\145\155\x20\144\x65\154\145\164\145\102\x74\156\42\x20\150\x72\x65\146\x3d\42\x23\x22\x20\x64\141\164\x61\55\x69\x64\75\42" . $row->id . "\42\76\x44\x65\154\x65\x74\145\x20\x41\143\143\x6f\x75\156\x74\74\57\x61\x3e\12\x20\x20\40\40\40\x20\x20\40\x20\x20\40\x20\40\40\x20\40\74\57\144\151\166\x3e\xa\x20\40\40\40\x20\40\40\40\40\40\40\x20\40\x20\74\57\144\x69\166\76"; return $btn; })->rawColumns(array("\141\x63\x74\151\x6f\x6e"))->make(true); } public function ClassArchiveList() { $ClassesData = DB::table("\x63\154\141\x73\163\145\x73")->where("\x73\x74\141\164\165\x73", "\141\162\x63\x68\151\166\145")->get(); return DataTables::of($ClassesData)->addIndexColumn()->addColumn("\141\x63\x74\151\x6f\156", function ($row) { $btn = "\x3c\144\151\x76\x20\143\154\141\163\x73\x3d\42\x62\x74\x6e\x2d\147\x72\157\165\160\40\144\x72\x6f\160\154\145\x66\x74\x22\76\12\x20\40\x20\x20\40\x20\40\x20\40\40\40\x20\x20\40\40\40\x3c\142\x75\x74\164\157\x6e\x20\x74\171\160\x65\75\x22\142\x75\164\x74\x6f\x6e\42\x20\143\x6c\x61\x73\x73\75\x22\142\x74\156\x20\142\164\x6e\55\160\162\x69\155\141\x72\171\40\144\162\157\x70\x64\157\x77\x6e\55\x74\x6f\147\x67\x6c\x65\x22\x20\x64\x61\164\141\x2d\164\x6f\147\x67\x6c\x65\75\x22\144\x72\x6f\x70\144\157\x77\156\x22\40\x61\x72\x69\141\55\150\x61\x73\160\157\x70\x75\x70\x3d\42\x74\x72\x75\145\42\40\141\x72\x69\x61\x2d\x65\170\160\x61\156\x64\145\144\75\x22\146\141\154\x73\x65\x22\x3e\xa\x20\40\x20\40\40\x20\40\40\40\x20\x20\x20\x20\40\40\40\x53\145\164\x74\151\156\147\x73\xa\x20\x20\40\x20\40\40\x20\40\x20\x20\x20\40\40\x20\x20\x20\74\x2f\x62\x75\164\x74\x6f\156\x3e\xa\x20\40\40\x20\x20\40\40\40\x20\x20\40\40\40\40\x20\40\74\x64\x69\x76\40\x63\x6c\x61\x73\163\75\42\x64\x72\x6f\x70\144\157\x77\156\x2d\x6d\145\x6e\x75\40\x64\162\x6f\x70\154\x65\146\164\42\x3e\xa\x20\x20\40\40\x20\x20\40\40\x20\x20\x20\40\x20\40\40\x20\x20\x20\74\141\x20\143\x6c\x61\163\163\x3d\42\144\162\x6f\x70\144\157\167\x6e\55\151\x74\x65\155\x20\x72\x65\163\x74\157\162\x65\102\x74\156\42\x20\x68\x72\x65\x66\x3d\42\43\x22\x20\144\141\164\141\55\151\x64\75\42" . $row->id . "\42\x3e\122\x65\163\164\x6f\162\x65\40\103\x6c\x61\163\x73\74\57\141\76\xa\x20\40\40\40\x20\x20\x20\x20\x20\40\x20\40\40\40\40\x20\x20\x20\x3c\141\x20\143\x6c\x61\x73\163\75\x22\144\x72\157\x70\x64\157\x77\x6e\x2d\151\x74\x65\x6d\x20\x64\145\x6c\x65\164\145\x42\164\156\x22\x20\150\162\145\x66\75\42\x23\x22\x20\x64\141\164\141\x2d\x69\144\75\42" . $row->id . "\x22\x3e\x44\x65\x6c\145\164\145\40\103\154\141\x73\163\x3c\57\x61\76\xa\x20\x20\x20\40\x20\40\x20\x20\x20\x20\x20\x20\40\40\x20\40\x3c\57\x64\x69\x76\76\xa\x20\40\x20\40\40\x20\40\40\x20\40\x20\x20\40\x20\74\x2f\144\x69\x76\x3e"; return $btn; })->addColumn("\x73\143\150\145\144\165\x6c\145", function ($row) { $d1 = $row->m === "\x74\x72\x75\145"; $d2 = $row->t === "\164\x72\165\x65"; $d3 = $row->w === "\x74\x72\165\145"; $d4 = $row->th === "\164\x72\165\x65"; $d5 = $row->f === "\x74\162\165\x65"; $d6 = $row->sat === "\164\x72\x75\145"; $d7 = $row->s === "\164\x72\165\145"; $start = date("\150\x3a\151\101", strtotime($row->start)); $end = date("\x68\72\151\101", strtotime($row->end)); $schedule = ''; if ($d1) { $schedule .= "\115\x20"; } if ($d2) { $schedule .= "\x54\40"; } if ($d3) { $schedule .= "\127\x20"; } if ($d4) { $schedule .= "\x54\110\x20"; } if ($d5) { $schedule .= "\106\40"; } if ($d6) { $schedule .= "\x53\141\x74\40"; } if ($d7) { $schedule .= "\123\40"; } return $schedule . $start . "\40\x2d\40" . $end; })->rawColumns(array("\x61\143\164\151\157\x6e"))->make(true); } public function UserAccountDeleteAction(Request $request) { $id = $request->UserID; Users::where("\x69\x64", $id)->delete(); return response()->json(array("\141\x70\160\x72\x6f\x76\145\144" => "\101\143\x63\157\x75\x6e\x74\40\x68\141\x73\40\142\x65\x65\156\x20\144\145\x6c\145\164\x65\144\x20\x73\165\143\143\145\163\163\146\165\x6c\x6c\x79\x2e")); } public function RubricArchive(Request $request) { try { $id = $request->UserID; $user = rubrics::findOrFail($id); $user->status = "\x61\x72\x63\x68\x69\x76\x65"; $user->updated_by = Session::get("\x6e\x61\x6d\x65"); $user->save(); return response()->json(array("\x61\x72\x63\150\151\x76\145\x64" => "\122\165\x62\162\151\x63\40\x68\x61\x73\40\x62\145\145\156\x20\x61\162\x63\150\x69\x76\x65\x64\x20\x73\x75\143\143\145\163\163\x66\165\x6c\154\171\x2e")); } catch (ModelNotFoundException $exception) { return response()->json(array("\145\162\162\157\162" => "\122\x75\x62\162\x69\143\40\156\157\164\40\x66\x6f\x75\x6e\144\x2e")); } } public function UserAccountArchive(Request $request) { try { $id = $request->UserID; $user = Users::findOrFail($id); $user->status = "\x61\162\143\150\x69\x76\x65"; $user->updated_by = Session::get("\156\x61\x6d\145"); $user->save(); return response()->json(array("\x61\x72\x63\150\x69\166\x65\x64" => "\101\x63\143\157\x75\156\164\x20\150\141\163\40\x62\x65\145\x6e\x20\x61\x72\x63\150\151\166\x65\x64\40\x73\x75\x63\x63\x65\163\163\x66\x75\154\154\x79\56")); } catch (ModelNotFoundException $exception) { return response()->json(array("\x65\162\x72\x6f\162" => "\125\x73\145\x72\40\156\157\164\x20\146\157\x75\x6e\144\56")); } } public function ClassArchive(Request $request) { try { $id = $request->UserID; $user = Classes::findOrFail($id); $user->status = "\141\x72\x63\150\151\x76\x65"; $user->updated_by = Session::get("\x6e\x61\x6d\x65"); $user->save(); return response()->json(array("\x61\162\x63\x68\151\x76\x65\144" => "\x43\154\141\163\163\40\x68\141\x73\x20\142\x65\x65\x6e\40\x61\162\x63\x68\151\166\x65\144\40\x73\x75\143\143\x65\163\x73\146\x75\x6c\154\x79\x2e")); } catch (ModelNotFoundException $exception) { return response()->json(array("\x65\x72\x72\157\x72" => "\x43\154\141\163\163\x20\x6e\157\164\40\146\157\x75\156\x64\x2e")); } } public function UnenrollAccount(Request $request) { try { $id = $request->UserID; $data = DB::table("\143\x6c\141\163\163\x65\163\137\141\163\151\x67\156\163")->select("\x63\154\x61\x73\163\x5f\x69\x64", "\165\163\x65\x72\x5f\151\x64")->where("\x69\144", $id)->first(); $class_id = $data->class_id; $user_id = $data->user_id; $experiment = ExperimentReport::where("\165\163\x65\162\x5f\x69\144", $user_id)->where("\x63\x6c\x61\163\163\x5f\x69\144", $class_id)->delete(); $user = ClassesAsign::where("\151\x64", $id)->delete(); return response()->json(array("\x75\x6e\145\x6e\x72\x6f\154\x6c\x65\x64" => "\x41\143\143\x6f\165\156\164\40\150\x61\x73\40\142\145\145\x6e\x20\165\156\x65\156\162\x6f\x6c\x6c\x65\144\x20\163\165\x63\x63\x65\163\x73\x66\x75\x6c\x6c\171\x2e")); } catch (ModelNotFoundException $exception) { return response()->json(array("\145\162\x72\x6f\162" => "\x43\x6c\x61\x73\x73\40\156\x6f\164\40\x66\x6f\165\156\x64\x2e")); } } public function UnenrollClass(Request $request) { try { $id = $request->classID; $class = ClassesAsign::where("\x63\x6c\x61\x73\x73\137\151\144", $id)->delete(); $experiment = ExperimentReport::where("\x63\x6c\x61\x73\163\x5f\151\144", $id)->delete(); return response()->json(array("\x75\x6e\x65\x6e\x72\157\154\x6c\x65\144" => "\101\154\154\40\x41\x63\143\157\165\x6e\164\x73\40\x53\x75\x63\x63\x65\163\x73\146\x75\x6c\x6c\171\x20\x55\x6e\x65\156\x72\x6f\154\154\145\x64\56")); } catch (ModelNotFoundException $exception) { return response()->json(array("\x65\x72\162\157\162" => "\103\154\x61\163\x73\x20\156\157\164\40\x66\157\165\x6e\144\x2e")); } } public function ExperimentActivation(Request $request) { try { $id = $request->UserID; $user = classEx::findOrFail($id); $user->status = null; $user->updated_by = Session::get("\x6e\x61\155\145"); $user->save(); return response()->json(array("\162\x65\x73\164\x6f\162\145\144" => "\105\170\160\145\x72\151\x6d\x65\x6e\164\x20\x68\141\x73\x20\142\145\145\x6e\40\x61\143\164\151\x76\141\164\x65\144\x20\x73\165\143\143\x65\x73\x73\x66\x75\x6c\x6c\x79\x2e")); } catch (ModelNotFoundException $exception) { return response()->json(array("\145\x72\162\x6f\162" => "\x45\x78\x70\145\x72\151\155\145\x6e\x74\40\x6e\x6f\164\40\146\157\165\x6e\x64\x2e")); } } public function AccountActivation(Request $request) { try { $id = $request->UserID; $user = Users::findOrFail($id); $user->status = ''; $user->updated_by = Session::get("\x6e\141\x6d\145"); $user->save(); return response()->json(array("\162\145\x73\164\157\x72\145\144" => "\101\143\x63\157\x75\x6e\x74\40\150\141\163\x20\142\145\x65\x6e\40\141\x63\x74\151\166\x61\164\145\144\x20\x73\x75\x63\143\x65\x73\163\146\x75\x6c\154\171\x2e")); } catch (ModelNotFoundException $exception) { return response()->json(array("\145\162\162\x6f\x72" => "\x55\163\145\162\x20\156\x6f\164\x20\146\157\x75\156\144\56")); } } public function RubricRestoration(Request $request) { try { $id = $request->UserID; $user = rubrics::findOrFail($id); $user->status = null; $user->updated_by = Session::get("\156\141\155\145"); $user->save(); return response()->json(array("\162\145\x73\x74\157\162\145\x64" => "\x52\165\x62\162\x69\143\x20\x68\141\163\x20\x62\x65\x65\156\x20\x72\145\x73\x74\x6f\x72\x65\144\x20\163\165\x63\143\145\x73\163\x66\x75\x6c\154\x79\56")); } catch (ModelNotFoundException $exception) { return response()->json(array("\x65\162\x72\157\x72" => "\125\163\x65\162\40\156\157\x74\40\x66\157\x75\x6e\144\x2e")); } } public function AccountRestoration(Request $request) { try { $id = $request->UserID; $user = Users::findOrFail($id); $user->status = ''; $user->updated_by = Session::get("\156\141\x6d\145"); $user->save(); return response()->json(array("\162\x65\163\x74\157\x72\x65\144" => "\101\143\x63\x6f\165\x6e\x74\x20\x68\141\163\x20\x62\145\x65\x6e\40\x72\x65\x73\x74\157\162\145\x64\40\163\x75\x63\x63\x65\x73\x73\x66\x75\x6c\154\x79\56")); } catch (ModelNotFoundException $exception) { return response()->json(array("\x65\x72\162\x6f\162" => "\x55\x73\145\162\x20\156\157\164\x20\x66\x6f\x75\156\x64\56")); } } public function ClassRestoration(Request $request) { try { $id = $request->UserID; $user = Classes::findOrFail($id); $user->status = ''; $user->updated_by = Session::get("\x6e\x61\155\145"); $user->save(); return response()->json(array("\x72\x65\x73\x74\x6f\x72\x65\144" => "\101\143\x63\x6f\x75\x6e\x74\40\x68\141\x73\40\142\x65\145\156\x20\x72\x65\163\164\157\162\145\x64\40\163\165\x63\x63\x65\163\x73\146\165\154\x6c\171\x2e")); } catch (ModelNotFoundException $exception) { return response()->json(array("\x65\162\x72\157\162" => "\x55\163\145\162\x20\156\x6f\164\40\x66\157\165\x6e\144\x2e")); } } public function UserPasswordReset(Request $request) { try { $id = $request->UserID; $user = Users::findOrFail($id); $user->password = Hash::make("\x53\x6d\x61\162\x74\x6c\x61\142\x32\x30\x32\63\x21"); $user->pass_string = "\x53\x6d\x61\162\164\154\141\142\62\x30\62\x33\41"; $user->save(); return response()->json(array("\162\x65\163\x65\164\164\x65\144" => "\x50\x61\x73\x73\167\x6f\162\x64\40\162\145\163\x65\x74\x20\163\x75\x63\143\x65\163\163\x66\x75\x6c\154\x79\x21")); } catch (ModelNotFoundException $exception) { return response()->json(array("\145\162\x72\x6f\x72" => "\125\163\145\162\x20\x6e\x6f\x74\40\x66\x6f\165\156\144\56")); } } public function UserEditbtnFetch(Request $request) { $data = Users::find($request->Uupdatebutton); return response()->json(array("\x55\x73\x65\162\x44\141\164\x61" => $data)); } public function EditUserAccount(Request $request) { $validated = Validator::make($request->all(), array("\x75\163\145\x72\156\x61\x6d\x65" => "\162\x65\161\x75\x69\x72\x65\x64", "\156\x61\155\145" => "\162\x65\161\x75\x69\162\145\x64", "\162\x6f\154\145" => "\162\x65\161\x75\x69\162\145\144", "\x75\x73\145\162\111\x44" => "\x72\x65\x71\165\x69\162\145\144", "\x65\x6d\x61\x69\154" => "\x72\x65\161\x75\x69\x72\x65\144"), array("\165\163\x65\x72\x6e\x61\155\x65\56\162\145\x71\x75\x69\162\x65\144" => "\124\x68\145\x20\x55\163\145\x72\x6e\x61\155\x65\40\146\151\145\x6c\x64\40\x69\163\x20\162\x65\161\x75\151\x72\145\x64", "\156\141\155\145\56\162\145\161\165\x69\x72\145\x64" => "\x54\x68\145\x20\116\141\x6d\x65\40\x66\x69\x65\154\144\x20\x69\163\40\x72\x65\x71\165\151\162\x65\x64", "\x72\x6f\154\145\56\x72\145\x71\165\151\x72\145\144" => "\124\150\x65\40\x52\x6f\x6c\145\x20\146\x69\145\154\x64\40\151\x73\x20\x72\145\x71\165\151\x72\x65\144", "\x65\155\141\151\154\x2e\x72\x65\161\165\151\x72\x65\x64" => "\x54\x68\145\40\105\155\141\x69\x6c\x20\x66\x69\x65\x6c\x64\x20\151\x73\40\162\145\161\165\151\x72\x65\x64", "\x75\x73\x65\162\111\x44\56\162\145\x71\165\151\x72\x65\x64" => "\x54\150\145\x72\145\40\167\x61\163\x20\x6e\157\40\141\x63\x63\157\x75\156\164\x20\x68\151\x67\150\x6c\151\147\x68\x74\x65\144\x2c\x20\120\x6c\145\x61\x73\145\x20\x72\x65\143\154\151\143\x6b\40\164\150\145\40\105\x64\x69\164\40\x62\x75\164\164\157\156")); if ($validated->fails()) { return response()->json(array("\x65\162\162\157\x72\163" => $validated->errors()->first())); } else { $editUser = Users::find($request->userID); $editUser->username = $request->username; $editUser->name = $request->name; $editUser->role = $request->role; $editUser->user_email = $request->email; $editUser->save(); return response()->json(array("\x55\x73\x65\162\x45\144\151\x74\145\144" => "\x55\x73\x65\x72\40\101\x63\143\157\x75\x6e\164\x20\150\141\163\x20\142\x65\x65\x6e\x20\x75\160\x64\x61\x74\145\144\x2e")); } } public function getClass() { $data = DB::table("\143\x6c\141\x73\163\145\163")->whereNull("\162\x75\142\x72\151\x63\137\141\x73\x73\151\x67\156\x65\x64")->get(); return view("\x73\x79\163\164\145\x6d\x70\141\147\x65\x73\x2e\162\165\142\x72\x69\x63\55\142\x6f\x6f\153", array("\143\x6c\141\163\x73\x44\141\164\141" => $data)); } public function displayRubric($rubric_id, $class_id, $act_id, $user_id) { $checkIfGrade = DB::table("\x72\x75\142\162\151\143\137\x67\162\141\x64\145\x73")->where("\x69\144\x5f\x72\165\142\x72\151\x63", $rubric_id)->where("\165\x5f\151\x64", $user_id)->where("\143\154\x61\163\x73\137\x69\144", $class_id)->where("\141\143\x74\137\151\x64", $act_id)->where("\164\157\164\x61\x6c\x5f\x73\143\157\x72\145", "\x21\x3d", "\x4e\x2f\x41")->first(); $activityData = DB::table("\143\154\141\163\x73\x5f\145\x78\x65\x73")->where("\143\x6c\x61\x73\x73\137\151\144", $class_id)->where("\x69\144", $act_id)->first(); $rubricData = DB::table("\162\165\x62\x72\x69\143\163")->where("\151\144", $rubric_id)->get(); $partData = DB::table("\162\x75\x62\x72\x69\143\137\x70\141\162\x74\163")->where("\162\165\142\162\151\143\137\x69\x64", $rubric_id)->get(); $criteriaData = DB::table("\162\165\142\162\151\x63\x5f\x63\x72\x69\164\145\162\x69\141\163")->where("\162\x75\x62\x72\151\143\x5f\151\144", $rubric_id)->get(); $classData = Classes::find($class_id); $userData = Users::find($user_id); $checkUserIDClass = ClassesAsign::where("\x63\154\x61\x73\x73\137\151\144", $class_id)->where("\x75\163\145\x72\137\x69\144", $user_id)->first(); if ($checkIfGrade) { return redirect("\57\160\x72\145\166\151\x65\167\55\x67\162\x61\144\145\x2f" . $rubric_id . "\57" . $class_id . "\57" . $act_id . "\x2f" . $user_id); } else { if (!$classData) { return redirect("\x2f\144\141\x73\x68\142\157\x61\x72\144"); } else { if (!$checkUserIDClass) { return redirect("\57\x64\141\163\150\x62\157\141\x72\x64"); } else { if (!$rubricData->isEmpty()) { return view("\x73\171\x73\x74\x65\155\x70\x61\147\x65\163\56\x72\165\142\x72\151\143\x2d\x67\162\141\144\145", array("\x64\141\164\x61" => $rubricData, "\162\165\x62\x72\151\x63\x5f\x69\144" => $rubric_id, "\160\141\x72\164\x44\141\164\141" => $partData, "\x63\162\x69\x74\x65\162\x69\x61\x44\x61\x74\x61" => $criteriaData, "\146\165\154\x6c\156\x61\155\x65" => $userData->name, "\x73\164\165\x64\145\x6e\x74\111\x44" => $userData->id, "\143\154\x61\163\163\x6e\x61\x6d\x65" => $classData->classname, "\x61\143\164\x69\166\151\164\x79\116\x61\x6d\145" => $activityData->ex_name)); } else { return redirect("\x2f\144\x61\163\x68\142\x6f\x61\x72\144"); } } } } } public function displayRubricDB($id) { $rubricData = DB::table("\x72\x75\x62\x72\151\x63\x73")->where("\151\x64", $id)->get(); $partData = DB::table("\x72\165\142\162\x69\x63\137\x70\x61\x72\x74\163")->where("\162\x75\142\x72\x69\x63\137\151\144", $id)->get(); $criteriaData = DB::table("\x72\165\142\x72\x69\143\x5f\143\162\x69\x74\145\x72\151\x61\x73")->where("\162\165\142\162\x69\x63\x5f\x69\x64", $id)->get(); if (!$rubricData->isEmpty()) { return view("\x73\x79\163\164\x65\x6d\160\141\x67\x65\163\x2e\162\165\142\162\151\x63\55\x70\x72\x65\x76\151\145\x77", array("\144\x61\164\x61" => $rubricData, "\160\x61\162\164\x44\141\164\141" => $partData, "\x63\162\151\164\x65\162\x69\141\104\141\164\141" => $criteriaData)); } else { return redirect("\x2f\144\x61\x73\150\142\157\x61\162\x64"); } } public function editRubricDB($id) { $rubricData = DB::table("\162\x75\142\x72\x69\143\x73")->where("\x69\x64", $id)->get(); $partData = DB::table("\162\x75\x62\162\x69\x63\x5f\x70\x61\162\x74\x73")->where("\x72\165\x62\x72\151\143\137\x69\144", $id)->get(); $criteriaData = DB::table("\162\165\142\162\x69\143\137\x63\x72\x69\164\x65\x72\151\141\x73")->where("\x72\165\142\x72\x69\143\137\x69\x64", $id)->get(); if (!$rubricData->isEmpty()) { return view("\x73\171\x73\164\x65\x6d\160\x61\147\x65\x73\x2e\145\144\151\x74\55\162\x75\142\162\151\143", array("\x64\141\164\141" => $rubricData, "\x70\141\162\164\x44\141\x74\141" => $partData, "\x63\x72\x69\x74\x65\x72\x69\141\104\141\164\x61" => $criteriaData, "\x69\144" => $id)); } else { return redirect("\x2f\x64\141\x73\x68\142\x6f\141\x72\x64"); } } public function publishGrade(Request $request) { $totalPart = $request->input("\x70\164\164\x6f\x74\x61\154"); $score = $request->input("\x66\x69\x6e\141\154\137\x73\x63\157\x72\145"); $feedback = $request->input("\x66\x65\145\144\x62\141\143\x6b\137"); $u_id = $request->input("\x73\x74\165\x64\145\x6e\164\x5f\151\x64"); $r_id = $request->input("\x72\165\x62\x72\x69\143\137\x69\144"); $class_id = $request->input("\x63\x6c\x61\163\x73\137\x69\144"); $act_id = $request->input("\x61\143\x74\x5f\151\x64"); $act_name = $request->input("\x61\x63\x74\151\x76\151\x74\171\x5f\x6e\141\155\x65"); $check_weight = $request->input("\167\145\151\147\150\164\103\150\145\x63\x6b"); $validated = Validator::make($request->all(), array("\160\x74\x74\157\164\141\x6c\x2e\52" => "\162\x65\161\x75\151\162\145\144"), array("\160\164\x74\157\x74\x61\x6c\x2e\52\56\162\145\161\165\151\x72\145\144" => "\124\x68\145\x20\103\x72\151\x74\145\162\151\141\x20\x66\x69\x65\x6c\x64\x20\151\x73\x20\x72\x65\161\x75\151\162\145\144\x2e")); $checkIfGrade = DB::table("\162\165\x62\162\x69\143\137\x67\x72\141\x64\145\163")->where("\x69\x64\x5f\162\165\142\x72\x69\x63", $r_id)->where("\x75\x5f\x69\x64", $u_id)->where("\143\154\x61\x73\163\137\x69\x64", $class_id)->where("\x61\143\x74\x5f\x69\144", $act_id)->where("\x74\x6f\164\141\x6c\x5f\x73\143\x6f\162\145", "\x21\x3d", "\116\x2f\x41")->first(); if ($validated->fails()) { return response()->json(array("\x65\162\162\157\x72\163" => $validated->errors()->first())); } else { if ($checkIfGrade) { return redirect("\57\x70\x72\145\x76\x69\145\167\x2d\x67\162\x61\x64\x65\x2f" . $r_id . "\57" . $class_id . "\x2f" . $act_id . "\x2f" . $u_id); } else { $conditions = array("\165\x5f\151\144" => $u_id, "\151\x64\137\x72\x75\x62\162\x69\x63" => $r_id, "\143\154\x61\163\163\x5f\151\x64" => $class_id, "\x61\143\164\x5f\151\144" => $act_id); RubricGrades::where($conditions)->update(array("\164\157\164\x61\154\137\x73\143\x6f\x72\145" => $score, "\162\x61\156\153" => '', "\146\145\145\x64\x62\x61\143\153" => $feedback, "\x61\143\x74\x5f\156\141\155\145" => $act_name, "\143\162\x65\141\x74\145\144\x5f\142\x79" => Session::get("\156\x61\x6d\x65"))); foreach ($totalPart as $tpindex => $tp) { $savePart = new PartGrades(); $savePart->u_id = $u_id; $savePart->id_rubric = $r_id; $savePart->id_part = $tpindex; $savePart->act_id = $act_id; $savePart->total_pts = $tp; $savePart->avg_pts = null; $savePart->weighted_avg = null; $savePart->save(); } return response()->json(array("\163\x75\143\143\145\x73\163" => "\107\x72\x61\144\145\40\157\x66\x20\x53\x74\165\x64\145\x6e\x74\x20\x70\165\142\x6c\x69\163\150\145\144\40\x73\x75\x63\x63\x65\163\163\x66\x75\154\154\171\x2e")); } } } public function gradePreview($rubric_id, $class_id, $act_id, $user_id) { $rubricData = RubricGrades::join("\162\x75\142\162\x69\143\x73", "\x72\x75\142\162\x69\143\x5f\x67\x72\141\x64\145\x73\x2e\151\144\x5f\x72\x75\x62\162\x69\143", "\75", "\162\165\142\x72\x69\143\x73\x2e\151\144")->where("\x72\165\x62\x72\x69\x63\x73\x2e\151\144", $rubric_id)->where("\162\x75\142\162\151\x63\x5f\x67\x72\x61\144\x65\163\x2e\165\x5f\x69\144", $user_id)->where("\x61\x63\164\137\151\x64", $act_id)->get(); $partData = PartGrades::join("\162\x75\142\162\x69\143\x5f\160\x61\x72\x74\163", function ($join) { $join->on("\x70\x61\162\164\x5f\x67\162\141\144\145\x73\56\151\144\x5f\x72\165\142\162\x69\x63", "\x3d", "\162\x75\142\162\151\143\x5f\160\141\162\x74\163\x2e\162\165\x62\162\151\143\137\151\144")->on("\x70\141\162\164\x5f\x67\162\x61\144\145\163\x2e\x69\x64\x5f\160\141\x72\x74", "\75", "\162\165\142\162\151\143\137\x70\x61\162\x74\163\56\x69\144"); })->where("\162\x75\x62\x72\x69\x63\x5f\x70\141\x72\164\163\x2e\x72\x75\142\x72\x69\143\x5f\151\x64", $rubric_id)->where("\160\141\x72\x74\137\x67\x72\141\x64\145\x73\x2e\x75\137\151\144", $user_id)->where("\x61\x63\x74\x5f\151\x64", $act_id)->get(); $criteriaData = DB::table("\x72\165\142\x72\x69\x63\x5f\143\162\151\x74\145\x72\151\x61\163")->where("\x72\x75\142\x72\151\x63\x5f\151\144", $rubric_id)->get(); $scoreData = DB::table("\x63\162\151\x74\145\x72\151\x61\x5f\147\162\x61\144\145\x73")->where("\x69\x64\x5f\162\x75\x62\x72\151\143", $rubric_id)->where("\165\137\x69\x64", $user_id)->where("\x61\x63\x74\137\151\x64", $act_id)->get(); $classData = Classes::find($class_id); $userData = Users::find($user_id); $checkUserIDClass = ClassesAsign::where("\143\x6c\141\x73\x73\x5f\151\x64", $class_id)->where("\x75\x73\x65\162\137\151\x64", $user_id)->first(); if (!$classData) { return redirect("\x2f\x64\141\163\x68\x62\157\x61\162\x64"); } else { if (!$checkUserIDClass) { return redirect("\x2f\x64\141\x73\x68\142\x6f\141\162\144"); } else { if (!$rubricData->isEmpty()) { return view("\163\x79\x73\x74\x65\155\x70\x61\147\145\x73\x2e\x67\162\x61\x64\145\55\x70\162\145\x76\151\145\167", array("\144\141\164\x61" => $rubricData, "\x72\165\x62\x72\x69\143\137\x69\144" => $rubric_id, "\x70\x61\162\x74\104\141\164\141" => $partData, "\x63\162\x69\164\145\162\151\141\x44\141\x74\141" => $criteriaData, "\x73\x63\157\x72\145\104\141\x74\x61" => $scoreData, "\x66\x75\x6c\x6c\x6e\x61\x6d\x65" => $userData->name, "\x73\164\165\x64\145\156\164\x49\x44" => $userData->id, "\x63\x6c\141\x73\163\156\x61\155\145" => $classData->classname)); } else { return redirect("\57\x64\141\x73\150\142\x6f\141\x72\144"); } } } } public function ClassEditFetch() { if (Session::get("\x61\144\x6d\151\x6e") == "\141\x64\155\x69\156" || Session::get("\x61\144\x6d\x69\x6e") == "\x6c\x6f\167\x5f\141\144\155\x69\x6e") { $ClassData = DB::table("\143\154\x61\163\163\145\163")->where("\163\x74\x61\164\165\x73", '')->get(); } elseif (Session::get("\x61\144\x6d\x69\156") == "\160\162\157\146") { $ClassData = DB::table("\x63\154\141\x73\163\x65\x73")->where("\x6f\x77\x6e\x65\x72\137\151\x64", Session::get("\x75\x73\145\162\156\141\x6d\x65"))->where("\x73\164\x61\x74\165\163", '')->get(); } return DataTables::of($ClassData)->addIndexColumn()->addColumn("\x53\143\x68\x65\x64\x75\154\x65", function ($row) { $class_time = DB::table("\x77\x65\x65\153\137\x64\141\x79\163")->where("\x63\154\141\163\x73\x5f\151\144", $row->schedule_id)->get(); $dataPassed = array(); $currentS = ''; $currentE = ''; foreach ($class_time as $timeData) { $timeS = date("\x68\72\151\x41", strtotime($timeData->start)); $timeE = date("\x68\x3a\x69\101", strtotime($timeData->end)); $currentS = $timeS; $currentE = $timeE; $day = $timeData->day; switch ($day) { case "\115\x6f\156\x64\x61\x79": $dayString = "\115"; break; case "\124\165\x65\x73\144\141\x79": $dayString = "\x54"; break; case "\127\145\x64\x6e\x65\x73\x64\141\171": $dayString = "\x57"; break; case "\124\150\x75\x72\x73\x64\141\x79": $dayString = "\124\x48"; break; case "\106\x72\x69\144\x61\171": $dayString = "\106"; break; case "\123\141\164\165\x72\144\x61\171": $dayString = "\123\x61\164"; break; case "\123\x75\x6e\144\141\x79": $dayString = "\x53"; break; } $dataPassed[] = '' . $dayString; } $dataPassed[] = "\x20" . $currentS . "\x20\55\40" . $currentE . "\40"; if ($dataPassed) { return $dataPassed; } })->addColumn("\x72\165\x62\162\x69\x63", function ($row) { $rubricName = DB::table("\162\x75\142\x72\151\x63\x73")->where("\151\x64", $row->rubric_assigned)->value("\162\165\142\162\x69\x63\x5f\x6e\141\155\x65"); return "\x3c\x74\144\x3e\40{$rubricName}\x20\74\x2f\x74\x64\x3e"; })->addColumn("\x61\143\x74\151\157\x6e", function ($row) { if (Session::get("\141\144\x6d\151\x6e") == "\141\x64\155\151\156" || Session::get("\x61\144\x6d\151\x6e") == "\154\x6f\x77\137\x61\144\x6d\x69\156") { $btn = "\74\x64\151\x76\40\x63\x6c\x61\163\x73\75\x22\142\164\x6e\55\147\162\x6f\x75\x70\40\144\x72\157\x70\154\145\x66\x74\42\x3e\12\x20\x20\40\x20\x20\x20\40\x20\40\40\x20\40\x20\40\x20\40\x3c\142\x75\x74\x74\x6f\156\40\x74\171\160\x65\75\x22\142\165\x74\164\x6f\156\x22\x20\x63\x6c\x61\x73\163\75\x22\142\164\x6e\x20\x62\x74\x6e\55\160\x72\151\155\141\162\171\40\144\x72\157\160\x64\x6f\x77\x6e\x2d\x74\157\x67\x67\x6c\145\42\40\x64\x61\164\141\55\164\157\x67\x67\x6c\x65\75\42\x64\x72\x6f\x70\x64\x6f\167\156\x22\x20\x61\162\x69\141\x2d\x68\x61\163\160\x6f\x70\165\x70\x3d\x22\164\x72\x75\x65\x22\40\141\x72\151\141\55\145\170\x70\x61\156\144\x65\144\x3d\x22\x66\141\154\x73\145\x22\76\xa\x20\40\40\40\x20\40\40\40\40\x20\40\x20\40\x20\x20\40\x53\145\164\x74\151\x6e\x67\x73\xa\x20\x20\x20\40\x20\x20\x20\40\x20\40\x20\40\40\40\40\40\74\57\x62\165\x74\x74\157\156\76\xa\40\40\x20\x20\x20\x20\x20\x20\40\40\40\x20\x20\40\40\x20\x3c\x64\x69\x76\x20\x63\154\141\x73\163\75\42\144\162\x6f\160\x64\157\x77\156\55\x6d\145\156\x75\40\x64\162\x6f\x70\154\145\x66\164\42\76\xa\40\40\40\40\x20\x20\40\x20\x20\x20\x20\40\x20\x20\40\40\40\40\x3c\x61\x20\143\x6c\x61\163\x73\75\x22\144\162\x6f\160\144\157\167\x6e\55\x69\164\x65\155\40\x43\154\x61\163\x73\x45\x64\151\x74\102\x74\x6e\42\x20\144\141\x74\141\55\151\144\75\42" . $row->id . "\42\x20\x68\162\x65\x66\75\x22\x23\x22\x3e\x45\144\151\164\40\x43\x6c\141\163\x73\x20\x53\143\150\145\x64\165\x6c\x65\x3c\57\141\x3e\12\x20\x20\x20\40\x20\x20\40\40\x20\x20\x20\40\x20\40\40\40\40\40\x3c\x61\x20\x63\x6c\x61\163\163\75\42\144\162\157\x70\x64\157\167\156\x2d\x69\164\145\155\x20\x41\144\144\116\145\x77\105\x78\x70\x65\162\151\x6d\x65\x6e\x74\42\x20\150\x72\x65\146\75\42\x23\42\x20\144\x61\164\141\x2d\x69\x64\75\x22" . $row->id . "\x22\x3e\x55\x70\x6c\157\141\x64\40\x4e\145\x77\x20\105\x78\160\145\162\x69\x6d\x65\x6e\x74\x3c\57\x61\76\xa\x20\40\40\40\x20\x20\x20\x20\x20\40\40\40\x20\x20\x20\40\x20\x20\74\141\x20\x63\154\x61\x73\163\x3d\x22\144\x72\157\x70\x64\157\x77\156\x2d\x69\164\x65\155\42\x20\x68\x72\145\x66\75\x22\x2f\145\x6e\162\157\x6c\154\145\144\x2d\154\151\163\x74\x2f" . $row->id . "\42\40\144\141\164\141\x2d\151\x64\75\x22" . $row->id . "\42\40\x74\x61\x72\x67\x65\164\x20\75\40\x22\x5f\x62\x6c\141\156\153\x22\40\76\x56\151\x65\x77\x20\101\143\x63\157\x75\x6e\x74\x73\40\x45\x6e\x72\x6f\154\x6c\x65\x64\x3c\x2f\141\x3e\12\40\x20\x20\x20\x20\x20\x20\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\x3c\x61\40\143\x6c\x61\163\x73\75\42\144\162\x6f\x70\144\x6f\167\x6e\x2d\x69\164\x65\155\x20\166\x69\145\x77\105\x78\160\145\162\151\155\145\156\164\x73\x22\x20\x68\x72\145\146\x3d\x22\x23\42\40\144\141\164\x61\55\151\x64\x3d\42" . $row->id . "\x22\76\126\x69\145\x77\x20\x43\154\141\x73\x73\x20\x45\x78\160\145\162\x69\x6d\145\x6e\x74\x73\74\x2f\141\x3e\12\40\x20\x20\40\40\x20\40\40\40\40\40\x20\40\40\x20\x20\x20\x20\x3c\x61\x20\143\154\141\163\163\x3d\x22\x64\162\x6f\x70\x64\x6f\x77\x6e\x2d\151\164\145\x6d\x20\x72\145\x6d\x6f\x76\x65\x52\x75\x62\162\151\x63\42\x20\150\x72\x65\x66\x3d\x22\x23\42\x20\144\141\164\141\55\151\x64\x3d\x22" . $row->id . "\x22\x3e\x52\x65\155\157\x76\145\x20\122\165\142\x72\x69\143\74\x2f\x61\x3e\12\40\40\x20\x20\x20\40\x20\40\x20\x20\40\40\40\x20\40\40\40\x20\x3c\141\x20\143\154\x61\163\163\x3d\x22\x64\162\157\160\x64\157\x77\x6e\55\x69\164\x65\x6d\40\x61\x72\143\x68\x69\x76\x65\102\164\x6e\42\40\150\x72\x65\146\75\42\43\42\40\x64\141\x74\x61\x2d\151\144\75\x22" . $row->id . "\x22\x3e\101\162\143\150\151\166\145\x20\x43\154\x61\163\163\74\57\141\x3e\12\x20\x20\40\x20\40\40\x20\40\x20\x20\40\x20\40\40\40\40\x20\x20\x3c\x61\x20\x63\154\x61\x73\x73\x3d\x22\x64\162\x6f\x70\144\x6f\167\156\x2d\151\x74\145\155\40\155\x61\x73\163\x55\x6e\x65\x6e\162\157\x6c\x6c\102\164\x6e\42\40\150\162\x65\146\x3d\42\43\x22\x20\144\x61\164\x61\x2d\x69\x64\x3d\42" . $row->id . "\42\76\x4d\x61\x73\163\x20\125\156\145\156\162\x6f\x6c\x6c\155\x65\x6e\x74\74\x2f\141\x3e\12\40\40\40\40\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\40\x20\x3c\57\x64\151\166\76\12\40\x20\x20\x20\x20\40\40\x20\x20\40\x20\40\40\40\x3c\57\144\151\x76\76"; } else { $btn = "\74\x64\151\x76\40\x63\x6c\141\163\x73\75\x22\x62\164\x6e\55\147\x72\157\165\x70\40\x64\x72\x6f\x70\x6c\145\146\x74\x22\76\xa\40\40\40\x20\40\40\x20\x20\40\x20\x20\40\40\40\40\x20\74\x62\x75\x74\x74\157\x6e\x20\x74\171\160\145\x3d\42\142\165\x74\164\157\x6e\42\x20\x63\154\x61\x73\x73\x3d\42\142\164\x6e\40\x62\x74\x6e\x2d\160\162\151\x6d\141\x72\x79\x20\x64\x72\x6f\160\144\x6f\x77\x6e\x2d\164\157\147\x67\154\x65\x22\x20\x64\141\x74\141\55\164\x6f\x67\147\154\145\75\x22\x64\x72\x6f\x70\144\x6f\167\x6e\x22\40\x61\x72\151\141\55\x68\x61\x73\160\x6f\x70\x75\x70\x3d\42\164\x72\165\x65\x22\x20\x61\x72\x69\141\x2d\145\170\160\141\x6e\144\145\144\x3d\x22\146\x61\x6c\x73\x65\42\76\12\x20\40\x20\40\40\40\40\40\40\40\x20\x20\x20\40\x20\x20\x53\145\x74\164\x69\156\x67\x73\12\40\x20\40\40\x20\40\x20\x20\40\40\x20\x20\x20\40\x20\x20\x3c\x2f\142\165\164\164\x6f\156\76\12\x20\x20\x20\x20\40\40\40\40\40\40\40\x20\x20\40\40\40\x3c\x64\151\166\x20\x63\154\141\163\x73\x3d\42\144\x72\157\x70\144\157\167\x6e\55\155\x65\156\165\40\x64\x72\157\160\x6c\x65\146\x74\x22\x3e\xa\40\40\40\40\40\x20\x20\x20\x20\x20\x20\40\x20\x20\40\x20\40\x20\74\141\x20\143\x6c\141\163\163\x3d\x22\x64\162\157\160\144\157\x77\x6e\55\151\164\145\x6d\40\103\x6c\x61\x73\x73\105\144\x69\x74\x42\x74\156\42\40\x64\141\164\x61\x2d\151\144\75\42" . $row->id . "\x22\x20\x68\162\145\146\75\x22\x23\x22\76\105\144\151\x74\40\x43\x6c\141\x73\163\40\123\x63\150\x65\x64\x75\x6c\x65\x3c\57\141\76\12\x20\40\40\x20\x20\x20\x20\x20\40\x20\40\40\40\x20\x20\x20\40\x20\x3c\141\x20\143\154\x61\x73\163\75\x22\144\x72\157\160\144\x6f\167\156\55\x69\164\145\x6d\40\x41\144\144\x4e\145\167\x45\x78\160\x65\x72\x69\x6d\145\x6e\x74\42\40\150\162\x65\146\75\42\x23\x22\x20\x64\141\164\141\x2d\151\x64\x3d\42" . $row->id . "\42\76\x55\160\x6c\x6f\x61\144\x20\116\145\x77\40\x4d\x6f\144\x75\154\145\74\57\x61\76\12\x20\x20\x20\x20\x20\x20\40\x20\x20\x20\40\40\40\x20\x20\x20\40\x20\74\x61\40\x63\154\141\163\x73\x3d\42\144\x72\x6f\x70\144\157\167\156\55\x69\x74\145\155\x20\x63\162\145\x61\x74\145\116\x65\x77\x45\170\x70\x65\162\151\x6d\x65\156\164\x22\x20\150\x72\145\x66\x3d\x22\x23\x22\40\x64\141\164\141\55\151\x64\75\42" . $row->id . "\x22\x3e\x43\x72\x65\x61\x74\x65\40\116\145\x77\x20\115\157\x64\165\154\x65\x3c\x2f\x61\76\12\40\x20\x20\40\40\x20\40\x20\40\40\x20\40\40\x20\40\x20\x20\40\74\x61\40\143\x6c\141\163\x73\x3d\42\x64\x72\157\160\144\157\167\156\55\x69\x74\145\155\40\166\151\145\x77\105\x78\x70\x65\162\x69\x6d\145\x6e\164\x73\x22\x20\x68\x72\145\146\75\42\43\42\40\144\x61\x74\x61\x2d\151\144\75\42" . $row->id . "\42\x3e\x56\x69\x65\x77\40\x43\x6c\141\163\x73\40\x45\170\160\145\x72\x69\x6d\x65\x6e\x74\x73\74\x2f\141\x3e\12\40\40\40\x20\40\40\x20\x20\40\x20\40\40\x20\40\40\40\x3c\x2f\x64\x69\x76\76\12\x20\x20\40\x20\x20\x20\40\40\x20\x20\40\x20\x20\40\74\57\x64\x69\166\x3e"; } return $btn; })->rawColumns(array("\141\x63\164\x69\x6f\x6e", "\x72\165\142\162\151\x63", "\123\143\150\x65\144\x75\154\x65"))->make(true); } public function RubricBookFetch() { $RubricBook = DB::table("\162\x75\142\x72\x69\x63\x73")->whereNull("\x73\164\x61\x74\165\x73")->get(); return DataTables::of($RubricBook)->addIndexColumn()->addColumn("\x61\143\x74\151\x6f\156", function ($row) { $btn = "\x3c\144\151\166\x20\x63\154\x61\163\x73\x3d\x22\x62\164\156\x2d\x67\162\157\x75\160\x20\x64\162\x6f\160\154\145\146\x74\x22\x3e\xa\11\x9\11\11\x9\x9\x3c\142\x75\x74\164\157\156\40\x74\x79\x70\x65\75\x22\142\165\x74\x74\x6f\156\42\x20\143\x6c\141\163\163\75\x22\x62\x74\156\x20\142\x74\x6e\55\160\x72\151\155\x61\x72\171\40\x64\x72\157\x70\x64\157\x77\156\x2d\x74\x6f\147\x67\x6c\145\x22\x20\x64\141\x74\141\x2d\x74\x6f\147\147\154\x65\75\42\x64\x72\157\x70\x64\x6f\x77\156\42\40\141\x72\x69\x61\55\150\x61\163\x70\x6f\160\x75\x70\75\x22\164\162\x75\145\42\40\x61\162\x69\141\55\x65\170\160\141\156\x64\x65\x64\x3d\42\146\141\x6c\x73\x65\42\76\12\x9\x9\11\x9\11\11\x9\x53\145\164\x74\x69\156\147\163\xa\11\x9\11\11\x9\x9\x3c\57\x62\165\164\164\x6f\156\x3e\12\11\11\11\x9\x9\x9\74\144\151\x76\x20\143\154\x61\163\163\x3d\x22\144\x72\157\x70\144\x6f\167\156\55\x6d\x65\x6e\x75\40\x64\162\x6f\x70\x6c\x65\146\164\x22\x3e\xa\11\x9\11\11\x9\11\11\74\141\40\x63\x6c\141\x73\163\75\x22\144\162\x6f\x70\144\x6f\x77\156\55\x69\164\x65\x6d\x20\162\165\142\162\151\x63\x41\x73\163\151\147\x6e\103\x6c\x69\143\x6b\x22\x20\x64\x61\164\141\55\x69\x64\75\42" . $row->id . "\x22\x20\150\x72\145\146\x3d\42\43\42\40\144\x61\x74\x61\55\x74\x6f\x67\147\x6c\145\x3d\x22\155\x6f\x64\141\x6c\42\x20\x64\x61\x74\141\x2d\x74\141\162\147\x65\x74\75\x22\x23\x61\x73\163\x69\x67\156\x52\x75\x62\x72\x69\x63\115\157\144\141\154\42\x3e\x41\x73\163\x69\147\x6e\x20\122\x75\142\162\x69\143\x20\164\157\40\103\154\x61\163\163\74\x2f\141\x3e\12\11\x9\11\11\11\11\11\74\x61\x20\143\x6c\141\163\163\x3d\42\x64\x72\x6f\x70\x64\x6f\x77\156\x2d\151\164\145\x6d\42\40\150\162\x65\146\75\42\x2f\x72\x75\142\162\x69\143\55\160\x72\x65\x76\151\x65\x77\57" . $row->id . "\x22\x20\164\141\x72\x67\x65\x74\75\x22\137\142\x6c\141\156\153\42\x3e\x50\x72\145\166\151\145\x77\40\x52\165\x62\x72\x69\143\x3c\57\141\76\12\11\x9\11\x9\x9\11\11\x3c\x61\x20\143\x6c\x61\x73\163\x3d\x22\x64\x72\x6f\x70\144\x6f\167\156\55\151\164\x65\155\x22\x20\x68\x72\x65\x66\75\42\57\145\x64\151\x74\55\x72\x75\x62\x72\x69\143\57" . $row->id . "\42\x20\164\x61\x72\147\145\164\75\x22\x5f\142\x6c\141\x6e\x6b\x22\76\x45\x64\x69\164\x20\x52\x75\x62\162\x69\x63\x3c\x2f\141\76\xa\x9\x9\x9\x9\11\11\x9\x3c\141\x20\143\x6c\x61\x73\163\75\x22\x64\162\x6f\160\x64\x6f\167\x6e\x2d\x69\x74\x65\x6d\40\162\x75\x62\162\x69\x63\101\x72\x63\150\151\166\x65\x22\40\x64\141\x74\x61\55\x69\144\75\42" . $row->id . "\42\x20\x20\x68\162\x65\x66\x3d\42\43\42\x3e\x41\x72\143\x68\x69\x76\x65\x20\122\165\x62\x72\x69\143\74\x2f\141\x3e\xa\11\11\x9\11\x9\11\x3c\57\144\x69\x76\x3e\xa\11\11\11\x9\x9\x3c\57\x64\151\166\76"; return $btn; })->rawColumns(array("\141\143\x74\151\x6f\x6e"))->make(true); } public function ClassAccountDeleteAction(Request $request) { $id = $request->UserID; Classes::where("\151\x64", $id)->delete(); return response()->json(array("\141\160\160\x72\x6f\x76\x65\144" => "\103\154\141\163\x73\40\150\x61\163\x20\142\145\145\156\x20\144\x65\154\145\164\x65\x64\40\163\x75\x63\143\145\x73\x73\x66\x75\x6c\154\x79\56")); } public function UnassignRubric(Request $request) { $id = $request->UserID; $result = Classes::where("\x69\144", $id)->update(array("\x72\165\x62\162\x69\x63\137\x61\x73\x73\151\147\x6e\x65\x64" => null)); if ($result) { return response()->json(array("\x75\156\141\163\163\151\x67\156\145\144" => "\122\165\142\162\151\143\x20\150\x61\x73\40\x62\x65\145\x6e\x20\162\x65\x6d\x6f\x76\145\x64\x20\163\165\x63\143\x65\x73\x73\146\165\154\x6c\x79\x2e")); } } public function ClassEditbtnFetch(Request $request) { $data = Classes::find($request->Cupdatebutton); $week_days = DB::table("\167\x65\x65\x6b\x5f\x64\141\171\163")->where("\x63\154\x61\x73\x73\137\x69\x64", $data->schedule_id)->get(); return response()->json(array("\x43\154\x61\163\x73\104\141\164\x61" => $data, "\x57\145\x65\153\x44\141\x79\163\137\x64\141\164\141" => $week_days)); } public function fetchClass() { $data = DB::table("\x63\154\141\x73\163\x65\x73")->get(); return response()->json(array("\143\x6c\141\x73\163\x44\141\x74\x61" => $data)); } public function EditClassData(Request $request) { $validated = Validator::make($request->all(), array("\143\x6c\141\x73\x73\156\x61\155\145" => "\162\x65\161\x75\151\x72\x65\x64", "\143\154\141\x73\163\151\156\x66\157" => "\x72\145\x71\x75\x69\162\x65\x64", "\x63\154\141\x73\163\111\104" => "\162\x65\x71\165\x69\x72\x65\144"), array("\x63\x6c\141\163\163\156\x61\x6d\145\x2e\x72\x65\161\165\151\162\145\x64" => "\124\x68\x65\40\103\x6c\141\x73\163\x20\x4e\141\155\x65\40\x66\151\145\x6c\x64\40\151\x73\40\162\x65\x71\165\x69\162\x65\x64", "\143\154\x61\163\163\151\156\146\x6f\x2e\x72\145\161\x75\x69\x72\145\144" => "\124\x68\145\40\x43\154\141\x73\x73\40\111\x6e\x66\x6f\x20\x66\151\145\154\x64\x20\x69\x73\40\162\x65\x71\x75\151\162\x65\x64", "\x70\x69\x63\56\x72\145\x71\x75\x69\162\145\x64" => "\124\150\145\40\x50\151\x63\164\165\x72\145\x20\146\x69\x65\154\144\x20\151\163\x20\162\x65\x71\165\x69\162\x65\x64", "\x70\x69\143\56\155\x69\155\x65\x73" => "\x54\150\x65\40\x43\154\141\163\x73\x20\x50\151\143\164\165\x72\145\40\155\165\x73\164\x20\x62\x65\x20\x61\x20\146\x69\154\145\x20\157\x66\x20\x74\171\160\x65\72\40\x6a\160\x65\x67\54\40\x67\x69\x66\x2c\x20\x70\156\147\x2c\40\x4a\x50\x45\x47\54\x20\x47\x49\106\54\x20\x50\116\107\56")); if ($validated->fails()) { return response()->json(array("\x65\162\162\x6f\162\x73" => $validated->errors()->first())); } else { if ($request->m == '') { $day_check = DB::table("\167\x65\x65\153\x5f\x64\141\171\x73")->where("\x63\x6c\x61\x73\x73\137\151\x64", $request->classID)->where("\144\x61\x79", "\115\x6f\156\x64\x61\171")->first(); if ($day_check) { DB::table("\167\x65\x65\153\137\144\x61\x79\x73")->where("\143\x6c\141\163\163\x5f\x69\x64", $request->classID)->where("\144\x61\171", "\x4d\157\156\x64\x61\171")->delete(); } $m = "\146\141\154\163\145"; } else { $m = $request->m; } if ($request->t == '') { $day_check = DB::table("\167\145\x65\x6b\x5f\144\x61\x79\163")->where("\143\154\141\x73\163\137\151\144", $request->classID)->where("\x64\x61\x79", "\124\x75\145\163\144\141\x79")->first(); if ($day_check) { DB::table("\167\145\x65\153\137\x64\x61\x79\163")->where("\x63\154\x61\x73\163\x5f\x69\x64", $request->classID)->where("\x64\x61\171", "\x54\165\x65\x73\x64\141\x79")->delete(); } $t = "\x66\x61\154\163\145"; } else { $t = $request->t; } if ($request->w == '') { $day_check = DB::table("\x77\x65\x65\x6b\x5f\x64\141\x79\x73")->where("\143\x6c\x61\x73\x73\137\x69\144", $request->classID)->where("\x64\x61\171", "\127\145\144\156\145\163\x64\x61\x79")->first(); if ($day_check) { DB::table("\x77\145\x65\x6b\137\x64\141\x79\x73")->where("\x63\154\x61\x73\163\x5f\x69\144", $request->classID)->where("\x64\141\x79", "\x57\145\x64\156\x65\163\144\141\171")->delete(); } $w = "\146\x61\154\163\x65"; } else { $w = $request->w; } if ($request->th == '') { $day_check = DB::table("\167\x65\145\153\x5f\144\141\x79\163")->where("\143\x6c\x61\x73\163\137\x69\x64", $request->classID)->where("\x64\141\x79", "\x54\150\165\162\x73\144\x61\171")->first(); if ($day_check) { DB::table("\167\145\145\153\x5f\144\141\x79\163")->where("\x63\154\141\163\x73\137\151\x64", $request->classID)->where("\144\x61\171", "\x54\150\165\x72\x73\144\x61\x79")->delete(); } $th = "\x66\141\x6c\163\145"; } else { $th = $request->th; } if ($request->f == '') { $day_check = DB::table("\x77\145\145\153\137\x64\141\171\x73")->where("\143\154\141\163\x73\137\x69\144", $request->classID)->where("\144\141\171", "\106\162\151\144\x61\x79")->first(); if ($day_check) { DB::table("\167\145\x65\153\x5f\x64\x61\x79\163")->where("\143\x6c\141\163\x73\x5f\151\x64", $request->classID)->where("\144\141\x79", "\x46\162\151\144\x61\171")->delete(); } $f = "\146\x61\x6c\163\x65"; } else { $f = $request->f; } if ($request->sat == '') { $day_check = DB::table("\x77\x65\145\153\137\144\141\171\x73")->where("\x63\154\141\x73\x73\137\151\x64", $request->classID)->where("\144\141\171", "\123\x61\x74\x75\x72\144\x61\x79")->first(); if ($day_check) { DB::table("\167\145\145\153\x5f\x64\141\x79\x73")->where("\143\154\x61\x73\x73\137\151\x64", $request->classID)->where("\144\141\171", "\123\141\164\x75\162\x64\x61\x79")->delete(); } $sat = "\x66\x61\x6c\x73\145"; } else { $sat = $request->sat; } if ($request->s == '') { $day_check = DB::table("\x77\x65\x65\x6b\x5f\144\141\x79\163")->where("\143\x6c\x61\x73\163\137\151\x64", $request->classID)->where("\x64\141\x79", "\x53\165\x6e\144\x61\x79")->first(); if ($day_check) { DB::table("\x77\x65\x65\153\137\x64\141\x79\163")->where("\x63\154\141\163\163\x5f\x69\x64", $request->classID)->where("\x64\141\171", "\123\x75\156\x64\x61\171")->delete(); } $s = "\146\141\x6c\x73\x65"; } else { $s = $request->s; } $ref_id = $request->classID; $class_id_fetch = DB::table("\143\154\141\x73\x73\x65\163")->where("\x73\143\150\x65\x64\x75\x6c\x65\x5f\x69\x64", $request->classID)->first(); $editClass = Classes::find($class_id_fetch->id); $editClass->classname = $request->classname; $editClass->classinfo = $request->classinfo; $editClass->updated_by = Session::get("\156\x61\155\145"); $editClass->m = $m; $editClass->t = $t; $editClass->w = $w; $editClass->th = $th; $editClass->f = $f; $editClass->sat = $sat; $editClass->s = $s; $editClass->start = $request->start; $editClass->end = $request->end; $editClass->save(); if ($request->m != '') { $day_check = DB::table("\x77\x65\x65\153\137\x64\141\171\x73")->where("\143\x6c\141\163\x73\137\151\x64", $request->classID)->where("\x64\141\171", "\115\157\156\x64\141\x79")->first(); if (!$day_check) { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\115\157\156\144\x61\171"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } } if ($request->t != '') { $day_check = DB::table("\167\145\x65\153\x5f\x64\141\x79\163")->where("\143\x6c\x61\163\163\137\x69\144", $request->classID)->where("\144\x61\171", "\124\165\x65\x73\x64\x61\171")->first(); if (!$day_check) { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\x54\165\145\x73\144\141\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } } if ($request->w != '') { $day_check = DB::table("\167\x65\145\153\x5f\x64\x61\171\x73")->where("\143\154\x61\x73\163\137\151\x64", $request->classID)->where("\x64\141\171", "\x57\x65\x64\x6e\x65\163\x64\x61\171")->first(); if (!$day_check) { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\127\x65\144\156\145\x73\x64\x61\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } } if ($request->th != '') { $day_check = DB::table("\x77\145\x65\153\137\144\141\171\163")->where("\x63\154\141\163\x73\x5f\x69\144", $request->classID)->where("\x64\x61\x79", "\124\150\x75\x72\x73\x64\x61\x79")->first(); if (!$day_check) { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\124\x68\165\162\163\x64\x61\171"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } } if ($request->f != '') { $day_check = DB::table("\167\x65\145\153\137\x64\141\171\x73")->where("\x63\x6c\x61\163\x73\137\151\x64", $request->classID)->where("\x64\141\171", "\106\162\x69\x64\x61\171")->first(); if (!$day_check) { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\106\162\x69\144\141\171"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } } if ($request->sat != '') { $day_check = DB::table("\167\x65\145\x6b\137\x64\141\x79\163")->where("\143\154\141\163\163\137\x69\144", $request->classID)->where("\144\x61\171", "\123\x61\164\165\162\x64\x61\x79")->first(); if (!$day_check) { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\123\141\164\165\162\144\x61\171"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } } if ($request->s != '') { $day_check = DB::table("\167\145\x65\x6b\137\x64\141\171\x73")->where("\143\154\141\163\x73\x5f\x69\x64", $request->classID)->where("\x64\x61\x79", "\x53\x75\156\144\141\x79")->first(); if (!$day_check) { $NewSchedule = new weekDays(); $NewSchedule->class_id = $ref_id; $NewSchedule->day = "\123\165\x6e\144\141\x79"; $NewSchedule->start = $request->start; $NewSchedule->end = $request->end; $NewSchedule->save(); } } $all_day_check = DB::table("\167\145\x65\153\x5f\144\141\171\163")->where("\143\154\141\163\163\x5f\151\144", $request->classID)->get(); foreach ($all_day_check as $data) { $updateTime = weekDays::find($data->id); $updateTime->start = $request->start; $updateTime->end = $request->end; $updateTime->save(); } return response()->json(array("\151\156\163\145\x72\164\145\144" => "\103\154\141\x73\163\40\104\141\164\x61\x20\x68\141\x73\x20\x62\x65\x65\x6e\x20\x75\x70\x64\x61\x74\145\144\x2e")); } } public function store(Request $request) { $file = $request->upload; $fileName = $file->getClientOriginalName(); $New_name = time() . $fileName; $dir = "\163\164\157\162\141\x67\x65\x2f\110\x6f\x6d\x65\x50\x61\x67\x65\x50\x69\x63\164\x75\162\145\163\x2f"; $file->move($dir, $New_name); $url = asset("\x73\x74\157\162\141\x67\x65\57\x48\157\x6d\x65\x50\x61\147\145\x50\151\x63\x74\165\162\x65\163\x2f" . $New_name); $CkeditorFuncNum = $request->input("\x43\113\105\x64\151\164\x6f\x72\x46\165\x6e\x63\116\165\155"); $status = "\74\163\143\x72\x69\160\164\x3e\x77\x69\156\144\x6f\167\56\160\x61\x72\x65\x6e\164\x2e\103\x4b\105\104\x49\124\117\122\x2e\x74\x6f\x6f\154\163\56\x63\141\154\154\106\165\x6e\x63\164\151\x6f\156\x28\47{$CkeditorFuncNum}\x27\x2c\40\x27{$url}\x27\54\x20\47\x46\x69\154\145\x20\x68\x61\x73\x20\x62\x65\145\156\x20\165\160\x6c\157\141\x64\145\144\x2e\47\51\74\x2f\163\x63\x72\x69\x70\x74\x3e"; echo $status; } public function HomePageUpdate(Request $request) { $validated = Validator::make($request->all(), array("\x48\157\x6d\x65\x45\x64\151\x74\x6f\x72" => "\162\145\161\165\x69\162\x65\144"), array("\110\157\x6d\x65\105\144\x69\x74\x6f\162\x2e\x72\145\161\x75\151\162\x65\144" => "\124\x68\145\x20\105\144\x69\164\x6f\162\x20\x66\151\145\154\x64\40\x69\x73\x20\x72\145\x71\x75\x69\x72\145\x64")); if ($validated->fails()) { return redirect()->back()->withErrors(array("\x65\155\160\164\x79\x5f\x65\x72\162\157\x72" => $validated->errors()->first())); } else { $HomeEdit = HomePage::find("\61"); $HomeEdit->HomeContent = $request->HomeEditor; $HomeEdit->save(); return redirect()->back()->with(array("\163\x75\x63\x63\x65\163\163" => "\124\x68\145\40\x48\157\x6d\x65\40\x50\141\x67\x65\40\x68\141\x73\x20\142\x65\145\156\40\165\160\144\141\x74\145\x64\x2e")); } } public function insertnewClassExWithEditor(Request $request) { $validated = Validator::make($request->all(), array("\145\170\116\141\x6d\145\105\x64\151\164\157\x72" => "\162\145\161\x75\x69\x72\x65\144", "\x65\x78\x69\x64\x45\144\151\x74\x6f\162" => "\x72\145\x71\x75\151\x72\145\x64", "\x45\170\x45\x64\151\x74\157\x72" => "\x72\x65\161\x75\x69\x72\x65\144"), array("\145\170\x4e\141\155\x65\105\144\x69\164\157\162\56\x72\x65\x71\165\151\x72\x65\x64" => "\x54\x68\x65\x20\105\x78\160\145\162\151\155\x65\156\x74\40\x4e\141\x6d\x65\40\146\x69\x65\154\x64\40\151\163\40\162\x65\161\165\151\162\x65\144", "\x65\x78\151\x64\x45\144\151\x74\x6f\x72\x2e\162\x65\x71\x75\x69\x72\145\x64" => "\x45\162\x72\x6f\162\x20\122\145\154\x6f\x61\x64\40\x74\x68\x65\x20\160\141\147\x65", "\105\x78\105\x64\151\x74\157\162\x2e\x72\145\161\165\151\x72\145\144" => "\x54\x68\145\x20\105\x78\160\x65\x72\x69\x6d\145\x6e\164\x60\163\40\105\x64\x69\164\157\x72\40\146\151\x65\x6c\144\x20\x69\x73\40\162\x65\161\x75\151\162\145\x64")); if ($validated->fails()) { return response()->json(array("\145\162\162\x6f\162\x73" => $validated->errors()->first())); } else { $newEx = new classEx(); $newEx->class_id = $request->exidEditor; $newEx->ex_name = $request->exNameEditor; $newEx->ExCreated = $request->ExEditor; $newEx->save(); return response()->json(array("\x69\x6e\163\145\x72\x74\145\x64" => "\x4e\x65\167\x20\105\170\x70\145\162\151\x6d\145\156\164\40\150\x61\x73\x20\x62\145\145\156\40\x73\x75\x62\x6d\x69\x74\x74\145\x64\56")); } } public function ViewExperiment(Request $request) { $apps_check = DB::table("\163\x6d\x61\x72\x74\154\141\x62\137\141\x70\x70\x73")->where("\143\x6c\141\163\x73\105\x78\x5f\x69\x64", $request->ID)->get(); if ($apps_check->isNotEmpty()) { $data = DB::table("\143\154\141\x73\x73\x5f\145\x78\x65\163")->select("\x63\154\141\x73\163\x5f\145\170\x65\x73\x2e\52", "\x73\155\x61\x72\164\154\x61\142\x5f\141\160\x70\x73\x2e\52", "\x63\154\141\163\x73\x5f\145\170\x65\x73\56\151\x64\x20\x61\163\x20\x6c\x69\156\x6b\x4e\141\x6d\145")->join("\163\155\x61\x72\x74\x6c\x61\x62\137\x61\x70\x70\x73", "\x63\x6c\141\x73\163\x5f\x65\x78\145\163\56\x69\x64", "\x3d", "\x73\155\x61\162\164\154\x61\142\x5f\141\160\x70\163\56\143\x6c\x61\163\x73\105\170\137\x69\144")->where("\143\x6c\x61\163\x73\x5f\x65\170\x65\163\x2e\x63\154\141\x73\163\x5f\x69\x64", $request->ID)->get(); $data_score = DB::table("\145\x78\160\145\x72\151\x6d\x65\x6e\164\137\162\x65\160\157\162\164\163")->where("\x45\x78\160\x65\x72\151\x6d\145\x6e\164\x5f\x69\x64", $request->ID)->where("\165\163\145\162\x5f\151\x64", Session::get("\165\x73\x65\162\x6e\x61\155\145"))->first(); return response()->json(array("\x44\x61\164\x61\105\x58" => $data, "\x44\x61\164\x61\137\x73\x63\157\x72\145" => $data_score)); } else { $data = DB::table("\x63\154\x61\x73\x73\137\x65\170\145\163")->select("\x63\x6c\141\x73\x73\137\145\x78\x65\163\x2e\x2a", "\163\x6d\x61\x72\164\x6c\x61\142\137\141\160\160\163\x2e\x2a", "\x63\x6c\x61\x73\x73\x5f\x65\x78\145\x73\56\151\x64\x20\x61\163\40\x6c\151\156\153\116\141\x6d\x65")->join("\x73\155\141\162\x74\x6c\141\142\x5f\x61\x70\160\x73", "\x63\x6c\141\x73\163\x5f\145\x78\145\163\56\151\144", "\75", "\x73\155\x61\162\164\154\141\142\x5f\141\x70\x70\163\56\x63\154\141\x73\163\105\170\x5f\151\x64")->where("\143\x6c\141\x73\x73\137\145\170\x65\163\x2e\x63\154\141\x73\163\x5f\x69\x64", $request->ID)->get(); $data_score = DB::table("\x65\170\x70\145\x72\x69\155\x65\156\164\137\x72\145\x70\157\x72\x74\163")->where("\x45\x78\x70\x65\162\151\155\x65\x6e\x74\137\x69\x64", $request->ID)->where("\x75\x73\145\162\x5f\x69\144", Session::get("\x75\163\x65\x72\x6e\141\155\145"))->first(); return response()->json(array("\104\x61\x74\141\x45\130" => $data, "\x44\x61\x74\x61\x5f\x73\x63\x6f\x72\145" => $data_score)); } } public function AppsFetch(Request $request) { $data = DB::table("\143\154\x61\x73\x73\x5f\145\x78\x65\x73")->select("\x63\154\x61\x73\x73\137\145\x78\145\x73\56\52", "\163\155\141\162\164\154\141\x62\137\x61\160\160\163\56\52", "\143\x6c\x61\x73\x73\137\x65\170\145\163\x2e\151\x64\x20\141\x73\x20\x6c\x69\x6e\153\116\141\155\145")->leftJoin("\x73\x6d\141\162\x74\x6c\x61\x62\x5f\x61\x70\160\163", "\143\154\x61\163\x73\x5f\145\170\x65\163\x2e\x69\x64", "\x3d", "\163\x6d\141\x72\164\x6c\x61\x62\x5f\141\x70\x70\163\56\x63\x6c\x61\x73\163\105\170\x5f\151\x64")->where("\143\154\x61\163\163\137\x65\170\x65\163\56\151\x64", $request->ID)->get(); return DataTables::of($data)->addIndexColumn()->addColumn("\105\x78\x70\145\x72\151\155\x65\156\164\x4e\141\155\145", function ($row) { if (!empty($row->ex_file)) { $btn = "\74\x61\40\x74\141\x72\x67\x65\x74\x3d\x22\137\142\154\141\156\x6b\x22\x20\x68\162\145\x66\75\42\x43\154\x61\163\x73\x45\170\x2f" . $row->ex_file . "\x22\76" . $row->ex_name . "\74\x2f\x61\76"; return $btn; } else { if (!empty($row->ExCreated)) { $btn = "\x3c\141\40\x74\x61\162\147\x65\164\75\x22\x5f\142\x6c\x61\156\153\x22\x20\150\x72\145\x66\75\42\x65\x78\160\145\x72\x69\x6d\x65\x6e\164\57" . $row->linkName . "\42\76" . $row->ex_name . "\74\57\x61\76"; return $btn; } } })->addColumn("\x41\160\160", function ($row) { if ($row->app_name == "\104\151\x67\x69\164\x61\154\40\103\151\x72\x63\165\151\x74") { $btn = "\74\x61\x20\x74\x61\162\x67\x65\x74\75\x22\137\x62\x6c\141\156\153\42\x20\x68\x72\145\x66\x3d\42\x2f\x73\151\x6d\x75\x6c\x61\x74\157\162\77\141\x70\160\x3d\x44\103\42\x20\x63\154\141\163\x73\75\42\142\164\x6e\x20\142\164\156\x2d\x64\x61\156\x67\x65\x72\x22\76" . $row->app_name . "\74\x2f\x61\76"; return $btn; } if ($row->app_name == "\104\151\147\151\164\x61\154\x20\101\x72\144\165\x69\156\157") { $btn = "\x3c\141\40\x74\x61\x72\x67\x65\x74\x3d\42\x5f\142\154\141\156\153\42\40\x68\162\x65\146\75\x22\57\163\x69\155\165\x6c\x61\x74\x6f\x72\x3f\141\160\160\75\x44\101\42\40\143\x6c\x61\163\x73\x3d\x22\x62\x74\x6e\40\142\x74\156\x2d\144\x61\x6e\147\145\162\x22\x3e" . $row->app_name . "\74\57\141\76"; return $btn; } })->rawColumns(array("\x41\x70\160", "\x45\170\x70\x65\162\x69\x6d\x65\x6e\x74\x4e\x61\x6d\x65"))->make(true); } public function insertnewExperimentReport(Request $request) { $classID = $request->class_id; $validated = Validator::make($request->all(), array("\105\x78\160\145\x72\151\155\x65\156\x74\111\104" => "\x72\145\161\165\x69\162\145\144", "\x52\x65\160\157\x72\x74\x46\x69\x6c\x65" => "\x72\x65\161\x75\x69\162\145\x64", "\x52\x65\160\x6f\162\164\106\151\154\x65" => "\162\x65\x71\x75\x69\162\145\x64\x7c\155\151\155\x65\x73\72\x70\x64\146"), array("\x45\x78\160\145\x72\151\155\x65\156\164\x49\104\56\162\145\x71\x75\x69\162\x65\x64" => "\124\x68\x65\40\105\x78\x70\145\162\151\x6d\145\x6e\164\40\116\x61\x6d\x65\x20\x66\x69\145\154\144\40\x69\163\40\162\145\161\165\151\x72\145\144", "\x65\170\151\x64\x2e\162\x65\x71\165\x69\162\x65\144" => "\105\x72\x72\157\162\x20\x52\145\x6c\157\x61\144\x20\x74\150\x65\40\160\x61\x67\x65", "\122\145\x70\x6f\x72\164\x46\x69\x6c\145\x2e\x72\145\x71\x75\151\x72\145\144" => "\x54\150\145\x20\105\170\160\145\162\x69\x6d\x65\x6e\164\40\122\145\x70\x6f\x72\164\40\146\151\x6c\145\x20\x66\x69\x65\x6c\144\40\x69\x73\40\162\145\161\165\x69\162\x65\144", "\122\x65\160\x6f\162\x74\x46\151\x6c\145\56\x6d\151\x6d\x65\163" => "\124\150\145\40\105\170\x70\145\162\x69\155\x65\x6e\164\x20\x52\x65\x70\157\x72\x74\40\146\x69\154\145\x20\155\165\163\x74\40\142\x65\40\141\x20\120\x44\x46\40\x66\x69\154\x65")); if ($validated->fails()) { return response()->json(array("\145\162\162\x6f\x72\x73" => $validated->errors()->first())); } else { $check_if_labReport_submitted = DB::table("\x65\x78\x70\145\162\x69\155\145\x6e\164\x5f\162\x65\160\x6f\x72\x74\x73")->where("\x45\x78\160\145\162\x69\155\x65\156\164\137\x69\x64", $request->ExperimentID)->where("\165\x73\145\162\x5f\x69\x64", Session::get("\x75\x73\145\162\x6e\141\155\x65"))->first(); if ($check_if_labReport_submitted) { if ($pdf = $request->file("\x52\x65\160\x6f\162\164\x46\x69\x6c\x65")) { $filename = $pdf->getClientOriginalName(); if ($pdf->move("\105\170\160\x65\x72\x69\x6d\x65\156\164\x52\x65\x70\157\162\x74", $filename)) { DB::table("\145\x78\160\145\162\x69\155\x65\156\x74\137\162\145\160\157\162\164\163")->where("\x45\170\x70\x65\162\151\155\x65\x6e\164\137\151\x64", $request->ExperimentID)->where("\165\x73\145\x72\137\x69\144", Session::get("\165\x73\145\x72\156\x61\155\145"))->update(array("\x52\145\160\x6f\162\x74\137\146\x69\154\145" => $filename)); return response()->json(array("\151\156\163\x65\162\164\145\x64" => "\114\x61\142\x20\x52\145\x70\x6f\162\164\x20\150\141\x73\40\142\x65\x65\x6e\x20\165\x70\x64\x61\164\x65\x64\56")); } } } else { if ($pdf = $request->file("\122\x65\x70\157\162\164\x46\151\x6c\x65")) { $filename = $pdf->getClientOriginalName(); if ($pdf->move("\x45\170\160\x65\x72\x69\x6d\x65\156\x74\x52\x65\160\x6f\x72\164", $filename)) { $check = DB::table("\143\154\141\x73\163\x65\x73")->select("\x72\x75\142\x72\x69\143\x5f\x61\x73\x73\x69\147\156\145\144")->where("\x69\x64", $classID)->get(); $newEx = new ExperimentReport(); $newEx->Experiment_id = $request->ExperimentID; $newEx->Report_file = $filename; $newEx->user_id = Session::get("\x75\x73\145\162\156\141\x6d\x65"); $newEx->class_id = $classID; $newEx->save(); $act_name = DB::table("\x63\154\x61\163\163\x5f\x65\x78\x65\x73")->select("\145\170\x5f\x6e\141\155\145")->where("\151\x64", $request->ExperimentID)->get(); $saveGrade = new RubricGrades(); $saveGrade->u_id = Session::get("\165\163\145\162\156\141\155\145"); $saveGrade->total_score = "\x4e\x2f\x41"; $saveGrade->rank = "\x4e\57\x41"; $saveGrade->id_rubric = $check[0]->rubric_assigned; $saveGrade->feedback = "\x4e\57\x41"; $saveGrade->class_id = $classID; $saveGrade->act_id = $request->ExperimentID; $saveGrade->act_name = $act_name[0]->ex_name; $saveGrade->report_file = $filename; $saveGrade->created_by = "\x4e\x2f\101"; $saveGrade->save(); return response()->json(array("\151\x6e\163\x65\162\x74\x65\x64" => "\116\145\x77\x20\114\141\142\40\122\x65\x70\157\162\x74\40\x68\x61\x73\x20\x62\x65\145\156\x20\163\165\142\x6d\x69\x74\x74\x65\x64\56")); } } } } } public function ReportsSubmitted(Request $request) { $classID = Classes::find(classEx::find($request->ID)->class_id)->id; $check = DB::table("\x63\154\141\163\163\x65\163")->select("\162\165\x62\x72\x69\x63\137\141\x73\x73\x69\147\156\145\x64")->where("\151\x64", $classID)->get(); $hasRubric = DB::table("\143\x6c\141\163\x73\145\x73")->select("\x72\x75\x62\162\151\x63\137\x61\163\163\x69\147\x6e\145\x64")->where("\151\144", $classID)->whereNotNull("\162\165\x62\162\151\143\137\x61\163\163\x69\147\x6e\145\x64")->first(); if ($hasRubric) { $data = DB::table("\x75\x73\x65\162\163")->select("\x75\163\x65\x72\x73\56\x2a", "\162\x75\142\162\x69\143\137\x67\162\x61\144\x65\x73\56\52", "\165\x73\145\x72\163\x2e\x69\x64\40\x61\163\x20\x55\163\x65\x72\x49\104")->join("\162\165\x62\162\x69\143\137\x67\x72\141\144\145\x73", "\165\163\x65\x72\163\x2e\151\x64", "\75", "\162\x75\142\162\151\143\x5f\147\x72\141\x64\145\163\x2e\x75\137\151\144")->where("\x72\x75\x62\x72\x69\143\137\x67\162\141\144\x65\x73\56\141\x63\x74\137\151\x64", $request->ID)->get(); return DataTables::of($data)->addIndexColumn()->addColumn("\141\x63\x74\x69\x6f\156", function ($row) { $rubricID = Classes::find(classEx::find($row->act_id)->class_id)->rubric_assigned; $classID1 = Classes::find(classEx::find($row->act_id)->class_id)->id; $userID = $row->u_id; $btn = "\74\141\40\x68\162\x65\x66\40\x3d\x20\42\x2f\x72\165\x62\x72\151\143\55\x67\162\x61\144\x65\x2f" . $rubricID . "\x2f" . $classID1 . "\x2f" . $row->act_id . "\57" . $userID . "\42\x20\164\141\162\147\145\164\x20\x3d\x20\x22\137\142\x6c\x61\156\153\42\40\143\154\141\x73\x73\x3d\x22\142\164\156\x20\x20\142\x74\156\x2d\x73\155\x22\x20\x73\x74\171\x6c\145\75\42\142\141\x63\x6b\x67\x72\x6f\165\x6e\144\x2d\143\x6f\154\157\x72\x3a\x20\147\x6f\154\144\73\x20\143\157\x6c\157\x72\x3a\40\167\x68\x69\164\x65\73\x22\76\122\x75\142\x72\151\143\x20\107\162\x61\144\145\x3c\57\141\x3e"; return $btn; })->addColumn("\x46\151\x6c\x65\123\165\142\x6d\151\x74\x74\x65\144", function ($row) { $btn = "\74\x61\x20\164\141\x72\x67\145\164\75\x22\x5f\x62\154\x61\x6e\153\x22\x20\x68\x72\x65\x66\75\x22\105\170\x70\145\162\151\x6d\x65\x6e\164\x52\x65\x70\x6f\x72\x74\57" . $row->report_file . "\x22\76\126\x69\145\167\x20\x4c\101\x42\x20\x52\x65\x70\x6f\x72\x74\74\57\141\76"; return $btn; })->rawColumns(array("\x61\x63\x74\151\x6f\156", "\x46\151\154\x65\x53\x75\x62\155\151\164\164\145\144"))->make(true); } else { $data = DB::table("\165\163\145\162\x73")->select("\x75\163\145\162\163\x2e\x2a", "\x65\x78\x70\145\x72\151\x6d\x65\x6e\164\x5f\162\145\160\157\x72\164\163\56\x2a", "\x65\170\x70\145\x72\x69\x6d\x65\156\164\137\x72\145\160\157\162\164\x73\x2e\105\170\160\145\162\151\x6d\x65\x6e\x74\137\151\144\40\x61\x73\x20\x45\x78\160\x65\x72\151\x6d\x65\156\x74\x49\104", "\x75\163\145\x72\x73\x2e\151\144\x20\141\163\x20\x55\x73\145\162\x49\104", "\145\170\160\x65\162\151\155\145\156\x74\137\x72\x65\x70\157\x72\x74\163\x2e\151\144\40\x61\x73\x20\x45\x78\160\x65\x72\151\155\145\x6e\x74\137\111\104")->join("\145\x78\160\145\x72\151\x6d\145\x6e\x74\137\x72\x65\160\x6f\162\x74\x73", "\165\x73\x65\162\x73\x2e\151\x64", "\x3d", "\x65\170\x70\x65\x72\x69\x6d\145\x6e\x74\137\x72\145\160\157\162\x74\163\56\165\x73\145\x72\137\151\x64")->where("\x65\170\x70\145\162\151\155\145\156\164\x5f\162\145\160\157\x72\x74\x73\56\x45\x78\x70\x65\162\x69\x6d\x65\x6e\164\137\151\144", $request->ID)->get(); return DataTables::of($data)->addIndexColumn()->addColumn("\x61\x63\x74\x69\x6f\x6e", function ($row) { $btn = "\x3c\142\165\164\164\x6f\156\x20\143\154\x61\163\163\75\42\142\164\156\x20\40\x62\x74\x6e\x2d\163\x6d\40\x41\x64\x64\x47\x72\x61\x64\145\x42\x74\x6e\x22\40\163\164\x79\x6c\145\75\x22\142\141\143\x6b\x67\162\157\x75\x6e\144\x2d\x63\157\154\x6f\162\72\40\x67\157\x6c\144\73\40\143\157\154\x6f\x72\72\x20\167\x68\x69\x74\x65\x3b\40\42\40\144\141\x74\141\x2d\151\x64\75\42" . $row->Experiment_ID . "\x22\76\107\162\x61\x64\145\x3c\x2f\x62\x75\x74\164\157\x6e\x3e"; return $btn; })->addColumn("\x46\151\154\145\123\x75\142\x6d\151\164\x74\x65\x64", function ($row) { $btn = "\74\141\40\x74\x61\x72\147\x65\x74\75\42\x5f\x62\154\141\156\153\42\40\x68\x72\145\x66\x3d\42\105\x78\160\x65\162\x69\155\x65\x6e\x74\122\x65\160\x6f\x72\x74\57" . $row->Report_file . "\42\76\126\151\145\167\x20\x4c\101\102\x20\122\x65\x70\157\162\164\x3c\x2f\141\76"; return $btn; })->rawColumns(array("\141\143\164\x69\157\156", "\106\x69\x6c\145\123\165\142\x6d\x69\164\x74\x65\144"))->make(true); } } public function aDDnewGradeToExperiment(Request $request) { $Experiment_Data = DB::table("\x65\170\160\145\x72\151\155\x65\156\164\137\x72\145\160\x6f\x72\x74\x73")->where("\151\x64", $request->ID)->first(); return response()->json(array("\x45\x78\x70\145\162\x69\x6d\x65\x6e\164\x5f\x49\x44\x5f\106\x65\x74\143\150\x65\x64" => $Experiment_Data)); } public function NewGrade(Request $request) { $validated = Validator::make($request->all(), array("\x45\170\160\x65\162\x69\x6d\x65\x6e\x74\137\x69\144\137\x64\x61\164\141" => "\162\145\x71\x75\151\162\145\x64", "\165\x73\x65\x72\x5f\151\144\x5f\147\x72\141\144\145" => "\x72\x65\161\165\x69\x72\145\x64", "\x67\x72\x61\x64\145" => "\162\145\161\x75\x69\x72\x65\144"), array("\x75\x73\x65\x72\156\x61\x6d\x65\56\x72\145\161\165\151\x72\145\x64" => "\x54\150\145\40\x47\162\141\144\x65\x20\x53\x63\x6f\165\x72\145\40\146\x69\x65\154\x64\40\x69\x73\40\162\145\161\165\x69\162\145\144", "\105\x78\160\145\x72\151\155\x65\156\164\x5f\151\144\137\144\141\x74\141\56\162\145\x71\x75\x69\x72\x65\144" => "\x53\171\163\164\x65\155\x20\x45\162\162\157\x72\x2e\x20\120\x6c\x65\141\163\145\x20\x72\145\x6c\x6f\x61\144\x20\x74\x68\x65\x20\160\141\x67\x65\x20\x6f\162\40\143\157\156\x6e\164\x61\143\x74\x20\163\171\163\x74\145\155\x20\x61\x64\x6d\151\x6e\x69\x73\164\162\x61\164\157\x72\56", "\165\x73\145\x72\x5f\x69\144\x5f\147\162\x61\x64\145\56\162\145\x71\165\x69\162\x65\x64" => "\x53\171\163\164\145\x6d\x20\105\x72\162\157\162\56\x20\120\x6c\145\x61\x73\145\x20\x72\x65\x6c\157\x61\144\40\x74\150\x65\x20\160\141\147\x65\x20\157\x72\40\143\157\156\x6e\x74\x61\x63\x74\40\163\171\163\x74\145\x6d\40\x61\144\155\151\156\151\163\164\162\141\x74\157\162\56")); if ($validated->fails()) { return response()->json(array("\x65\162\162\x6f\x72\x73" => $validated->errors()->first())); } else { $check_grade = DB::table("\x65\170\160\x65\x72\x69\155\x65\156\164\137\x72\x65\x70\157\x72\164\163")->where("\x69\144", $request->Experiment_id_o)->first(); if ($request->grade_feedback == '') { if ($check_grade->feedback == "\116\x2f\x41") { $New_grade = ExperimentReport::find($request->Experiment_id_o); $New_grade->total_score = $request->grade; $New_grade->feedback = "\116\x2f\101"; $New_grade->save(); $check_report = DB::table("\145\170\160\145\162\x69\155\x65\156\x74\137\x72\145\160\x6f\x72\x74\163")->where("\151\x64", $request->Experiment_id_o)->first(); $check_experiment = DB::table("\143\x6c\x61\x73\x73\137\145\x78\x65\x73")->where("\151\144", $check_report->Experiment_id)->first(); $notify = new Notifications(); $notify->notification_text = "\131\157\x75\x72\40\107\x72\141\144\x65\x20\157\146\x20{$check_experiment->ex_name}\x20\x68\x61\x73\40\x62\x65\145\x6e\40\x75\160\144\141\164\x65\144\56\x20"; $notify->user_id_notify = $check_report->user_id; $notify->status = "\165\156\162\145\141\144"; $notify->save(); return response()->json(array("\151\156\x73\x65\x72\164\145\x64" => "\x47\x72\141\144\145\40\x73\143\x6f\162\x65\40\x68\x61\x73\x20\x62\x65\x65\x6e\40\x75\x70\144\141\x74\x65\x64\x2e")); } else { $New_grade = ExperimentReport::find($request->Experiment_id_o); $New_grade->total_score = $request->grade; $New_grade->save(); $check_report = DB::table("\145\170\x70\x65\162\x69\x6d\145\156\x74\x5f\x72\145\160\157\162\164\163")->where("\x69\144", $request->Experiment_id_o)->first(); $check_experiment = DB::table("\x63\x6c\x61\x73\163\x5f\145\170\145\163")->where("\151\x64", $check_report->Experiment_id)->first(); $notify = new Notifications(); $notify->notification_text = "\x59\157\165\x72\x20\107\x72\141\144\145\x20\x6f\146\x20{$check_experiment->ex_name}\x20\150\141\163\x20\x62\145\145\156\x20\x75\160\144\x61\164\x65\x64\56\x20"; $notify->user_id_notify = $check_report->user_id; $notify->status = "\x75\156\162\x65\x61\144"; $notify->save(); return response()->json(array("\x69\156\x73\145\x72\164\145\x64" => "\107\162\141\144\145\40\163\x63\x6f\x72\145\40\x68\x61\x73\40\142\x65\145\156\40\165\x70\144\x61\164\x65\144\56")); } } else { $New_grade = ExperimentReport::find($request->Experiment_id_o); $New_grade->total_score = $request->grade; $New_grade->feedback = $request->grade_feedback; $New_grade->save(); $check_report = DB::table("\x65\x78\160\145\162\151\x6d\x65\x6e\164\137\x72\145\160\x6f\x72\x74\163")->where("\x69\x64", $request->Experiment_id_o)->first(); $check_experiment = DB::table("\x63\154\141\x73\x73\x5f\x65\170\145\163")->where("\151\x64", $check_report->Experiment_id)->first(); $notify = new Notifications(); $notify->notification_text = "\131\157\165\162\40\107\162\141\x64\145\x20\x6f\x66\40{$check_experiment->ex_name}\x20\x68\141\163\x20\x62\145\x65\x6e\40\x75\x70\144\141\164\x65\144\x2e\x20"; $notify->user_id_notify = $check_report->user_id; $notify->status = "\x75\156\x72\x65\141\144"; $notify->save(); return response()->json(array("\151\156\x73\x65\x72\164\x65\x64" => "\107\x72\141\x64\x65\x20\x73\x63\157\162\145\40\x61\156\x64\x20\106\145\145\144\142\141\143\153\40\150\x61\x76\145\40\142\145\x65\x6e\40\x75\x70\x64\x61\164\x65\144\x2e")); } } } public function ExperimentsViewDetails(Request $request) { $class_Experiments_view = DB::table("\143\154\141\163\163\137\x65\170\x65\x73")->where("\x63\154\141\163\163\x5f\151\144", $request->classID); return DataTables::of($class_Experiments_view)->addIndexColumn()->addColumn("\x41\143\x74\x69\x6f\156", function ($row) { $btn = "\74\x64\151\166\x20\x63\x6c\141\x73\x73\x3d\x22\x62\164\156\55\147\x72\157\165\x70\x20\144\162\157\x70\x6c\x65\146\x74\x22\x3e\xa\x20\x20\x20\40\x20\x20\x20\x20\40\40\x20\x20\40\x20\x20\40\74\142\x75\x74\x74\157\x6e\x20\x74\171\160\145\x3d\42\x62\x75\x74\164\157\156\x22\40\143\x6c\x61\x73\x73\x3d\x22\142\164\156\40\142\x74\x6e\55\144\x61\x72\153\40\144\x72\x6f\x70\x64\x6f\x77\156\x2d\x74\157\x67\147\x6c\145\x22\x20\144\x61\x74\141\x2d\164\157\x67\147\154\x65\x3d\42\144\x72\157\160\x64\x6f\x77\156\x22\40\141\162\x69\141\x2d\150\141\163\x70\x6f\160\x75\x70\x3d\42\x74\x72\165\145\x22\40\x61\162\151\141\55\x65\x78\160\x61\x6e\x64\145\144\x3d\42\146\141\x6c\x73\145\x22\x3e\12\x20\40\x20\x20\40\40\40\x20\40\x20\40\x20\40\40\x20\40\x53\x65\x74\164\151\x6e\147\x73\xa\x20\40\x20\40\40\x20\40\40\40\x20\40\x20\x20\40\x20\40\x3c\57\x62\x75\x74\164\x6f\x6e\x3e\12\x20\x20\40\40\x20\x20\40\x20\40\x20\40\40\x20\40\x20\40\x3c\x64\x69\166\40\143\154\141\x73\x73\x3d\x22\144\162\157\x70\144\157\x77\x6e\55\155\x65\156\x75\40\144\162\157\x70\154\x65\x66\164\42\x3e\xa\40\40\40\x20\40\40\x20\x20\40\40\40\x20\40\40\40\x20\40\x20\74\x61\x20\143\154\141\x73\163\75\42\x64\x72\157\x70\144\157\167\x6e\55\151\164\x65\155\x20\x41\144\x64\105\170\x70\x65\162\x69\155\x65\x6e\x74\101\160\160\102\x74\x6e\42\40\x68\162\x65\146\75\42\x23\42\40\144\141\164\141\x2d\151\x64\x3d\x22" . $row->id . "\42\76\x41\144\x64\40\x4e\x65\x77\x20\x41\160\x70\74\57\x61\x3e\12\40\40\x20\40\x20\x20\x20\x20\40\x20\x20\x20\x20\x20\x20\x20\x20\x20\74\141\x20\x63\x6c\x61\163\x73\x3d\x22\x64\x72\157\x70\x64\x6f\x77\156\55\x69\164\145\155\x20\x45\x78\x70\x65\162\151\x6d\145\x6e\164\126\151\x65\x77\x41\160\x70\102\x74\156\42\40\x64\141\164\141\55\151\144\x3d\42" . $row->id . "\x22\x20\150\162\145\x66\x3d\42\43\42\x3e\126\151\x65\167\40\x45\170\160\145\162\x69\x6d\x65\x6e\x74\x20\101\160\x70\x73\74\57\141\76\xa\40\x20\x20\40\x20\40\x20\x20\x20\40\x20\40\40\40\x20\x20\40\40\x3c\x61\40\143\154\141\163\x73\75\x22\144\162\157\x70\144\x6f\167\156\x2d\x69\x74\x65\x6d\40\x56\x69\x65\167\105\170\x70\x65\162\151\x6d\145\156\164\123\165\x62\155\x69\x73\163\x69\157\x6e\163\x42\164\156\x22\40\x64\141\x74\x61\55\x69\144\x3d\42" . $row->id . "\42\40\150\x72\145\146\75\42\43\42\76\126\x69\x65\167\40\123\x75\x62\155\x69\163\x73\151\157\156\x73\x3c\x2f\141\76\xa\40\40\40\40\x20\x20\40\x20\x20\40\40\40\x20\x20\40\40\x20\40\74\141\x20\143\154\x61\163\x73\x3d\x22\144\162\157\x70\x64\157\167\x6e\x2d\x69\x74\x65\x6d\40\144\145\x6c\145\x74\145\105\x78\160\x65\162\151\155\x65\x6e\x74\102\164\156\42\x20\150\162\145\x66\x3d\x22\x23\x22\x20\144\141\164\x61\x2d\151\144\x3d\x22" . $row->id . "\x22\x3e\x44\145\x6c\145\164\x65\x20\x45\170\x70\145\x72\151\x6d\x65\156\164\74\57\x61\x3e\12\x20\x20\x20\x20\x20\x20\40\40\x20\x20\40\x20\40\40\40\x20\74\x2f\x64\x69\x76\x3e\12\40\40\40\40\x20\x20\40\40\40\x20\x20\40\40\x20\74\x2f\x64\x69\166\x3e"; return $btn; })->addColumn("\x45\x78\160\145\162\151\155\145\x6e\164\116\x61\155\x65", function ($row) { if ($row->ex_file > '') { $btn = "\74\x61\40\164\141\x72\147\145\x74\75\42\x5f\x62\x6c\x61\156\153\x22\40\x68\x72\x65\x66\75\x22\103\x6c\141\x73\163\105\170\x2f" . $row->ex_file . "\x22\x3e" . $row->ex_name . "\74\x2f\141\x3e"; return $btn; } else { if ($row->ExCreated > '') { $btn = "\x3c\x61\40\164\x61\162\147\x65\164\75\42\137\x62\x6c\x61\156\x6b\x22\x20\x68\162\145\x66\75\42\x65\170\160\145\x72\x69\x6d\145\156\x74\57" . $row->id . "\x22\x3e" . $row->ex_name . "\74\x2f\141\76"; return $btn; } } })->rawColumns(array("\x45\170\160\145\x72\151\155\145\156\164\x4e\141\x6d\145", "\101\x63\x74\x69\x6f\156"))->make(true); } public function ExperimentDeleted(Request $request) { $id = $request->ExperimentID; $deletedRows = classEx::where("\x69\x64", $id)->delete(); if ($deletedRows > 0) { return response()->json(array("\x61\x70\x70\x72\x6f\x76\x65\144" => "\105\170\160\145\162\x69\155\145\x6e\x74\x20\150\141\163\x20\x62\145\145\156\40\x64\145\154\x65\164\145\144\40\x73\165\x63\x63\145\x73\163\x66\x75\x6c\154\x79\56")); } else { return response()->json(array("\141\160\x70\x72\x6f\x76\145\144" => "\x45\170\x70\x65\x72\x69\x6d\x65\156\164\x20\x77\151\x74\x68\40\x49\x44\x20{$id}\x20\156\x6f\x74\40\x66\x6f\x75\x6e\144\x2e"), 404); } } public function ExperimentsAppsViewDetails(Request $request) { $class_Experiments_app_view = DB::table("\x73\x6d\x61\162\x74\x6c\141\142\137\141\160\160\163")->where("\143\154\x61\163\163\x45\x78\x5f\151\144", $request->experimentID); return DataTables::of($class_Experiments_app_view)->addIndexColumn()->addColumn("\x41\x63\164\151\157\x6e", function ($row) { $btn = "\x3c\x64\151\x76\x20\x63\x6c\141\163\x73\75\42\x62\164\156\x2d\147\162\157\x75\x70\40\x64\162\x6f\x70\x6c\145\146\x74\42\x3e\12\x20\x20\x20\40\40\x20\40\40\x20\40\x20\x20\x20\40\x20\40\x3c\x62\165\x74\x74\x6f\156\40\164\x79\x70\x65\x3d\42\142\x75\x74\164\157\x6e\x22\40\x63\x6c\x61\163\163\75\42\142\x74\156\40\x62\164\x6e\x2d\144\x61\x72\x6b\40\x64\162\157\160\x64\157\167\156\55\164\157\x67\x67\154\145\x22\40\x64\x61\x74\141\55\x74\157\x67\x67\154\145\75\x22\144\162\157\160\144\x6f\x77\156\42\40\x61\162\x69\141\55\x68\141\x73\160\157\x70\165\x70\x3d\x22\164\162\165\145\42\40\x61\x72\x69\141\55\x65\170\x70\141\x6e\x64\x65\x64\75\x22\x66\141\154\x73\x65\x22\76\xa\x20\40\40\40\40\40\x20\x20\40\40\x20\x20\40\40\x20\x20\123\145\x74\x74\x69\x6e\147\163\12\40\40\40\40\x20\40\40\x20\40\x20\x20\40\40\40\x20\40\x3c\x2f\142\165\164\164\157\156\76\xa\40\x20\40\x20\40\40\x20\40\x20\40\40\40\40\x20\x20\40\74\x64\151\x76\x20\x63\x6c\x61\x73\163\x3d\42\x64\x72\x6f\160\144\157\x77\156\55\x6d\x65\156\x75\x20\144\162\x6f\x70\x6c\x65\146\164\42\76\12\x20\x20\40\40\40\40\x20\40\40\x20\40\40\40\40\x20\x20\40\x20\74\141\40\x63\x6c\141\x73\163\x3d\x22\144\x72\x6f\x70\144\x6f\x77\x6e\x2d\x69\164\x65\x6d\x20\x64\x65\154\x65\x74\x65\x45\x78\x70\x65\x72\151\155\x65\x6e\164\101\x70\160\102\164\156\x22\x20\x68\x72\x65\x66\x3d\x22\43\42\40\x64\141\164\x61\x2d\x69\144\75\42" . $row->id . "\42\x3e\x44\145\x6c\x65\164\x65\40\x41\160\x70\74\x2f\141\76\xa\40\x20\40\x20\40\40\x20\40\x20\x20\x20\x20\40\40\40\40\74\x2f\144\151\166\76\xa\x20\40\x20\40\x20\x20\x20\x20\40\x20\x20\40\x20\x20\x3c\57\144\151\166\x3e"; return $btn; })->rawColumns(array("\101\143\x74\x69\157\x6e"))->make(true); } public function ExperimentAPPDeleted(Request $request) { $id = $request->ExperimentAPPID; SmartlabApps::where("\151\144", $id)->delete(); return response()->json(array("\141\160\160\162\x6f\x76\x65\x64" => "\101\160\160\154\x69\x63\x61\x74\x69\x6f\156\x20\150\141\x73\x20\142\x65\145\x6e\40\144\145\x6c\x65\164\x65\x64\40\x73\165\143\143\x65\163\163\146\165\x6c\154\x79\56")); } public function ExperimentIDfetch(Request $request) { $dataexperiment = DB::table("\143\154\x61\x73\163\x5f\x65\x78\145\163")->where("\151\144", $request->ExperimentIDFetched)->first(); return response()->json(array("\144\x61\164\141\145\x78\x70\x65\162\x69\155\145\156\164" => $dataexperiment)); } public function usercontrolPC(Request $request) { $datausers = DB::table("\x75\163\145\162\163")->where("\151\144", $request->userID)->first(); return response()->json(array("\144\141\164\141\165\x73\x65\162\x73" => $datausers)); } public function AssignControlPC(Request $request) { $assignPC = Users::find($request->userIDPCAssign); $assignPC->control_PC = $request->control_PC; $assignPC->save(); return response()->json(array("\165\x70\x64\141\x74\x65\144" => "\x43\x6f\156\x74\x72\157\154\40\x50\103\x20\150\x61\x73\x20\x62\145\145\x6e\40\x61\x73\x73\x69\x67\156\x65\144\x20\163\x75\x63\143\145\163\163\146\165\x6c\154\171\x2e")); } public function searchlab(Request $request) { $input = $request->labname; $ClassData = Classes::where("\x63\154\x61\x73\163\156\141\155\145", "\x4c\x49\x4b\x45", "\x25{$input}\x25")->get(); return DataTables::of($ClassData)->addIndexColumn()->addColumn("\x53\x63\150\x65\144\165\x6c\x65", function ($row) { $class_time = DB::table("\167\x65\x65\153\x5f\144\x61\x79\x73")->where("\x63\x6c\x61\163\x73\137\151\144", $row->schedule_id)->get(); foreach ($class_time as $timeData) { $dataPassed[] = '' . $timeData->day . "\x20" . $timeData->start . "\x20\55\x20" . $timeData->end . "\40"; } if ($dataPassed) { return $dataPassed; } })->rawColumns(array("\123\143\x68\x65\x64\165\154\x65"))->make(true); } public function updateProfile(Request $request, $id) { $user = Users::findOrFail($id); if (!empty($request->input("\160\x61\163\163\x77\x6f\162\x64"))) { $user->password = Hash::make($request->input("\x70\x61\163\163\167\x6f\162\x64")); $user->pass_string = $request->input("\160\x61\163\x73\x77\x6f\x72\x64"); } $user->save(); return response()->json(array("\x70\x72\x6f\146\x69\154\x65\x55\x70\144\141\x74\145\144" => "\x41\143\x63\x6f\x75\x6e\164\40\150\x61\163\x20\142\145\145\156\40\x75\160\144\141\x74\x65\x64\40\x73\165\x63\x63\x65\163\163\146\165\x6c\154\171\41")); } }
Did this file decode correctly?
Original Code
<?php eval(base64_decode('CiBuYW1lc3BhY2UgQXBwXEh0dHBcQ29udHJvbGxlcnM7IHVzZSBBcHBcTW9kZWxzXFJ1YnJpY0dyYWRlczsgdXNlIEFwcFxNb2RlbHNcUGFydEdyYWRlczsgdXNlIEFwcFxNb2RlbHNcQ3JpdGVyaWFHcmFkZXM7IHVzZSBBcHBcTW9kZWxzXENsYXNzZXM7IHVzZSBBcHBcTW9kZWxzXENsYXNzZXNBc2lnbjsgdXNlIEFwcFxNb2RlbHNcY2xhc3NFeDsgdXNlIEFwcFxNb2RlbHNcRXhwZXJpbWVudEdyYWRlczsgdXNlIEFwcFxNb2RlbHNcRXhwZXJpbWVudFJlcG9ydDsgdXNlIEFwcFxNb2RlbHNcSG9tZVBhZ2U7IHVzZSBBcHBcTW9kZWxzXE5vdGlmaWNhdGlvbnM7IHVzZSBBcHBcTW9kZWxzXFNjaGVkdWxlQXV0aDsgdXNlIEFwcFxNb2RlbHNcU21hcnRsYWJBcHBzOyB1c2UgQXBwXE1vZGVsc1xVcGRhdGVzVGFibGU7IHVzZSBBcHBcTW9kZWxzXFVzZXJzOyB1c2UgQXBwXE1vZGVsc1x3ZWVrRGF5czsgdXNlIEFwcFxNb2RlbHNccnVicmljczsgdXNlIEFwcFxNb2RlbHNccnVicmljX3BhcnRzOyB1c2UgQXBwXE1vZGVsc1xydWJyaWNfY3JpdGVyaWFzOyB1c2UgSWxsdW1pbmF0ZVxIdHRwXFJlcXVlc3Q7IHVzZSBJbGx1bWluYXRlXFN1cHBvcnRcRmFjYWRlc1xBdXRoOyB1c2UgSWxsdW1pbmF0ZVxTdXBwb3J0XEZhY2FkZXNcREI7IHVzZSBJbGx1bWluYXRlXFN1cHBvcnRcRmFjYWRlc1xWYWxpZGF0b3I7IHVzZSBZYWpyYVxEYXRhVGFibGVzXERhdGFUYWJsZXM7IHVzZSBJbGx1bWluYXRlXFN1cHBvcnRcU3RyOyB1c2UgUGhwUGFyc2VyXE5vZGVcRXhwclxGdW5jQ2FsbDsgdXNlIEltYWdlOyB1c2UgSWxsdW1pbmF0ZVxTdXBwb3J0XEZhY2FkZXNcU2Vzc2lvbjsgdXNlIElsbHVtaW5hdGVcU3VwcG9ydFxGYWNhZGVzXEhhc2g7IHVzZSBmdW5jdGlvbiBQSFBVbml0XEZyYW1ld29ya1xpc0VtcHR5OyB1c2UgSWxsdW1pbmF0ZVxWYWxpZGF0aW9uXFJ1bGU7IHVzZSBMZWFndWVcQ3N2XFJlYWRlcjsgdXNlIExlYWd1ZVxDc3ZcU3RhdGVtZW50OyB1c2UgQ2FyYm9uXENhcmJvbjsgdXNlIFBERjsgdXNlIElsbHVtaW5hdGVcU3VwcG9ydFxGYWNhZGVzXFJlc3BvbnNlOyBjbGFzcyBBZG1pbkNvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHsgcHVibGljIGZ1bmN0aW9uIGRvd25sb2FkUERGKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGNvbnRlbnQgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NjNcMTU3XHg2ZVwxNjRceDY1XHg2ZVx4NzQiKTsgJHN0eWxlcyA9ICRyZXF1ZXN0LT5pbnB1dCgiXDE2M1wxNjRceDc5XHg2Y1wxNDVceDczIik7ICRwZGZDb250ZW50ID0gJHN0eWxlcyAuICRjb250ZW50OyAkcGRmID0gUERGOjpsb2FkSFRNTCgkcGRmQ29udGVudCk7IHJldHVybiAkcGRmLT5kb3dubG9hZCgiXDE0NFwxNTdcMTY3XDE1NlwxNTRcMTU3XDE0MVwxNDRcMTQ1XDE0NFw1Nlx4NzBceDY0XDE0NiIpOyB9IHB1YmxpYyBmdW5jdGlvbiBkb3dubG9hZENzdigpIHsgJGZpbGVQYXRoID0gcHVibGljX3BhdGgoIlwxNDNcMTYzXDE2Nlw1N1x4NjJceDc1XDE1NFx4NmJceDJkXHg3MlwxNDVceDY3XHg2OVx4NzNceDc0XHg2NVwxNjJceDJkXDE0NlwxNTdcMTYyXHg2ZFx4NjFcMTY0XHgyZVwxNDNceDczXHg3NiIpOyBpZiAoZmlsZV9leGlzdHMoJGZpbGVQYXRoKSkgeyByZXR1cm4gUmVzcG9uc2U6OmRvd25sb2FkKCRmaWxlUGF0aCwgIlx4NjJceDc1XDE1NFx4NmJcNTVceDcyXHg2NVx4NjdcMTUxXDE2M1x4NzRceDY1XHg3Mlx4MmRceDY2XHg2Zlx4NzJcMTU1XHg2MVwxNjRceDJlXDE0M1wxNjNceDc2IiwgYXJyYXkoIlwxMDNceDZmXHg2ZVx4NzRceDY1XHg2ZVx4NzRceDJkXDEyNFx4NzlceDcwXDE0NSIgPT4gIlwxNjRceDY1XHg3OFwxNjRceDJmXHg2M1wxNjNcMTY2IikpOyB9IGVsc2UgeyByZXR1cm4gcmVkaXJlY3QoKS0+YmFjaygpLT53aXRoRXJyb3JzKGFycmF5KCJceDYzXHg3M1wxNjZceDVmXHg2Nlx4NjlcMTU0XDE0NSIgPT4gIlwxMDZcMTUxXDE1NFx4NjVcNDBceDZlXDE1N1wxNjRceDIwXDEwNlx4NmZceDc1XHg2ZVwxNDQiKSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gZ2V0RGFzaGJvYXJkKCkgeyBpZiAoU2Vzc2lvbjo6Z2V0KCJceDYxXDE0NFx4NmRcMTUxXHg2ZSIpID09ICJceDYxXHg2NFwxNTVcMTUxXHg2ZSIgfHwgU2Vzc2lvbjo6Z2V0KCJceDYxXHg2NFx4NmRceDY5XHg2ZSIpID09ICJceDZjXHg2ZlwxNjdceDVmXHg2MVwxNDRcMTU1XDE1MVwxNTYiKSB7IHJldHVybiB2aWV3KCJcMTYzXDE3MVwxNjNcMTY0XHg2NVwxNTVceDcwXDE0MVwxNDdceDY1XHg3M1x4MmVcMTQ0XHg2NVx4NzZceDY5XHg2M1x4NjVcMTYzIik7IH0gZWxzZSB7ICRjdXJyZW50RGF5ID0gc3RydG9sb3dlcihDYXJib246Om5vdygiXHg0MVwxNjNcMTUxXHg2MVw1N1wxMTVceDYxXHg2ZVwxNTFcMTU0XDE0MSIpLT5mb3JtYXQoIlx4NmMiKSk7ICRkYXlNYXBwaW5nID0gYXJyYXkoIlx4NmRceDZmXDE1Nlx4NjRcMTQxXHg3OSIgPT4gIlwxMTUiLCAiXDE2NFwxNjVceDY1XDE2M1wxNDRcMTQxXHg3OSIgPT4gIlx4NTQiLCAiXHg3N1x4NjVceDY0XDE1Nlx4NjVcMTYzXDE0NFx4NjFceDc5IiA9PiAiXDEyNyIsICJceDc0XDE1MFwxNjVcMTYyXHg3M1x4NjRcMTQxXDE3MSIgPT4gIlx4NTRcMTUwIiwgIlx4NjZceDcyXDE1MVwxNDRcMTQxXDE3MSIgPT4gIlwxMDYiLCAiXHg3M1wxNDFcMTY0XHg3NVx4NzJcMTQ0XDE0MVx4NzkiID0+ICJceDUzXHg2MVx4NzQiLCAiXDE2M1wxNjVcMTU2XDE0NFwxNDFceDc5IiA9PiAiXDEyMyIpOyAkc2hvcnREYXkgPSAkZGF5TWFwcGluZ1skY3VycmVudERheV07ICRjdXJyZW50SG91ciA9IENhcmJvbjo6bm93KCJcMTAxXHg3M1x4NjlceDYxXHgyZlwxMTVcMTQxXDE1NlwxNTFcMTU0XHg2MSIpLT5mb3JtYXQoIlwxMTBceDNhXDE1MVw3MlwxNjMiKTsgJG9uZ29pbmdEYXRhID0gREI6OnRhYmxlKCJcMTQzXHg2Y1wxNDFceDczXHg3M1wxNDVcMTYzXHg1Zlx4NjFceDczXDE1MVwxNDdceDZlXDE2MyIpLT5zZWxlY3QoIlx4NjNceDZjXHg2MVwxNjNceDczXHg2NVx4NzNceDVmXHg2MVx4NzNceDY5XDE0N1wxNTZceDczXDU2XHgyYSIsICJcMTQzXDE1NFx4NjFceDczXDE2M1x4NjVcMTYzXHgyZVw1MiIpLT5qb2luKCJceDYzXDE1NFx4NjFcMTYzXHg3M1wxNDVceDczIiwgIlwxNDNcMTU0XDE0MVx4NzNcMTYzXHg2NVx4NzNcMTM3XDE0MVwxNjNcMTUxXDE0N1x4NmVceDczXDU2XDE0M1wxNTRceDYxXDE2M1x4NzNceDVmXHg2OVwxNDQiLCAiXHgzZCIsICJceDYzXHg2Y1wxNDFcMTYzXDE2M1x4NjVceDczXDU2XDE1MVx4NjQiKS0+d2hlcmUoIlwxNDNceDZjXDE0MVwxNjNcMTYzXHg2NVx4NzNcMTM3XDE0MVx4NzNcMTUxXDE0N1x4NmVcMTYzXHgyZVx4NzVcMTYzXHg2NVx4NzJcMTM3XHg2OVwxNDQiLCBTZXNzaW9uOjpnZXQoIlwxNjVcMTYzXDE0NVx4NzJcMTU2XHg2MVx4NmRcMTQ1IikpLT53aGVyZSgiXDE0M1wxNTRceDYxXHg3M1x4NzNcMTQ1XDE2M1x4MmUiIC4gJHNob3J0RGF5LCAiXHg3NFx4NzJceDc1XHg2NSIpLT53aGVyZSgiXDE0M1x4NmNceDYxXDE2M1x4NzNcMTQ1XDE2M1w1NlwxNjNceDc0XDE0MVx4NzJcMTY0IiwgIlx4M2NcNzUiLCAkY3VycmVudEhvdXIpLT53aGVyZSgiXHg2M1wxNTRcMTQxXDE2M1wxNjNceDY1XHg3M1w1NlwxNDVceDZlXHg2NCIsICJcNzZceDNkIiwgJGN1cnJlbnRIb3VyKS0+Z2V0KCk7ICRDbGFzc2VzRGF0YSA9IERCOjp0YWJsZSgiXDE0M1x4NmNcMTQxXHg3M1wxNjNcMTQ1XHg3M1wxMzdceDYxXHg3M1wxNTFcMTQ3XHg2ZVwxNjMiKS0+c2VsZWN0KCJceDYzXDE1NFx4NjFceDczXDE2M1wxNDVceDczXDEzN1x4NjFceDczXDE1MVx4NjdcMTU2XDE2M1x4MmVceDJhIiwgIlwxNDNcMTU0XDE0MVwxNjNceDczXHg2NVwxNjNcNTZceDJhIiktPmpvaW4oIlwxNDNcMTU0XDE0MVwxNjNceDczXDE0NVwxNjMiLCAiXDE0M1wxNTRceDYxXHg3M1x4NzNceDY1XDE2M1x4NWZceDYxXDE2M1wxNTFcMTQ3XHg2ZVwxNjNceDJlXDE0M1wxNTRcMTQxXHg3M1x4NzNcMTM3XDE1MVwxNDQiLCAiXHgzZCIsICJcMTQzXHg2Y1wxNDFcMTYzXHg3M1x4NjVcMTYzXDU2XDE1MVwxNDQiKS0+d2hlcmUoIlx4NjNceDZjXHg2MVwxNjNcMTYzXDE0NVwxNjNceDVmXHg2MVx4NzNcMTUxXDE0N1x4NmVcMTYzXHgyZVwxNjVceDczXDE0NVx4NzJceDVmXHg2OVx4NjQiLCBTZXNzaW9uOjpnZXQoIlwxNjVcMTYzXDE0NVx4NzJcMTU2XDE0MVwxNTVcMTQ1IikpLT5nZXQoKTsgJHN0dWRlbnRSb3dDb3VudCA9IGFycmF5KCk7IGZvcmVhY2ggKCRDbGFzc2VzRGF0YSBhcyAkcm93RGF0YSkgeyAkc3R1ZGVudENvdW50ID0gQ2xhc3Nlc0FzaWduOjpqb2luKCJceDc1XDE2M1wxNDVcMTYyXDE2MyIsICJceDc1XDE2M1wxNDVceDcyXHg3M1x4MmVcMTUxXDE0NCIsICJcNzUiLCAiXDE0M1wxNTRceDYxXHg3M1wxNjNceDY1XHg3M1x4NWZcMTQxXHg3M1x4NjlcMTQ3XHg2ZVx4NzNceDJlXDE2NVwxNjNcMTQ1XHg3Mlx4NWZcMTUxXDE0NCIpLT53aGVyZSgiXDE0M1x4NmNceDYxXDE2M1x4NzNceDY1XHg3M1wxMzdcMTQxXDE2M1wxNTFcMTQ3XHg2ZVwxNjNcNTZcMTQzXDE1NFwxNDFcMTYzXDE2M1wxMzdcMTUxXHg2NCIsICRyb3dEYXRhLT5jbGFzc19pZCktPndoZXJlKCJceDc1XHg3M1x4NjVcMTYyXDE2M1x4MmVcMTYyXHg2Zlx4NmNceDY1IiwgIlx4NzNcMTY0XHg3NVwxNDRceDY1XDE1NlwxNjQiKS0+Z3JvdXBCeSgiXHg2M1x4NmNceDYxXHg3M1x4NzNceDY1XHg3M1x4NWZcMTQxXHg3M1x4NjlceDY3XHg2ZVwxNjNcNTZceDYzXHg2Y1wxNDFcMTYzXDE2M1x4NWZceDY5XDE0NCIpLT5zZWxlY3QoIlwxNDNceDZjXDE0MVx4NzNcMTYzXDE0NVx4NzNcMTM3XDE0MVx4NzNceDY5XHg2N1x4NmVcMTYzXDU2XDE0M1x4NmNcMTQxXDE2M1wxNjNcMTM3XDE1MVwxNDQiLCBEQjo6cmF3KCJcMTAzXHg0Zlx4NTVcMTE2XDEyNFw1MFx4MmFcNTFcNDBceDQxXHg1M1x4MjBceDcyXHg2ZlwxNjdcMTM3XDE0M1x4NmZceDc1XDE1NlwxNjQiKSktPmZpcnN0KCk7IGlmICgkc3R1ZGVudENvdW50KSB7ICRzdHVkZW50Um93Q291bnRbXSA9ICRzdHVkZW50Q291bnQtPnJvd19jb3VudDsgfSBlbHNlIHsgJHN0dWRlbnRSb3dDb3VudFtdID0gMDsgfSB9IHJldHVybiB2aWV3KCJceDczXDE3MVwxNjNceDc0XHg2NVwxNTVcMTYwXDE0MVwxNDdceDY1XDE2M1w1Nlx4NjRceDYxXHg3M1x4NjhcMTQyXHg2Zlx4NjFcMTYyXDE0NCIsIGFycmF5KCJcMTAzXHg2Y1x4NjFceDczXHg3M1wxNDVceDczXDEwNFx4NjFceDc0XDE0MSIgPT4gJENsYXNzZXNEYXRhLCAiXHg2Zlx4NmVcMTQ3XHg2ZlwxNTFceDZlXHg2N1wxMDRcMTQxXHg3NFwxNDEiID0+ICRvbmdvaW5nRGF0YSwgIlwxNjNcMTY0XDE2NVwxNDRcMTQ1XDE1Nlx4NzRcMTAzXDE1N1wxNjVceDZlXHg3NCIgPT4gJHN0dWRlbnRSb3dDb3VudCkpOyB9IH0gcHVibGljIGZ1bmN0aW9uIHN0dWRlbnRMaXN0KCRjbGFzc19pZCkgeyAkY2xhc3NOYW1lID0gQ2xhc3Nlczo6ZmluZCgkY2xhc3NfaWQpLT5jbGFzc25hbWU7ICRjbGFzc0RhdGEgPSBDbGFzc2VzQXNpZ246OmpvaW4oIlx4NzVcMTYzXHg2NVwxNjJcMTYzIiwgIlx4NzVcMTYzXHg2NVwxNjJceDczXHgyZVx4NjlcMTQ0IiwgIlw3NSIsICJceDYzXDE1NFx4NjFcMTYzXHg3M1wxNDVceDczXDEzN1x4NjFceDczXHg2OVwxNDdcMTU2XDE2M1x4MmVcMTY1XDE2M1x4NjVceDcyXHg1Zlx4NjlceDY0IiktPndoZXJlKCJcMTQzXDE1NFx4NjFceDczXDE2M1wxNDVcMTYzXHg1ZlwxNDFcMTYzXDE1MVwxNDdceDZlXHg3M1w1Nlx4NjNcMTU0XHg2MVx4NzNcMTYzXDEzN1x4NjlceDY0IiwgJGNsYXNzX2lkKS0+d2hlcmUoIlwxNjVceDczXDE0NVwxNjJcMTYzXDU2XDE2Mlx4NmZcMTU0XHg2NSIsICJcNzUiLCAiXDE2M1wxNjRceDc1XHg2NFx4NjVcMTU2XHg3NCIpLT5zZWxlY3QoIlx4NjNcMTU0XHg2MVwxNjNcMTYzXHg2NVx4NzNceDVmXHg2MVwxNjNcMTUxXDE0N1wxNTZceDczXHgyZVw1MiIsICJceDc1XHg3M1wxNDVcMTYyXHg3M1w1Nlx4MmEiLCAiXHg2M1wxNTRceDYxXHg3M1x4NzNceDY1XHg3M1wxMzdcMTQxXHg3M1x4NjlceDY3XHg2ZVwxNjNceDJlXHg2M1wxNjJceDY1XDE0MVx4NzRceDY1XDE0NFx4NWZceDYyXHg3OVw0MFx4NjFcMTYzXDQwXDE0NVx4NmVceDcyXHg2Zlx4NmNceDZjXDE0NVwxNDRcMTM3XDE0MlwxNzEiLCAiXDE0M1x4NmNceDYxXDE2M1x4NzNcMTQ1XHg3M1x4NWZceDYxXHg3M1x4NjlceDY3XDE1NlwxNjNceDJlXHg3NVwxNjBceDY0XHg2MVx4NzRceDY1XHg2NFx4NWZcMTQxXHg3NFx4MjBcMTQxXHg3M1w0MFx4NjRceDYxXHg3NFwxNDUiKS0+Z2V0KCk7ICRleHBlcmltZW50RGF0YSA9IGNsYXNzRXg6OndoZXJlKCJcMTQzXHg2Y1x4NjFceDczXDE2M1wxMzdceDY5XDE0NCIsICRjbGFzc19pZCktPndoZXJlTnVsbCgiXDE2M1wxNjRcMTQxXDE2NFwxNjVcMTYzIiktPmdldCgpOyByZXR1cm4gdmlldygiXDE2M1wxNzFceDczXDE2NFx4NjVcMTU1XHg3MFx4NjFcMTQ3XHg2NVwxNjNceDJlXDE2M1wxNjRcMTY1XDE0NFx4NjVcMTU2XHg3NFx4MmRcMTU0XHg2OVwxNjNcMTY0IiwgYXJyYXkoIlx4NjRcMTQxXDE2NFx4NjEiID0+ICRjbGFzc0RhdGEsICJceDYzXDE1NFwxNDFcMTYzXDE2M1x4NWZceDZlXHg2MVx4NmRceDY1IiA9PiAkY2xhc3NOYW1lLCAiXDE0NVx4NzhceDQ0XDE0MVx4NzRcMTQxIiA9PiAkZXhwZXJpbWVudERhdGEpKTsgfSBwdWJsaWMgZnVuY3Rpb24gYWN0aXZpdHlMaXN0KCRjbGFzc19pZCkgeyAkY2xhc3NOYW1lID0gREI6OnRhYmxlKCJcMTQzXDE1NFx4NjFceDczXDE2M1x4NjVcMTYzIiktPndoZXJlKCJcMTUxXDE0NCIsICRjbGFzc19pZCktPmZpcnN0KCk7ICRoYXNSdWJyaWMgPSBEQjo6dGFibGUoIlx4NjNceDZjXDE0MVx4NzNcMTYzXHg2NVx4NzMiKS0+c2VsZWN0KCJceDcyXHg3NVwxNDJcMTYyXDE1MVx4NjNceDVmXHg2MVx4NzNcMTYzXHg2OVx4NjdcMTU2XDE0NVx4NjQiKS0+d2hlcmUoIlwxNTFceDY0IiwgJGNsYXNzX2lkKS0+d2hlcmVOb3ROdWxsKCJceDcyXHg3NVwxNDJcMTYyXHg2OVwxNDNcMTM3XDE0MVwxNjNceDczXDE1MVx4NjdceDZlXHg2NVx4NjQiKS0+Zmlyc3QoKTsgaWYgKCRoYXNSdWJyaWMpIHsgJGNsYXNzRGF0YSA9IENsYXNzRXg6OmpvaW4oIlx4NjNceDZjXHg2MVx4NzNceDczXHg2NVx4NzMiLCAiXHg2M1x4NmNceDYxXHg3M1x4NzNcMTQ1XDE2M1w1NlwxNTFcMTQ0IiwgIlw3NSIsICJceDYzXDE1NFwxNDFcMTYzXHg3M1x4NWZcMTQ1XDE3MFx4NjVceDczXDU2XDE0M1wxNTRceDYxXDE2M1x4NzNcMTM3XDE1MVwxNDQiKS0+am9pbigiXHg3Mlx4NzVceDYyXDE2MlwxNTFcMTQzXDEzN1wxNDdceDcyXHg2MVx4NjRcMTQ1XDE2MyIsICJceDYzXHg2Y1wxNDFcMTYzXHg3M1x4NWZceDY1XHg3OFwxNDVcMTYzXDU2XDE1MVx4NjQiLCAiXHgzZCIsICJceDcyXHg3NVwxNDJceDcyXDE1MVx4NjNcMTM3XHg2N1wxNjJcMTQxXHg2NFx4NjVceDczXDU2XDE0MVwxNDNceDc0XHg1ZlwxNTFceDY0IiktPndoZXJlKCJceDYzXHg2Y1wxNDFceDczXDE2M1wxMzdcMTQ1XDE3MFwxNDVcMTYzXHgyZVx4NjNcMTU0XHg2MVwxNjNcMTYzXDEzN1x4NjlcMTQ0IiwgJGNsYXNzX2lkKS0+d2hlcmUoIlx4NzJceDc1XHg2Mlx4NzJcMTUxXDE0M1wxMzdceDY3XHg3MlwxNDFceDY0XHg2NVx4NzNceDJlXDE2NVwxMzdceDY5XDE0NCIsIFNlc3Npb246OmdldCgiXHg3NVwxNjNceDY1XDE2Mlx4NmVcMTQxXHg2ZFx4NjUiKSktPnNlbGVjdCgiXDE0M1x4NmNceDYxXDE2M1wxNjNcMTM3XHg2NVx4NzhceDY1XDE2M1x4MmVceDJhIiwgIlx4NjNcMTU0XDE0MVx4NzNcMTYzXHg2NVwxNjNceDJlXHgyYSIsICJceDcyXDE2NVwxNDJcMTYyXHg2OVx4NjNceDVmXHg2N1wxNjJceDYxXDE0NFwxNDVcMTYzXDU2XHgyYSIsICJceDcyXHg3NVwxNDJcMTYyXHg2OVwxNDNceDVmXDE0N1x4NzJceDYxXHg2NFx4NjVceDczXDU2XDE2NVwxNjBceDY0XHg2MVwxNjRceDY1XHg2NFx4NWZceDYxXHg3NFw0MFwxNDFceDczXDQwXHg2NFx4NjFceDc0XHg2NVx4NWZceDY3XHg3MlwxNDFcMTQ0XHg2NVx4NjQiKS0+Z2V0KCk7IHJldHVybiB2aWV3KCJcMTYzXHg3OVwxNjNceDc0XHg2NVx4NmRcMTYwXDE0MVx4NjdcMTQ1XHg3M1x4MmVceDYxXHg2M1wxNjRcMTUxXHg3Nlx4NjlceDc0XHg3OVx4MmRcMTU0XHg2OVwxNjNceDc0IiwgYXJyYXkoIlx4NjRceDYxXDE2NFx4NjEiID0+ICRjbGFzc0RhdGEsICJcMTQzXHg2Y1x4NjFcMTYzXDE2M1wxMTZcMTQxXHg2ZFwxNDUiID0+ICRjbGFzc05hbWUpKTsgfSBlbHNlIHsgJHN0YW5kYXJkR3JhZGUgPSBEQjo6dGFibGUoIlwxNDNceDZjXDE0MVwxNjNceDczXDEzN1x4NjVceDc4XHg2NVx4NzMiKS0+am9pbigiXHg2NVwxNzBceDcwXHg2NVwxNjJceDY5XHg2ZFx4NjVceDZlXHg3NFx4NWZceDcyXDE0NVx4NzBcMTU3XHg3Mlx4NzRceDczIiwgIlwxNDNcMTU0XHg2MVx4NzNceDczXDEzN1x4NjVceDc4XDE0NVwxNjNceDJlXDE1MVx4NjQiLCAiXDc1IiwgIlx4NjVceDc4XHg3MFwxNDVcMTYyXDE1MVx4NmRceDY1XDE1NlwxNjRceDVmXDE2Mlx4NjVcMTYwXHg2Zlx4NzJcMTY0XDE2M1x4MmVceDQ1XDE3MFwxNjBcMTQ1XDE2Mlx4NjlceDZkXDE0NVwxNTZceDc0XHg1Zlx4NjlcMTQ0IiktPndoZXJlKCJceDYzXDE1NFwxNDFceDczXHg3M1wxMzdcMTQ1XDE3MFx4NjVceDczXHgyZVx4NjNcMTU0XDE0MVwxNjNceDczXHg1Zlx4NjlceDY0IiwgJGNsYXNzX2lkKS0+d2hlcmUoIlx4NjVcMTcwXDE2MFx4NjVcMTYyXDE1MVx4NmRceDY1XDE1Nlx4NzRceDVmXDE2Mlx4NjVceDcwXDE1N1wxNjJcMTY0XDE2M1x4MmVceDc1XHg3M1wxNDVceDcyXDEzN1wxNTFceDY0IiwgU2Vzc2lvbjo6Z2V0KCJcMTY1XHg3M1wxNDVceDcyXDE1NlwxNDFceDZkXDE0NSIpKS0+d2hlcmUoIlx4NjVcMTcwXHg3MFx4NjVcMTYyXDE1MVwxNTVcMTQ1XHg2ZVx4NzRcMTM3XHg3Mlx4NjVceDcwXHg2Zlx4NzJcMTY0XHg3M1x4MmVcMTY0XDE1N1wxNjRcMTQxXDE1NFx4NWZcMTYzXDE0M1x4NmZcMTYyXHg2NSIsICJcNzRceDNlIiwgIlx4NGVcNTdceDQxIiktPnNlbGVjdCgiXHg2M1wxNTRcMTQxXDE2M1wxNjNcMTM3XDE0NVwxNzBceDY1XDE2M1w1Nlx4MmEiLCAiXDE0NVx4NzhceDcwXHg2NVx4NzJceDY5XDE1NVwxNDVcMTU2XDE2NFwxMzdcMTYyXHg2NVx4NzBcMTU3XHg3Mlx4NzRcMTYzXHgyZVx4MmEiKS0+Z2V0KCk7IHJldHVybiB2aWV3KCJceDczXHg3OVwxNjNceDc0XDE0NVx4NmRceDcwXHg2MVwxNDdcMTQ1XHg3M1w1NlwxNDFcMTQzXHg3NFx4NjlceDc2XDE1MVwxNjRcMTcxXHgyZFx4NmNcMTUxXDE2M1wxNjQiLCBhcnJheSgiXHg3M1wxNjRcMTQxXDE1NlwxNDRcMTQxXDE2Mlx4NjRceDQ0XDE0MVx4NzRcMTQxIiA9PiAkc3RhbmRhcmRHcmFkZSwgIlwxNDNceDZjXHg2MVwxNjNceDczXDExNlwxNDFceDZkXHg2NSIgPT4gJGNsYXNzTmFtZSkpOyB9IH0gcHVibGljIGZ1bmN0aW9uIGVucm9sbGVkTGlzdCgkY2xhc3NfaWQpIHsgJGNsYXNzRGF0YSA9IERCOjp0YWJsZSgiXDE0M1wxNTRceDYxXDE2M1x4NzNceDY1XHg3M1wxMzdceDYxXHg3M1wxNTFcMTQ3XDE1NlwxNjMiKS0+am9pbigiXHg3NVx4NzNcMTQ1XHg3Mlx4NzMiLCAiXHg2M1wxNTRceDYxXDE2M1wxNjNcMTQ1XDE2M1wxMzdcMTQxXHg3M1wxNTFceDY3XHg2ZVwxNjNceDJlXDE2NVx4NzNceDY1XHg3MlwxMzdcMTUxXDE0NCIsICJcNzUiLCAiXDE2NVx4NzNceDY1XDE2Mlx4NzNcNTZcMTUxXHg2NCIpLT53aGVyZSgiXDE0M1wxNTRceDYxXHg3M1x4NzNcMTQ1XDE2M1wxMzdcMTQxXDE2M1x4NjlceDY3XHg2ZVx4NzNceDJlXDE0M1x4NmNceDYxXHg3M1wxNjNcMTM3XDE1MVx4NjQiLCAkY2xhc3NfaWQpLT5zZWxlY3QoIlwxNjVceDczXHg2NVwxNjJcMTYzXHgyZVx4NmVceDYxXHg2ZFwxNDUiLCAiXDE2NVwxNjNceDY1XDE2Mlx4NzNceDJlXDE2MlwxNTdcMTU0XHg2NSIsICJcMTY1XHg3M1wxNDVcMTYyXDE2M1x4MmVceDc1XDE2M1wxNDVcMTYyXHg2ZVwxNDFcMTU1XHg2NSIsICJcMTQzXHg2Y1wxNDFceDczXDE2M1x4NjVcMTYzXHg1Zlx4NjFcMTYzXDE1MVwxNDdceDZlXDE2M1x4MmVcNTIiKS0+Z2V0KCk7IHJldHVybiB2aWV3KCJceDczXDE3MVwxNjNceDc0XDE0NVwxNTVcMTYwXHg2MVx4NjdcMTQ1XHg3M1w1Nlx4NjVcMTU2XDE2Mlx4NmZcMTU0XHg2Y1wxNDVcMTQ0XHgyZFwxNTRceDY5XHg3M1wxNjQiLCBhcnJheSgiXDE0M1wxNTRceDYxXDE2M1x4NzNcMTA0XDE0MVwxNjRceDYxIiA9PiAkY2xhc3NEYXRhKSk7IH0gcHVibGljIGZ1bmN0aW9uIGluc2VydG5ld1VzZXIoUmVxdWVzdCAkcmVxdWVzdCkgeyAkdmFsaWRhdGVkID0gVmFsaWRhdG9yOjptYWtlKCRyZXF1ZXN0LT5hbGwoKSwgYXJyYXkoIlwxNTZceDYxXHg2ZFx4NjUiID0+ICJceDcyXHg2NVx4NzFceDc1XDE1MVx4NzJcMTQ1XDE0NCIsICJceDcyXHg2Zlx4NmNceDY1IiA9PiAiXHg3MlwxNDVcMTYxXHg3NVwxNTFcMTYyXHg2NVwxNDQiLCAiXDE0NVx4NmRcMTQxXHg2OVwxNTQiID0+IGFycmF5KCJceDcyXDE0NVwxNjFceDc1XHg2OVwxNjJcMTQ1XDE0NCIsICJceDY1XHg2ZFwxNDFcMTUxXHg2YyIsIFJ1bGU6OnVuaXF1ZSgiXDE2NVx4NzNcMTQ1XHg3MlwxNjMiLCAiXHg3NVwxNjNcMTQ1XHg3Mlx4NWZceDY1XDE1NVwxNDFceDY5XHg2YyIpKSksIGFycmF5KCJceDZlXHg2MVwxNTVcMTQ1XHgyZVx4NzJceDY1XDE2MVx4NzVcMTUxXHg3MlwxNDVceDY0IiA9PiAiXHg1NFx4NjhceDY1XDQwXHg0ZVx4NjFceDZkXDE0NVw0MFwxNDZcMTUxXHg2NVx4NmNceDY0XHgyMFx4NjlcMTYzXHgyMFx4NzJceDY1XHg3MVwxNjVceDY5XDE2Mlx4NjVceDY0IiwgIlx4NzJceDZmXHg2Y1x4NjVceDJlXDE2MlwxNDVceDcxXDE2NVwxNTFceDcyXDE0NVx4NjQiID0+ICJceDU0XHg2OFwxNDVcNDBcMTIyXDE1N1wxNTRcMTQ1XHgyMFwxNDZceDY5XDE0NVx4NmNceDY0XDQwXHg2OVwxNjNcNDBcMTYyXDE0NVwxNjFcMTY1XDE1MVx4NzJceDY1XHg2NCIsICJcMTQ1XDE1NVx4NjFcMTUxXDE1NFx4MmVcMTYyXDE0NVx4NzFcMTY1XDE1MVwxNjJcMTQ1XHg2NCIgPT4gIlx4NTRcMTUwXHg2NVw0MFx4NDVcMTU1XHg2MVwxNTFceDZjXHgyMFwxNDZceDY5XDE0NVx4NmNcMTQ0XDQwXHg2OVx4NzNcNDBcMTYyXDE0NVx4NzFcMTY1XHg2OVx4NzJcMTQ1XHg2NCIpKTsgaWYgKCR2YWxpZGF0ZWQtPmZhaWxzKCkpIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjVcMTYyXDE2Mlx4NmZceDcyXHg3MyIgPT4gJHZhbGlkYXRlZC0+ZXJyb3JzKCktPmZpcnN0KCkpKTsgfSBlbHNlIHsgJE5ld1VzZXIgPSBuZXcgVXNlcnMoKTsgJE5ld1VzZXItPnVzZXJuYW1lID0gJHJlcXVlc3QtPmVtYWlsOyAkTmV3VXNlci0+bmFtZSA9ICRyZXF1ZXN0LT5uYW1lOyAkTmV3VXNlci0+cm9sZSA9ICRyZXF1ZXN0LT5yb2xlOyAkTmV3VXNlci0+dXNlcl9lbWFpbCA9ICRyZXF1ZXN0LT5lbWFpbDsgJE5ld1VzZXItPnBhc3N3b3JkID0gYmNyeXB0KCJcMTIzXDE1NVx4NjFceDcyXHg3NFwxNTRceDYxXDE0Mlw2Mlw2MFw2Mlw2M1x4MjEiKTsgJE5ld1VzZXItPnBhc3Nfc3RyaW5nID0gIlwxMjNceDZkXHg2MVwxNjJceDc0XHg2Y1x4NjFcMTQyXDYyXDYwXHgzMlw2M1w0MSI7ICROZXdVc2VyLT5jcmVhdGVkX2J5ID0gU2Vzc2lvbjo6Z2V0KCJcMTU2XHg2MVwxNTVceDY1Iik7IGlmIChTZXNzaW9uOjpnZXQoIlwxNDFcMTQ0XHg2ZFwxNTFcMTU2IikgPT0gIlwxNDFcMTQ0XHg2ZFwxNTFceDZlIikgeyAkTmV3VXNlci0+c3RhdHVzID0gJyc7IH0gZWxzZSB7ICROZXdVc2VyLT5zdGF0dXMgPSAiXDE2MFx4NjVceDZlXDE0NFwxNTFceDZlXHg2NyI7IH0gJE5ld1VzZXItPnNhdmUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNTFceDZlXDE2M1wxNDVceDcyXDE2NFx4NjVceDY0IiA9PiAiXDExNlx4NjVcMTY3XHgyMFwxMjVceDczXHg2NVwxNjJceDIwXHg0MVx4NjNceDYzXDE1N1wxNjVcMTU2XHg3NFw0MFwxNTBcMTQxXDE2M1x4MjBcMTQyXDE0NVwxNDVceDZlXHgyMFx4NjNcMTYyXDE0NVx4NjFcMTY0XHg2NVwxNDRcNTYiKSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gdXBkYXRlUnVicmljKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGlkID0gJHJlcXVlc3QtPmlucHV0KCJceDY5XDE0NCIpOyAkcGFydCA9ICRyZXF1ZXN0LT5pbnB1dCgiXDE2MFwxNDFceDcyXDE2NCIpOyAkck5hbWUgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NzJceDc1XDE0Mlx4NzJceDY5XHg2M1wxMzdcMTU2XHg2MVx4NmRceDY1Iik7ICR3ZWlnaHQgPSAkcmVxdWVzdC0+aW5wdXQoIlwxNjdcMTQ1XHg2OVx4NjdceDY4XHg3NCIpOyAkcnVicmljID0gcnVicmljczo6ZmluZCgkaWQpOyAkcnVicmljUGFydCA9IHJ1YnJpY19wYXJ0czo6d2hlcmUoIlwxNjJceDc1XHg2Mlx4NzJcMTUxXDE0M1wxMzdcMTUxXDE0NCIsICRpZCktPmdldCgpOyBpZiAoJHJ1YnJpYykgeyAkcnVicmljLT5ydWJyaWNfbmFtZSA9ICRyTmFtZTsgJHJ1YnJpYy0+c2F2ZSgpOyB9IGlmICgkcnVicmljUGFydCkgeyBmb3JlYWNoICgkcnVicmljUGFydCBhcyAkaW5kZXggPT4gJHJwKSB7ICRycC0+cGFydF9ubyA9ICRwYXJ0WyRpbmRleF07ICRycC0+d2VpZ2h0ID0gJHdlaWdodFskaW5kZXhdOyAkcnAtPnNhdmUoKTsgfSB9IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDc1XDE2MFwxNDRceDYxXHg3NFx4NjVceDY0IiA9PiAiXDEyMlwxNjVceDYyXHg3Mlx4NjlceDYzXDQwXDE1MFx4NjFceDczXDQwXDE0Mlx4NjVcMTQ1XHg2ZVw0MFx4NzVceDcwXDE0NFx4NjFceDc0XDE0NVx4NjRcNDBceDczXHg3NVx4NjNceDYzXDE0NVx4NzNceDczXDE0NlwxNjVceDZjXHg2Y1wxNzFcNTYiKSk7IH0gcHVibGljIGZ1bmN0aW9uIGFzc2lnblJ1YnJpYyhSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRkYXRhID0gJHJlcXVlc3QtPmlucHV0KCJceDYzXHg2Y1x4NjFcMTYzXDE2M1x4NjVceDczIik7ICRydWJyaWNJRCA9ICRyZXF1ZXN0LT5pbnB1dCgiXHg3Mlx4NzVceDYyXHg3MlwxNTFcMTQzXHg1Zlx4NjlcMTQ0Iik7ICRydWJyaWMgPSBydWJyaWNzOjpmaW5kKCRydWJyaWNJRCk7IGlmICgkcnVicmljKSB7ICRydWJyaWNOYW1lID0gJHJ1YnJpYy0+cnVicmljX25hbWU7IH0gZWxzZSB7ICRydWJyaWNOYW1lID0gIlx4NTJcMTY1XDE0Mlx4NzJcMTUxXHg2M1x4MjBceDZlXHg2ZlwxNjRceDIwXHg2Nlx4NmZcMTY1XHg2ZVx4NjQiOyB9ICR2YWxpZGF0ZWQgPSBWYWxpZGF0b3I6Om1ha2UoJHJlcXVlc3QtPmFsbCgpLCBhcnJheSgiXHg2M1x4NmNcMTQxXDE2M1wxNjNcMTQ1XHg3MyIgPT4gIlwxNjJcMTQ1XHg3MVwxNjVceDY5XDE2MlwxNDVceDY0XHg3Y1wxNDFceDcyXHg3Mlx4NjFcMTcxXHg3Y1x4NmRceDY5XHg2ZVx4M2FceDMxIiksIGFycmF5KCJceDYzXHg2Y1x4NjFceDczXHg3M1wxNDVcMTYzXHgyZVx4NzJceDY1XDE2MVx4NzVceDY5XHg3Mlx4NjVcMTQ0IiA9PiAiXDEyM1wxNDVcMTU0XDE0NVx4NjNcMTY0XDQwXHg2MVx4NzRcNDBcMTU0XHg2NVx4NjFceDczXHg3NFw0MFx4NmZcMTU2XDE0NVx4MjBceDYzXDE1NFx4NjFceDczXDE2M1w1NiIpKTsgaWYgKCR2YWxpZGF0ZWQtPmZhaWxzKCkpIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDVceDcyXHg3MlwxNTdceDcyIiA9PiAkdmFsaWRhdGVkLT5lcnJvcnMoKS0+Zmlyc3QoKSkpOyB9IGVsc2UgeyBmb3JlYWNoICgkZGF0YSBhcyAkY2xhc3NfaWQpIHsgJHVwZGF0ZUNsYXNzID0gQ2xhc3Nlczo6ZmluZCgkY2xhc3NfaWQpOyBpZiAoJHVwZGF0ZUNsYXNzKSB7ICR1cGRhdGVDbGFzcy0+cnVicmljX2Fzc2lnbmVkID0gJHJ1YnJpY0lEOyAkdXBkYXRlQ2xhc3MtPnNhdmUoKTsgfSAkY2hlY2tSdWJyaWNHcmFkZSA9IFJ1YnJpY0dyYWRlczo6d2hlcmUoIlwxNDNceDZjXDE0MVwxNjNceDczXHg1ZlwxNTFcMTQ0IiwgJGNsYXNzX2lkKS0+Z2V0KCk7IGZvcmVhY2ggKCRjaGVja1J1YnJpY0dyYWRlIGFzICRjbGFzc19kYXRhKSB7ICRjbGFzc19kYXRhLT5pZF9ydWJyaWMgPSAkcnVicmljSUQ7ICRjbGFzc19kYXRhLT5zYXZlKCk7IH0gfSByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg2MVwxNjNceDczXDE1MVwxNDdcMTU2XDE0NVx4NjQiID0+ICJcMTIyXDE2NVx4NjJcMTYyXDE1MVwxNDNceDIwXDQ3eyRydWJyaWNOYW1lfVw0N1w0MFwxNjNceDc1XDE0M1wxNDNceDY1XHg3M1x4NzNceDY2XHg3NVwxNTRcMTU0XDE3MVx4MjBcMTQxXHg3M1wxNjNceDY5XHg2N1wxNTZcMTQ1XDE0NFw0MFwxNjRcMTU3XHgyMFwxNjNceDY1XHg2Y1x4NjVcMTQzXDE2NFwxNDVcMTQ0XHgyMFx4NjNceDZjXDE0MVx4NzNcMTYzXHg2NVx4NzNceDJlIikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIHByZXZpZXdSdWJyaWMoUmVxdWVzdCAkcmVxdWVzdCkgeyAkZGF0YSA9ICRyZXF1ZXN0LT5pbnB1dCgiXDE2MFwxNDFceDcyXHg3NFx4NzMiKTsgJHJOYW1lID0gJHJlcXVlc3QtPmlucHV0KCJcMTYyXHg3NVwxNDJceDcyXDE1MVx4NjNcMTM3XHg2ZVx4NjFcMTU1XDE0NSIpOyAkdmFsaWRhdGVkID0gVmFsaWRhdG9yOjptYWtlKCRyZXF1ZXN0LT5hbGwoKSwgYXJyYXkoIlx4NzJcMTY1XDE0Mlx4NzJceDY5XDE0M1wxMzdceDZlXHg2MVx4NmRcMTQ1IiA9PiBhcnJheSgiXHg3MlwxNDVcMTYxXDE2NVwxNTFcMTYyXHg2NVx4NjQiLCAiXHg3M1wxNjRcMTYyXHg2OVx4NmVcMTQ3IiwgIlx4NmRcMTQxXHg3OFw3Mlw2Mlx4MzVceDM1IiwgUnVsZTo6dW5pcXVlKCJceDcyXDE2NVx4NjJceDcyXHg2OVx4NjNcMTYzIiwgIlwxNjJcMTY1XHg2MlwxNjJcMTUxXDE0M1x4NWZceDZlXDE0MVwxNTVcMTQ1IikpLCAiXHg3MFwxNDFceDcyXHg3NFwxNjNceDJlXDUyXDU2XHg3MFwxNDFceDcyXDE2NFx4NWZcMTU2XDE1NyIgPT4gIlwxNjJcMTQ1XDE2MVwxNjVcMTUxXHg3Mlx4NjVcMTQ0XHg3Y1x4NzNcMTY0XHg3Mlx4NjlceDZlXDE0N1wxNzRceDZkXHg2MVwxNzBceDNhXDYyXHgzNVx4MzUiLCAiXHg3MFwxNDFceDcyXHg3NFwxNjNceDJlXHgyYVw1NlwxNjdceDY1XDE1MVx4NjdceDY4XHg3NCIgPT4gIlx4NzJcMTQ1XDE2MVx4NzVceDY5XDE2Mlx4NjVcMTQ0XHg3Y1wxNTZceDc1XDE1NVx4NjVceDcyXDE1MVx4NjNceDdjXDE1NVx4NjlcMTU2XHgzYVw2MVwxNzRceDZkXHg2MVwxNzBcNzJcNjFceDMwXHgzMCIsICJceDcwXDE0MVwxNjJcMTY0XHg3M1x4MmVceDJhXDU2XHg2M1x4NzJcMTUxXDE2NFwxNDVceDcyXDE1MVwxNDFcNTZceDJhIiA9PiAiXDE2MlwxNDVcMTYxXDE2NVwxNTFcMTYyXDE0NVx4NjRcMTc0XHg3M1x4NzRceDcyXHg2OVwxNTZceDY3IiksIGFycmF5KCJceDcyXHg3NVx4NjJceDcyXHg2OVwxNDNceDVmXDE1NlwxNDFcMTU1XHg2NVw1NlwxNjJcMTQ1XDE2MVwxNjVceDY5XHg3Mlx4NjVcMTQ0IiA9PiAiXHg1NFwxNTBceDY1XDQwXHg1MlwxNjVceDYyXHg3Mlx4NjlcMTQzXHgyMFx4NGVcMTQxXDE1NVwxNDVceDIwXHg2Nlx4NjlceDY1XDE1NFwxNDRcNDBceDY5XDE2M1x4MjBceDcyXDE0NVwxNjFceDc1XHg2OVwxNjJcMTQ1XDE0NFw1NiIsICJceDcyXDE2NVx4NjJcMTYyXDE1MVwxNDNcMTM3XDE1Nlx4NjFcMTU1XDE0NVx4MmVceDczXHg3NFx4NzJcMTUxXHg2ZVwxNDciID0+ICJceDU0XDE1MFx4NjVcNDBcMTIyXDE2NVx4NjJcMTYyXHg2OVx4NjNceDIwXDExNlx4NjFceDZkXDE0NVw0MFx4NmRcMTY1XHg3M1wxNjRcNDBceDYyXHg2NVw0MFx4NjFcNDBceDczXDE2NFwxNjJcMTUxXHg2ZVwxNDdcNTYiLCAiXDE2MlwxNjVcMTQyXDE2MlwxNTFcMTQzXHg1ZlwxNTZcMTQxXDE1NVx4NjVceDJlXHg2ZFx4NjFcMTcwIiA9PiAiXHg1NFx4NjhcMTQ1XHgyMFx4NTJceDc1XHg2MlwxNjJceDY5XDE0M1x4MjBcMTE2XDE0MVx4NmRceDY1XDQwXDE1NVwxNDFceDc5XHgyMFwxNTZcMTU3XDE2NFw0MFwxNDJceDY1XDQwXHg2N1wxNjJceDY1XHg2MVwxNjRcMTQ1XHg3Mlx4MjBceDc0XDE1MFwxNDFcMTU2XDQwXDcyXDE1NVx4NjFceDc4XDQwXHg2M1wxNTBceDYxXDE2MlwxNDFceDYzXDE2NFwxNDVceDcyXDE2M1w1NiIsICJceDcwXHg2MVx4NzJceDc0XHg3M1w1Nlw1Mlx4MmVcMTYwXHg2MVx4NzJceDc0XDEzN1wxNTZcMTU3XDU2XHg3Mlx4NjVcMTYxXDE2NVwxNTFceDcyXDE0NVx4NjQiID0+ICJcMTI0XHg2OFx4NjVcNDBcMTIwXDE0MVwxNjJcMTY0XHgyMFx4NGVcMTU3XHgyZVx4MjBcMTQ2XDE1MVwxNDVcMTU0XDE0NFx4MjBceDY5XHg3M1x4MjBcMTYyXHg2NVwxNjFcMTY1XHg2OVwxNjJceDY1XDE0NFw1NiIsICJcMTYwXDE0MVx4NzJceDc0XDE2M1x4MmVceDJhXHgyZVx4NzBceDYxXHg3Mlx4NzRceDVmXDE1Nlx4NmZceDJlXHg3M1x4NzRcMTYyXHg2OVwxNTZceDY3IiA9PiAiXHg1NFwxNTBceDY1XDQwXDEyMFx4NjFcMTYyXHg3NFw0MFwxMTZcMTU3XDU2XHgyMFwxNTVcMTY1XHg3M1x4NzRcNDBceDYyXDE0NVx4MjBcMTQxXDQwXHg3M1x4NzRceDcyXDE1MVx4NmVceDY3XDU2IiwgIlwxNjBcMTQxXHg3Mlx4NzRcMTYzXDU2XHgyYVx4MmVcMTYwXDE0MVwxNjJcMTY0XHg1ZlwxNTZcMTU3XHgyZVwxNTVceDYxXDE3MCIgPT4gIlx4NTRceDY4XDE0NVx4MjBcMTIwXHg2MVx4NzJceDc0XDQwXHg0ZVwxNTdcNTZceDIwXHg2ZFx4NjFcMTcxXHgyMFx4NmVcMTU3XHg3NFw0MFx4NjJceDY1XDQwXHg2N1x4NzJceDY1XHg2MVx4NzRceDY1XDE2Mlw0MFwxNjRcMTUwXDE0MVx4NmVcNDBceDNhXHg2ZFwxNDFcMTcwXDQwXHg2M1wxNTBcMTQxXHg3MlwxNDFceDYzXHg3NFwxNDVcMTYyXDE2M1w1NiIsICJceDcwXDE0MVx4NzJcMTY0XHg3M1w1Nlw1Mlw1NlwxNjdcMTQ1XDE1MVwxNDdcMTUwXDE2NFx4MmVceDcyXDE0NVwxNjFceDc1XHg2OVx4NzJceDY1XDE0NCIgPT4gIlwxMjRceDY4XHg2NVx4MjBceDU3XHg2NVwxNTFceDY3XHg2OFwxNjRceDIwXHg2NlwxNTFceDY1XHg2Y1wxNDRceDIwXHg2OVwxNjNceDIwXDE2Mlx4NjVceDcxXDE2NVx4NjlcMTYyXHg2NVx4NjRcNTYiLCAiXDE2MFx4NjFceDcyXDE2NFwxNjNceDJlXDUyXDU2XHg3N1wxNDVcMTUxXDE0N1x4NjhcMTY0XHgyZVx4NmVcMTY1XHg2ZFx4NjVceDcyXDE1MVx4NjMiID0+ICJcMTI0XHg2OFwxNDVceDIwXHg1N1x4NjVcMTUxXHg2N1x4NjhcMTY0XDQwXHg2ZFx4NzVcMTYzXHg3NFx4MjBceDYyXDE0NVw0MFx4NjFcNDBceDZlXDE2NVwxNTVceDYyXHg2NVwxNjJceDJlIiwgIlx4NzBceDYxXDE2Mlx4NzRcMTYzXHgyZVw1Mlx4MmVcMTY3XDE0NVwxNTFceDY3XHg2OFx4NzRcNTZceDZkXDE1MVwxNTYiID0+ICJcMTI0XDE1MFx4NjVceDIwXHg1N1x4NjVceDY5XDE0N1wxNTBcMTY0XDQwXHg2ZFx4NzVcMTYzXHg3NFx4MjBceDYyXHg2NVx4MjBcMTQxXHg3NFx4MjBcMTU0XHg2NVx4NjFceDczXDE2NFw0MFw3Mlx4NmRceDY5XHg2ZVx4MmUiLCAiXHg3MFwxNDFceDcyXDE2NFwxNjNcNTZcNTJceDJlXHg3N1wxNDVcMTUxXDE0N1wxNTBcMTY0XDU2XDE1NVwxNDFceDc4IiA9PiAiXDEyNFx4NjhcMTQ1XHgyMFwxMjdceDY1XHg2OVx4NjdcMTUwXDE2NFx4MjBcMTU1XHg2MVwxNzFceDIwXDE1NlwxNTdceDc0XHgyMFwxNDJcMTQ1XDQwXDE0N1x4NzJcMTQ1XDE0MVwxNjRceDY1XDE2Mlx4MjBcMTY0XHg2OFx4NjFcMTU2XDQwXDcyXHg2ZFwxNDFceDc4XHgyZSIsICJceDcwXDE0MVx4NzJceDc0XHg3M1x4MmVcNTJceDJlXHg2M1wxNjJceDY5XHg3NFwxNDVceDcyXDE1MVwxNDFcNTZcNTJceDJlXHg3Mlx4NjVcMTYxXDE2NVwxNTFcMTYyXHg2NVwxNDQiID0+ICJceDU0XHg2OFwxNDVceDIwXDEwM1wxNjJceDY5XDE2NFx4NjVceDcyXDE1MVwxNDFcNDBceDY2XDE1MVx4NjVceDZjXHg2NFw0MFx4NjlceDczXDQwXDE2Mlx4NjVcMTYxXDE2NVx4NjlcMTYyXHg2NVwxNDRceDJlIiwgIlwxNjBcMTQxXHg3Mlx4NzRcMTYzXDU2XHgyYVx4MmVceDYzXHg3Mlx4NjlcMTY0XDE0NVwxNjJcMTUxXHg2MVx4MmVceDJhXDU2XHg3M1wxNjRceDcyXDE1MVx4NmVcMTQ3IiA9PiAiXHg1NFx4NjhcMTQ1XDQwXHg0M1wxNjJcMTUxXHg3NFx4NjVcMTYyXHg2OVx4NjFcNDBcMTU1XHg3NVx4NzNcMTY0XDQwXHg2Mlx4NjVceDIwXHg2MVx4MjBcMTYzXDE2NFwxNjJceDY5XDE1NlwxNDdcNTYiKSk7IGlmICgkdmFsaWRhdGVkLT5mYWlscygpKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY1XDE2Mlx4NzJceDZmXHg3Mlx4NzMiID0+ICR2YWxpZGF0ZWQtPmVycm9ycygpLT5maXJzdCgpKSk7IH0gZWxzZSB7ICR0b3RhbFdlaWdodCA9IDA7IGZvcmVhY2ggKCRkYXRhIGFzICRwYXJ0KSB7ICR0b3RhbFdlaWdodCArPSAkcGFydFsiXDE2N1wxNDVceDY5XDE0N1wxNTBceDc0Il07IH0gaWYgKCR0b3RhbFdlaWdodCA+IDEwMCkgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE0NVwxNjJcMTYyXHg2Zlx4NzJceDczIiA9PiAiXDEyNFwxNTdceDc0XHg2MVx4NmNcNDBcMTY3XDE0NVx4NjlcMTQ3XHg2OFx4NzRceDIwXDE1N1x4NjZceDIwXHg3MFwxNDFceDcyXHg3NFx4NzNceDIwXDE1NVwxNjVceDczXDE2NFw0MFx4NmVcMTU3XHg3NFx4MjBcMTQ1XHg3OFwxNDNcMTQ1XHg2NVwxNDRceDIwXDYxXHgzMFx4MzBcNTYiKSk7IH0gcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NzNceDc1XHg2M1x4NjNceDY1XDE2M1x4NzMiID0+IHRydWUsICJcMTQ0XDE0MVx4NzRcMTQxIiA9PiAkZGF0YSwgIlwxNjJcMTE2XDE0MVwxNTVcMTQ1IiA9PiAkck5hbWUpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBwdWJsaXNoUnVicmljKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGRhdGEgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NzBceDYxXDE2Mlx4NzRcMTYzIik7ICRyTmFtZSA9ICRyZXF1ZXN0LT5pbnB1dCgiXHg3Mlx4NzVceDYyXDE2MlwxNTFcMTQzXDEzN1x4NmVcMTQxXHg2ZFwxNDUiKTsgJHZhbGlkYXRlZCA9IFZhbGlkYXRvcjo6bWFrZSgkcmVxdWVzdC0+YWxsKCksIGFycmF5KCJceDcyXHg3NVx4NjJceDcyXDE1MVwxNDNceDVmXHg2ZVx4NjFceDZkXDE0NSIgPT4gYXJyYXkoIlx4NzJcMTQ1XDE2MVwxNjVcMTUxXHg3MlwxNDVcMTQ0IiwgIlwxNjNcMTY0XHg3Mlx4NjlcMTU2XDE0NyIsICJcMTU1XDE0MVwxNzBceDNhXHgzMlx4MzVcNjUiLCBSdWxlOjp1bmlxdWUoIlx4NzJcMTY1XDE0Mlx4NzJceDY5XHg2M1x4NzMiLCAiXHg3MlwxNjVceDYyXHg3Mlx4NjlcMTQzXDEzN1wxNTZceDYxXHg2ZFwxNDUiKSksICJcMTYwXDE0MVx4NzJcMTY0XDE2M1x4MmVcNTJcNTZcMTYwXHg2MVwxNjJcMTY0XHg1ZlwxNTZceDZmIiA9PiAiXDE2MlwxNDVceDcxXHg3NVwxNTFceDcyXHg2NVx4NjRcMTc0XHg3M1x4NzRcMTYyXDE1MVwxNTZcMTQ3XDE3NFwxNTVcMTQxXDE3MFw3Mlw2Mlw2NVw2NSIsICJcMTYwXHg2MVwxNjJceDc0XHg3M1x4MmVcNTJcNTZceDc3XHg2NVwxNTFcMTQ3XHg2OFx4NzQiID0+ICJceDcyXHg2NVx4NzFceDc1XHg2OVx4NzJcMTQ1XDE0NFwxNzRceDZlXHg3NVwxNTVceDY1XDE2MlwxNTFceDYzXHg3Y1wxNTVcMTUxXHg2ZVw3Mlw2MVx4N2NcMTU1XHg2MVwxNzBcNzJceDMxXDYwXHgzMCIpLCBhcnJheSgiXDE2Mlx4NzVceDYyXHg3MlwxNTFceDYzXHg1ZlwxNTZceDYxXHg2ZFwxNDVceDJlXDE2Mlx4NjVceDcxXDE2NVwxNTFceDcyXHg2NVwxNDQiID0+ICJcMTI0XDE1MFx4NjVceDIwXDEyMlwxNjVcMTQyXDE2Mlx4NjlceDYzXDQwXDExNlx4NjFceDZkXDE0NVx4MjBceDY2XDE1MVx4NjVceDZjXDE0NFw0MFx4NjlceDczXDQwXHg3MlwxNDVceDcxXHg3NVwxNTFceDcyXHg2NVx4NjRcNTYiLCAiXHg3MlwxNjVcMTQyXDE2Mlx4NjlcMTQzXDEzN1wxNTZcMTQxXHg2ZFwxNDVcNTZceDczXHg3NFwxNjJceDY5XDE1NlwxNDciID0+ICJcMTI0XHg2OFx4NjVceDIwXHg1Mlx4NzVcMTQyXHg3MlwxNTFceDYzXDQwXHg0ZVx4NjFcMTU1XHg2NVx4MjBcMTU1XDE2NVx4NzNcMTY0XHgyMFx4NjJceDY1XHgyMFwxNDFceDIwXDE2M1x4NzRceDcyXDE1MVwxNTZcMTQ3XDU2IiwgIlwxNjJceDc1XHg2Mlx4NzJceDY5XDE0M1x4NWZceDZlXDE0MVwxNTVcMTQ1XDU2XDE1NVwxNDFcMTcwIiA9PiAiXDEyNFwxNTBcMTQ1XDQwXDEyMlwxNjVceDYyXDE2Mlx4NjlcMTQzXDQwXDExNlx4NjFcMTU1XHg2NVw0MFx4NmRceDYxXHg3OVx4MjBceDZlXHg2Zlx4NzRceDIwXDE0Mlx4NjVcNDBceDY3XHg3MlwxNDVceDYxXHg3NFx4NjVcMTYyXHgyMFwxNjRcMTUwXHg2MVx4NmVcNDBceDNhXHg2ZFx4NjFcMTcwXDQwXDE0M1x4NjhceDYxXDE2Mlx4NjFcMTQzXDE2NFwxNDVcMTYyXDE2M1w1NiIsICJceDcwXDE0MVwxNjJceDc0XDE2M1x4MmVcNTJcNTZcMTYwXDE0MVx4NzJceDc0XHg1Zlx4NmVceDZmXDU2XHg3Mlx4NjVcMTYxXHg3NVx4NjlcMTYyXHg2NVx4NjQiID0+ICJceDU0XHg2OFwxNDVceDIwXHg1MFwxNDFcMTYyXDE2NFx4MjBcMTE2XHg2Zlx4MmVcNDBcMTQ2XDE1MVx4NjVceDZjXHg2NFx4MjBcMTUxXDE2M1w0MFx4NzJcMTQ1XHg3MVx4NzVcMTUxXHg3MlwxNDVceDY0XHgyZSIsICJcMTYwXHg2MVwxNjJcMTY0XDE2M1x4MmVceDJhXDU2XHg3MFwxNDFcMTYyXHg3NFwxMzdceDZlXHg2Zlx4MmVcMTYzXHg3NFwxNjJcMTUxXDE1NlwxNDciID0+ICJceDU0XDE1MFwxNDVceDIwXHg1MFwxNDFcMTYyXHg3NFx4MjBcMTE2XDE1N1w1Nlx4MjBceDZkXHg3NVx4NzNceDc0XHgyMFwxNDJceDY1XHgyMFwxNDFcNDBceDczXDE2NFx4NzJcMTUxXDE1Nlx4NjdcNTYiLCAiXDE2MFwxNDFceDcyXHg3NFx4NzNcNTZcNTJceDJlXDE2MFwxNDFceDcyXDE2NFwxMzdcMTU2XHg2Zlw1NlwxNTVcMTQxXDE3MCIgPT4gIlx4NTRceDY4XHg2NVx4MjBceDUwXDE0MVwxNjJceDc0XDQwXDExNlx4NmZceDJlXDQwXHg2ZFwxNDFceDc5XHgyMFwxNTZcMTU3XHg3NFw0MFwxNDJcMTQ1XDQwXHg2N1wxNjJceDY1XDE0MVx4NzRcMTQ1XDE2Mlx4MjBcMTY0XHg2OFx4NjFceDZlXHgyMFw3Mlx4NmRcMTQxXDE3MFw0MFwxNDNceDY4XDE0MVx4NzJcMTQxXHg2M1x4NzRcMTQ1XHg3MlwxNjNcNTYiLCAiXDE2MFx4NjFcMTYyXDE2NFwxNjNcNTZcNTJceDJlXDE2N1x4NjVcMTUxXHg2N1x4NjhceDc0XHgyZVwxNjJceDY1XHg3MVwxNjVceDY5XHg3Mlx4NjVceDY0IiA9PiAiXHg1NFwxNTBceDY1XDQwXHg1N1wxNDVcMTUxXDE0N1x4NjhcMTY0XDQwXDE0NlwxNTFcMTQ1XDE1NFx4NjRcNDBceDY5XHg3M1w0MFx4NzJcMTQ1XHg3MVwxNjVceDY5XDE2Mlx4NjVcMTQ0XHgyZSIsICJcMTYwXHg2MVx4NzJcMTY0XHg3M1x4MmVceDJhXHgyZVx4NzdceDY1XDE1MVx4NjdcMTUwXHg3NFw1Nlx4NmVcMTY1XDE1NVwxNDVceDcyXDE1MVx4NjMiID0+ICJcMTI0XDE1MFx4NjVcNDBceDU3XDE0NVx4NjlcMTQ3XHg2OFwxNjRcNDBcMTU1XHg3NVx4NzNcMTY0XDQwXHg2MlwxNDVceDIwXHg2MVx4MjBceDZlXHg3NVx4NmRcMTQyXDE0NVwxNjJceDJlIiwgIlwxNjBcMTQxXDE2Mlx4NzRceDczXDU2XHgyYVw1Nlx4NzdcMTQ1XDE1MVx4NjdceDY4XDE2NFw1NlwxNTVceDY5XDE1NiIgPT4gIlx4NTRcMTUwXDE0NVw0MFwxMjdceDY1XHg2OVwxNDdceDY4XDE2NFw0MFwxNTVceDc1XDE2M1x4NzRceDIwXDE0MlwxNDVcNDBcMTQxXDE2NFx4MjBcMTU0XHg2NVx4NjFcMTYzXDE2NFw0MFw3MlwxNTVcMTUxXDE1Nlw1NiIsICJcMTYwXHg2MVx4NzJceDc0XDE2M1w1Nlw1Mlw1Nlx4NzdcMTQ1XHg2OVx4NjdceDY4XHg3NFx4MmVceDZkXHg2MVx4NzgiID0+ICJcMTI0XHg2OFwxNDVceDIwXHg1N1wxNDVceDY5XDE0N1wxNTBceDc0XHgyMFx4NmRcMTQxXDE3MVw0MFx4NmVcMTU3XHg3NFw0MFwxNDJceDY1XHgyMFx4NjdcMTYyXDE0NVx4NjFcMTY0XHg2NVwxNjJcNDBceDc0XHg2OFwxNDFcMTU2XHgyMFx4M2FcMTU1XDE0MVx4NzhcNTYiKSk7IGlmICgkdmFsaWRhdGVkLT5mYWlscygpKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTQ1XHg3Mlx4NzJceDZmXDE2MlwxNjMiID0+ICR2YWxpZGF0ZWQtPmVycm9ycygpLT5maXJzdCgpKSk7IH0gZWxzZSB7ICR0b3RhbFdlaWdodCA9IDA7IGZvcmVhY2ggKCRkYXRhIGFzICRwYXJ0KSB7ICR0b3RhbFdlaWdodCArPSAkcGFydFsiXDE2N1x4NjVceDY5XHg2N1wxNTBcMTY0Il07IH0gaWYgKCR0b3RhbFdlaWdodCA+IDEwMCkgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE0NVx4NzJcMTYyXDE1N1wxNjJcMTYzIiA9PiAiXDEyNFwxNTdceDc0XHg2MVwxNTRcNDBceDc3XDE0NVwxNTFcMTQ3XHg2OFwxNjRceDIwXDE1N1wxNDZceDIwXDE2MFx4NjFcMTYyXDE2NFx4NzNceDIwXHg2ZFx4NzVceDczXDE2NFw0MFwxNTZceDZmXDE2NFx4MjBcMTQ1XHg3OFx4NjNceDY1XDE0NVx4NjRcNDBceDMxXHgzMFx4MzBceDJlIikpOyB9ICRydWJyaWMgPSBuZXcgcnVicmljcygpOyAkcnVicmljLT5ydWJyaWNfbmFtZSA9ICRyTmFtZTsgJHJ1YnJpYy0+Y3JlYXRlZF9ieSA9IFNlc3Npb246OmdldCgiXDE1Nlx4NjFcMTU1XDE0NSIpOyAkcnVicmljLT5zYXZlKCk7IGZvcmVhY2ggKCRkYXRhIGFzICRwYXJ0SW5kZXggPT4gJHBhcnQpIHsgaWYgKGlzc2V0KCRwYXJ0WyJceDcwXDE0MVwxNjJcMTY0XHg1Zlx4NmVceDZmIl0pKSB7ICRydWJyaWNQYXJ0ID0gbmV3IHJ1YnJpY19wYXJ0cygpOyAkcnVicmljUGFydC0+cnVicmljX2lkID0gJHJ1YnJpYy0+aWQ7ICRydWJyaWNQYXJ0LT5wYXJ0X25vID0gJHBhcnRbIlx4NzBceDYxXHg3Mlx4NzRcMTM3XHg2ZVwxNTciXTsgJHJ1YnJpY1BhcnQtPndlaWdodCA9ICRwYXJ0WyJcMTY3XDE0NVwxNTFceDY3XDE1MFx4NzQiXTsgJHJ1YnJpY1BhcnQtPnNhdmUoKTsgfSB9IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDcwXDE2NVwxNDJceDZjXHg2OVx4NzNcMTUwXDE0NVwxNDQiID0+ICJceDUyXDE2NVwxNDJcMTYyXHg2OVwxNDNcNDBcMTYwXDE0MVx4NzVceDYyXDE1NFx4NjlcMTYzXHg2OFwxNDVcMTQ0XDQwXHg3M1x4NzVcMTQzXHg2M1wxNDVcMTYzXHg3M1wxNDZcMTY1XDE1NFx4NmNcMTcxXHgyZSIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBwcmV2aWV3VXNlcnMoUmVxdWVzdCAkcmVxdWVzdCkgeyAkcmVxdWVzdC0+dmFsaWRhdGUoYXJyYXkoIlx4NjNcMTYzXDE2NlwxMzdceDY2XDE1MVx4NmNceDY1IiA9PiAiXHg3MlwxNDVcMTYxXDE2NVx4NjlcMTYyXDE0NVwxNDRceDdjXHg2ZFx4NjlceDZkXDE0NVx4NzNcNzJcMTQzXHg3M1wxNjZcNTRcMTY0XDE3MFwxNjQiKSk7ICRjc3ZfZmlsZSA9ICRyZXF1ZXN0LT5maWxlKCJceDYzXHg3M1x4NzZceDVmXDE0NlwxNTFceDZjXDE0NSIpOyAkY3N2ID0gUmVhZGVyOjpjcmVhdGVGcm9tUGF0aCgkY3N2X2ZpbGUtPmdldFBhdGhuYW1lKCkpOyAkaGVhZGVyID0gJGNzdi0+ZmV0Y2hPbmUoMCk7ICRyZXF1aXJlZENvbHVtbnMgPSBhcnJheSgiXDE1NlwxNDFceDZkXDE0NSIsICJceDY1XHg2ZFwxNDFcMTUxXDE1NCIsICJceDcyXDE1N1x4NmNceDY1Iik7IGlmICgkaGVhZGVyICE9PSAkcmVxdWlyZWRDb2x1bW5zKSB7IHJldHVybiByZWRpcmVjdCgpLT5iYWNrKCktPndpdGhFcnJvcnMoYXJyYXkoIlwxNDNceDczXHg3Nlx4NWZcMTQ2XHg2OVx4NmNcMTQ1IiA9PiAiXHg0OVwxNTZceDc2XDE0MVx4NmNcMTUxXDE0NFx4MjBceDQzXDEyM1wxMjZcNDBceDY2XDE1N1wxNjJceDZkXDE0MVwxNjRcNDBceDY0XHg2NVwxNjRcMTQ1XDE0M1wxNjRceDY1XHg2NFx4MmVceDIwXHg1NFx4NjhcMTQ1XDQwXHg2OFwxNDVcMTQxXDE0NFx4NjVceDcyXDQwXHg3Mlx4NmZcMTY3XDQwXHg3M1wxNTBceDZmXHg3NVx4NmNceDY0XDQwXDE0MlwxNDVcNzJceDIwIiAuIGltcGxvZGUoIlx4MmNcNDAiLCAkcmVxdWlyZWRDb2x1bW5zKSkpOyB9ICRjc3YtPnNldEhlYWRlck9mZnNldCgwKTsgJGRhdGEgPSBTdGF0ZW1lbnQ6OmNyZWF0ZSgpLT5wcm9jZXNzKCRjc3YpOyByZXR1cm4gdmlldygiXDE2M1x4NzlceDczXDE2NFwxNDVcMTU1XHg3MFwxNDFcMTQ3XHg2NVwxNjNcNTZcMTYwXHg3MlwxNDVceDc2XHg2OVwxNDVceDc3IiwgYXJyYXkoIlwxNDRcMTQxXHg3NFwxNDEiID0+ICRkYXRhKSk7IH0gcHVibGljIGZ1bmN0aW9uIHVwbG9hZFVzZXJzKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGZuYW1lcyA9ICRyZXF1ZXN0LT5pbnB1dCgiXHg2NlwxNTZcMTQxXDE1NVx4NjUiKTsgJGZlbWFpbHMgPSAkcmVxdWVzdC0+aW5wdXQoIlwxNDZceDY1XHg2ZFx4NjFcMTUxXHg2YyIpOyAkZnJvbGVzID0gJHJlcXVlc3QtPmlucHV0KCJcMTQ2XHg3MlwxNTdceDZjXDE0NSIpOyAkY291bnQgPSBjb3VudCgkZm5hbWVzKTsgZm9yICgkaSA9IDA7ICRpIDwgJGNvdW50OyAkaSsrKSB7ICRleGlzdGluZ1VzZXIgPSBEQjo6dGFibGUoIlwxNjVceDczXHg2NVx4NzJceDczIiktPndoZXJlKCJcMTY1XHg3M1x4NjVcMTYyXHg1Zlx4NjVcMTU1XDE0MVx4NjlcMTU0IiwgJGZlbWFpbHNbJGldKS0+Zmlyc3QoKTsgaWYgKCEkZXhpc3RpbmdVc2VyKSB7ICR1c2VyID0gbmV3IFVzZXJzKCk7ICR1c2VyLT5uYW1lID0gJGZuYW1lc1skaV07ICR1c2VyLT51c2VybmFtZSA9ICRmZW1haWxzWyRpXTsgJHVzZXItPnVzZXJfZW1haWwgPSAkZmVtYWlsc1skaV07ICR1c2VyLT5yb2xlID0gJGZyb2xlc1skaV07ICR1c2VyLT5wYXNzd29yZCA9IEhhc2g6Om1ha2UoIlx4NTNcMTU1XDE0MVx4NzJceDc0XHg2Y1wxNDFceDYyXHgzMlx4MzBcNjJceDMzXDQxIik7ICR1c2VyLT5zdGF0dXMgPSAnJzsgJHVzZXItPnBhc3Nfc3RyaW5nID0gIlx4NTNcMTU1XDE0MVwxNjJceDc0XHg2Y1x4NjFceDYyXHgzMlx4MzBceDMyXDYzXDQxIjsgJHVzZXItPmNyZWF0ZWRfYnkgPSBTZXNzaW9uOjpnZXQoIlx4NmVceDYxXDE1NVx4NjUiKTsgJHVzZXItPnNhdmUoKTsgfSB9IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDcyXDE0NVwxNDdceDY5XHg3M1x4NzRcMTQ1XHg3MlwxNDVcMTQ0IiA9PiAiXHg1NVx4NzNcMTQ1XDE2MlwxNjNcNDBceDcyXDE0NVx4NjdcMTUxXDE2M1x4NzRceDY1XDE2Mlx4NjVcMTQ0XHgyMFwxNjNcMTY1XHg2M1wxNDNcMTQ1XDE2M1wxNjNcMTQ2XHg3NVx4NmNceDZjXHg3OSIpKTsgfSBwdWJsaWMgZnVuY3Rpb24gaW5zZXJ0bmV3Q2xhc3MoUmVxdWVzdCAkcmVxdWVzdCkgeyAkdmFsaWRhdGVkID0gVmFsaWRhdG9yOjptYWtlKCRyZXF1ZXN0LT5hbGwoKSwgYXJyYXkoIlwxNDNcMTU0XDE0MVwxNjNceDczXHg2ZVwxNDFceDZkXHg2NSIgPT4gIlx4NzJcMTQ1XHg3MVx4NzVcMTUxXDE2MlwxNDVceDY0IiwgIlwxNDNcMTU0XDE0MVx4NzNceDczXHg2OVx4NmVcMTQ2XDE1NyIgPT4gIlwxNjJcMTQ1XDE2MVx4NzVceDY5XHg3MlwxNDVcMTQ0IiwgIlwxNjNcMTY0XDE0MVx4NzJcMTY0IiA9PiAiXDE2MlwxNDVcMTYxXHg3NVwxNTFceDcyXDE0NVx4NjQiLCAiXHg2NVx4NmVceDY0IiA9PiAiXHg3MlwxNDVceDcxXDE2NVwxNTFcMTYyXHg2NVwxNDQiLCAiXDE1NSIgPT4gIlwxNjJceDY1XDE2MVwxNjVceDY5XHg3MlwxNDVcMTQ0XDEzN1x4NzdcMTUxXHg3NFx4NjhcMTU3XHg3NVwxNjRcMTM3XHg2MVwxNTRceDZjXHgzYVwxNjRceDJjXHg3N1w1NFwxNjRceDY4XHgyY1wxNDZceDJjXHg3M1wxNDFcMTY0XDU0XDE2MyIsICJceDc0IiA9PiAiXHg3Mlx4NjVcMTYxXHg3NVx4NjlcMTYyXHg2NVx4NjRcMTM3XDE2N1wxNTFcMTY0XDE1MFwxNTdcMTY1XHg3NFwxMzdceDYxXHg2Y1wxNTRceDNhXDE1NVw1NFwxNjdceDJjXHg3NFwxNTBcNTRcMTQ2XDU0XDE2M1wxNDFceDc0XDU0XHg3MyIsICJceDc3IiA9PiAiXDE2Mlx4NjVcMTYxXHg3NVwxNTFcMTYyXHg2NVx4NjRceDVmXHg3N1x4NjlcMTY0XDE1MFx4NmZcMTY1XDE2NFwxMzdcMTQxXHg2Y1x4NmNceDNhXHg2ZFw1NFx4NzRcNTRceDc0XHg2OFw1NFwxNDZcNTRcMTYzXHg2MVwxNjRceDJjXHg3MyIsICJcMTY0XHg2OCIgPT4gIlwxNjJcMTQ1XDE2MVwxNjVcMTUxXHg3Mlx4NjVcMTQ0XDEzN1x4NzdceDY5XHg3NFwxNTBceDZmXDE2NVx4NzRcMTM3XHg2MVwxNTRceDZjXHgzYVx4NmRceDJjXHg3NFx4MmNceDc3XHgyY1x4NjZcNTRcMTYzXHg2MVx4NzRceDJjXHg3MyIsICJceDY2IiA9PiAiXHg3MlwxNDVcMTYxXDE2NVwxNTFceDcyXDE0NVx4NjRcMTM3XDE2N1wxNTFceDc0XHg2OFwxNTdcMTY1XHg3NFwxMzdceDYxXDE1NFwxNTRceDNhXHg2ZFw1NFwxNjRceDJjXHg3N1w1NFwxNjRcMTUwXDU0XDE2M1x4NjFceDc0XHgyY1x4NzMiLCAiXDE2M1wxNDFceDc0IiA9PiAiXHg3MlwxNDVcMTYxXDE2NVwxNTFcMTYyXHg2NVx4NjRcMTM3XDE2N1wxNTFcMTY0XHg2OFx4NmZcMTY1XDE2NFx4NWZcMTQxXHg2Y1wxNTRcNzJcMTU1XHgyY1wxNjRceDJjXHg3N1w1NFx4NzRcMTUwXDU0XHg2Nlw1NFx4NzMiLCAiXDE2MyIgPT4gIlx4NzJceDY1XDE2MVwxNjVceDY5XHg3MlwxNDVceDY0XDEzN1x4NzdcMTUxXDE2NFx4NjhceDZmXDE2NVwxNjRcMTM3XDE0MVwxNTRcMTU0XHgzYVx4NmRceDJjXHg3NFw1NFx4NzdceDJjXHg3NFx4NjhceDJjXHg2Nlw1NFwxNjNcMTQxXHg3NCIpLCBhcnJheSgiXDE0M1wxNTRcMTQxXDE2M1wxNjNcMTU2XHg2MVx4NmRcMTQ1XDU2XHg3Mlx4NjVcMTYxXDE2NVx4NjlcMTYyXHg2NVwxNDQiID0+ICJcMTI0XDE1MFwxNDVcNDBceDQzXHg2Y1wxNDFceDczXHg3M1x4MjBceDRlXDE0MVwxNTVceDY1XDQwXHg2NlwxNTFcMTQ1XDE1NFwxNDRceDIwXHg2OVx4NzNcNDBceDcyXDE0NVwxNjFceDc1XHg2OVwxNjJceDY1XHg2NCIsICJceDYzXHg2Y1x4NjFceDczXHg3M1x4NjlceDZlXHg2Nlx4NmZceDJlXDE2Mlx4NjVceDcxXHg3NVwxNTFcMTYyXDE0NVx4NjQiID0+ICJcMTI0XDE1MFwxNDVceDIwXHg0M1x4NmNceDYxXDE2M1x4NzNcNDBcMTExXDE1NlwxNDZceDZmXDQwXDE0NlwxNTFceDY1XHg2Y1x4NjRceDIwXHg2OVx4NzNcNDBcMTYyXDE0NVx4NzFcMTY1XDE1MVx4NzJcMTQ1XDE0NCIsICJceDczXDE2NFwxNDFceDcyXDE2NFx4MmVcMTYyXDE0NVwxNjFcMTY1XHg2OVwxNjJcMTQ1XHg2NCIgPT4gIlwxMjRcMTUwXHg2NVx4MjBcMTA2XHg3MlwxNTdcMTU1XDQwXDE0Nlx4NjlcMTQ1XHg2Y1wxNDRceDIwXDE1MVwxNjNceDIwXHg3MlwxNDVceDcxXHg3NVx4NjlcMTYyXDE0NVx4NjQiLCAiXDE0NVwxNTZcMTQ0XHgyZVx4NzJcMTQ1XHg3MVwxNjVceDY5XHg3Mlx4NjVcMTQ0IiA9PiAiXHg1NFwxNTBcMTQ1XHgyMFwxMjRceDZmXHgyMFwxNDZcMTUxXDE0NVwxNTRcMTQ0XHgyMFx4NjlcMTYzXDQwXHg3MlwxNDVcMTYxXHg3NVx4NjlcMTYyXHg2NVx4NjQiLCAiXDE2Mlx4NjVceDcxXDE2NVwxNTFceDcyXHg2NVx4NjRcMTM3XDE2N1wxNTFcMTY0XDE1MFx4NmZceDc1XHg3NFx4NWZceDYxXHg2Y1wxNTQiID0+ICJceDQxXHg3NFw0MFwxNTRceDY1XDE0MVwxNjNcMTY0XDQwXDE1N1x4NmVcMTQ1XHgyMFx4NmZcMTQ2XDQwXHg3NFx4NjhceDY1XHgyMFx4NjRcMTQxXDE3MVx4NzNcNDBcNTBceDZkXDU0XHgyMFx4NzRceDJjXHgyMFwxNjdcNTRcNDBceDc0XHg2OFw1NFw0MFwxNDZceDJjXHgyMFwxNjNcMTQxXDE2NFw1NFw0MFx4NzNceDI5XDQwXHg2ZFwxNjVceDczXDE2NFx4MjBcMTUwXHg2MVx4NzZceDY1XDQwXDE0MVx4MjBcMTY2XDE0MVx4NmNcMTY1XHg2NVw1NiIpKTsgaWYgKCR2YWxpZGF0ZWQtPmZhaWxzKCkpIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjVcMTYyXHg3Mlx4NmZceDcyXHg3MyIgPT4gJHZhbGlkYXRlZC0+ZXJyb3JzKCktPmZpcnN0KCkpKTsgfSBlbHNlIHsgaWYgKCRyZXF1ZXN0LT5tID09ICcnKSB7ICRtID0gIlwxNDZcMTQxXDE1NFx4NzNcMTQ1IjsgfSBlbHNlIHsgJG0gPSAkcmVxdWVzdC0+bTsgfSBpZiAoJHJlcXVlc3QtPnQgPT0gJycpIHsgJHQgPSAiXDE0Nlx4NjFcMTU0XHg3M1x4NjUiOyB9IGVsc2UgeyAkdCA9ICRyZXF1ZXN0LT50OyB9IGlmICgkcmVxdWVzdC0+dyA9PSAnJykgeyAkdyA9ICJceDY2XHg2MVx4NmNcMTYzXDE0NSI7IH0gZWxzZSB7ICR3ID0gJHJlcXVlc3QtPnc7IH0gaWYgKCRyZXF1ZXN0LT50aCA9PSAnJykgeyAkdGggPSAiXHg2Nlx4NjFceDZjXDE2M1wxNDUiOyB9IGVsc2UgeyAkdGggPSAkcmVxdWVzdC0+dGg7IH0gaWYgKCRyZXF1ZXN0LT5mID09ICcnKSB7ICRmID0gIlwxNDZceDYxXDE1NFwxNjNcMTQ1IjsgfSBlbHNlIHsgJGYgPSAkcmVxdWVzdC0+ZjsgfSBpZiAoJHJlcXVlc3QtPnNhdCA9PSAnJykgeyAkc2F0ID0gIlwxNDZceDYxXHg2Y1x4NzNceDY1IjsgfSBlbHNlIHsgJHNhdCA9ICRyZXF1ZXN0LT5zYXQ7IH0gaWYgKCRyZXF1ZXN0LT5zID09ICcnKSB7ICRzID0gIlwxNDZcMTQxXDE1NFwxNjNceDY1IjsgfSBlbHNlIHsgJHMgPSAkcmVxdWVzdC0+czsgfSAkcmVmX2lkID0gc3RyOjpyYW5kb20oNDApOyAkTmV3Q2xhc3MgPSBuZXcgQ2xhc3NlcygpOyAkTmV3Q2xhc3MtPmNsYXNzbmFtZSA9ICRyZXF1ZXN0LT5jbGFzc25hbWU7ICROZXdDbGFzcy0+Y2xhc3NpbmZvID0gJHJlcXVlc3QtPmNsYXNzaW5mbzsgJE5ld0NsYXNzLT5tID0gJG07ICROZXdDbGFzcy0+dCA9ICR0OyAkTmV3Q2xhc3MtPncgPSAkdzsgJE5ld0NsYXNzLT50aCA9ICR0aDsgJE5ld0NsYXNzLT5mID0gJGY7ICROZXdDbGFzcy0+c2F0ID0gJHNhdDsgJE5ld0NsYXNzLT5zID0gJHM7ICROZXdDbGFzcy0+c2NoZWR1bGVfaWQgPSAkcmVmX2lkOyAkTmV3Q2xhc3MtPm93bmVyX2lkID0gU2Vzc2lvbjo6Z2V0KCJcMTY1XDE2M1x4NjVcMTYyXDE1NlwxNDFceDZkXDE0NSIpOyAkTmV3Q2xhc3MtPmNyZWF0ZWRfYnkgPSBTZXNzaW9uOjpnZXQoIlwxNTZcMTQxXDE1NVwxNDUiKTsgJE5ld0NsYXNzLT5zdGFydCA9ICRyZXF1ZXN0LT5zdGFydDsgJE5ld0NsYXNzLT5lbmQgPSAkcmVxdWVzdC0+ZW5kOyAkTmV3Q2xhc3MtPnN0YXR1cyA9ICcnOyAkTmV3Q2xhc3MtPnNhdmUoKTsgaWYgKCRyZXF1ZXN0LT5tICE9ICcnKSB7ICROZXdTY2hlZHVsZSA9IG5ldyB3ZWVrRGF5cygpOyAkTmV3U2NoZWR1bGUtPmNsYXNzX2lkID0gJHJlZl9pZDsgJE5ld1NjaGVkdWxlLT5kYXkgPSAiXDExNVx4NmZcMTU2XDE0NFwxNDFceDc5IjsgJE5ld1NjaGVkdWxlLT5zdGFydCA9ICRyZXF1ZXN0LT5zdGFydDsgJE5ld1NjaGVkdWxlLT5lbmQgPSAkcmVxdWVzdC0+ZW5kOyAkTmV3U2NoZWR1bGUtPnNhdmUoKTsgfSBpZiAoJHJlcXVlc3QtPnQgIT0gJycpIHsgJE5ld1NjaGVkdWxlID0gbmV3IHdlZWtEYXlzKCk7ICROZXdTY2hlZHVsZS0+Y2xhc3NfaWQgPSAkcmVmX2lkOyAkTmV3U2NoZWR1bGUtPmRheSA9ICJceDU0XHg3NVwxNDVceDczXHg2NFwxNDFcMTcxIjsgJE5ld1NjaGVkdWxlLT5zdGFydCA9ICRyZXF1ZXN0LT5zdGFydDsgJE5ld1NjaGVkdWxlLT5lbmQgPSAkcmVxdWVzdC0+ZW5kOyAkTmV3U2NoZWR1bGUtPnNhdmUoKTsgfSBpZiAoJHJlcXVlc3QtPncgIT0gJycpIHsgJE5ld1NjaGVkdWxlID0gbmV3IHdlZWtEYXlzKCk7ICROZXdTY2hlZHVsZS0+Y2xhc3NfaWQgPSAkcmVmX2lkOyAkTmV3U2NoZWR1bGUtPmRheSA9ICJceDU3XHg2NVwxNDRcMTU2XDE0NVx4NzNcMTQ0XDE0MVx4NzkiOyAkTmV3U2NoZWR1bGUtPnN0YXJ0ID0gJHJlcXVlc3QtPnN0YXJ0OyAkTmV3U2NoZWR1bGUtPmVuZCA9ICRyZXF1ZXN0LT5lbmQ7ICROZXdTY2hlZHVsZS0+c2F2ZSgpOyB9IGlmICgkcmVxdWVzdC0+dGggIT0gJycpIHsgJE5ld1NjaGVkdWxlID0gbmV3IHdlZWtEYXlzKCk7ICROZXdTY2hlZHVsZS0+Y2xhc3NfaWQgPSAkcmVmX2lkOyAkTmV3U2NoZWR1bGUtPmRheSA9ICJcMTI0XHg2OFwxNjVceDcyXHg3M1x4NjRceDYxXHg3OSI7ICROZXdTY2hlZHVsZS0+c3RhcnQgPSAkcmVxdWVzdC0+c3RhcnQ7ICROZXdTY2hlZHVsZS0+ZW5kID0gJHJlcXVlc3QtPmVuZDsgJE5ld1NjaGVkdWxlLT5zYXZlKCk7IH0gaWYgKCRyZXF1ZXN0LT5mICE9ICcnKSB7ICROZXdTY2hlZHVsZSA9IG5ldyB3ZWVrRGF5cygpOyAkTmV3U2NoZWR1bGUtPmNsYXNzX2lkID0gJHJlZl9pZDsgJE5ld1NjaGVkdWxlLT5kYXkgPSAiXHg0Nlx4NzJceDY5XDE0NFx4NjFceDc5IjsgJE5ld1NjaGVkdWxlLT5zdGFydCA9ICRyZXF1ZXN0LT5zdGFydDsgJE5ld1NjaGVkdWxlLT5lbmQgPSAkcmVxdWVzdC0+ZW5kOyAkTmV3U2NoZWR1bGUtPnNhdmUoKTsgfSBpZiAoJHJlcXVlc3QtPnNhdCAhPSAnJykgeyAkTmV3U2NoZWR1bGUgPSBuZXcgd2Vla0RheXMoKTsgJE5ld1NjaGVkdWxlLT5jbGFzc19pZCA9ICRyZWZfaWQ7ICROZXdTY2hlZHVsZS0+ZGF5ID0gIlx4NTNcMTQxXDE2NFx4NzVcMTYyXDE0NFx4NjFceDc5IjsgJE5ld1NjaGVkdWxlLT5zdGFydCA9ICRyZXF1ZXN0LT5zdGFydDsgJE5ld1NjaGVkdWxlLT5lbmQgPSAkcmVxdWVzdC0+ZW5kOyAkTmV3U2NoZWR1bGUtPnNhdmUoKTsgfSBpZiAoJHJlcXVlc3QtPnMgIT0gJycpIHsgJE5ld1NjaGVkdWxlID0gbmV3IHdlZWtEYXlzKCk7ICROZXdTY2hlZHVsZS0+Y2xhc3NfaWQgPSAkcmVmX2lkOyAkTmV3U2NoZWR1bGUtPmRheSA9ICJcMTIzXDE2NVwxNTZcMTQ0XHg2MVx4NzkiOyAkTmV3U2NoZWR1bGUtPnN0YXJ0ID0gJHJlcXVlc3QtPnN0YXJ0OyAkTmV3U2NoZWR1bGUtPmVuZCA9ICRyZXF1ZXN0LT5lbmQ7ICROZXdTY2hlZHVsZS0+c2F2ZSgpOyB9IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY5XHg2ZVx4NzNcMTQ1XHg3MlwxNjRceDY1XHg2NCIgPT4gIlx4NGVceDY1XHg3N1x4MjBceDQzXHg2Y1x4NjFceDczXHg3M1w0MFwxNTBceDYxXDE2M1x4MjBcMTQyXDE0NVwxNDVceDZlXHgyMFwxNDNceDcyXHg2NVwxNDFceDc0XDE0NVwxNDRceDJlIikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIGFzc2lnblN0dWRlbnQoUmVxdWVzdCAkcmVxdWVzdCkgeyAkZGF0YSA9ICRyZXF1ZXN0LT5pbnB1dCgiXHg2ZFx4NjVcMTYyXHg2N1wxNDVceDY0XHg0M1x4NjhceDY1XDE0M1x4NmJceDYyXDE1N1wxNzBceDY1XDE2MyIpOyAkcmVzcG9uc2VzID0gYXJyYXkoKTsgJHZhbGlkYXRlZCA9IFZhbGlkYXRvcjo6bWFrZSgkcmVxdWVzdC0+YWxsKCksIGFycmF5KCJcMTAzXDE1NFx4NjFcMTYzXDE2M1wxNTZceDYxXDE1NVwxNDUiID0+ICJceDcyXHg2NVwxNjFcMTY1XDE1MVx4NzJcMTQ1XDE0NCIsICJceDZkXDE0NVwxNjJcMTQ3XDE0NVwxNDRceDQzXHg2OFx4NjVceDYzXDE1M1x4NjJceDZmXDE3MFwxNDVceDczIiA9PiAiXDE2MlwxNDVceDcxXHg3NVwxNTFcMTYyXHg2NVx4NjRcMTc0XDE0MVwxNjJceDcyXDE0MVwxNzFceDdjXDE1NVx4NjlcMTU2XDcyXHgzMSIpLCBhcnJheSgiXDEwM1x4NmNceDYxXDE2M1wxNjNcMTU2XHg2MVx4NmRceDY1XDU2XHg3Mlx4NjVcMTYxXHg3NVx4NjlceDcyXDE0NVwxNDQiID0+ICJcMTI0XDE1MFwxNDVceDIwXHg0M1wxNTRcMTQxXHg3M1wxNjNceDIwXDExNlx4NjFceDZkXHg2NVx4MjBceDY2XHg2OVx4NjVcMTU0XDE0NFw0MFx4NjlceDczXDQwXHg3MlwxNDVcMTYxXDE2NVx4NjlceDcyXDE0NVwxNDQiLCAiXHg2ZFwxNDVceDcyXHg2N1x4NjVceDY0XHg0M1wxNTBceDY1XDE0M1wxNTNceDYyXDE1N1wxNzBcMTQ1XDE2M1w1Nlx4NzJcMTQ1XDE2MVx4NzVcMTUxXHg3Mlx4NjVcMTQ0IiA9PiAiXHg0MVx4NzRcNDBceDZjXDE0NVx4NjFcMTYzXHg3NFw0MFx4NmZcMTU2XHg2NVw0MFwxNDNcMTUwXHg2NVwxNDNceDZiXHg2MlwxNTdceDc4XDQwXDE1NVwxNjVceDczXHg3NFx4MjBceDYyXHg2NVx4MjBceDYzXHg2OFx4NjVcMTQzXHg2YlwxNDVcMTQ0XHgyZSIpKTsgaWYgKCR2YWxpZGF0ZWQtPmZhaWxzKCkpIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjVcMTYyXHg3MlwxNTdceDcyXDE2MyIgPT4gJHZhbGlkYXRlZC0+ZXJyb3JzKCktPmZpcnN0KCkpKTsgfSBlbHNlIHsgZm9yZWFjaCAoJGRhdGEgYXMgJGFjY291bnRfaWQpIHsgJGNoZWNrX2Fzc2lnbmVzcyA9IERCOjp0YWJsZSgiXHg2M1x4NmNcMTQxXDE2M1x4NzNceDY1XHg3M1x4NWZcMTQxXDE2M1x4NjlceDY3XHg2ZVwxNjMiKS0+d2hlcmUoIlx4NjNceDZjXDE0MVwxNjNcMTYzXDEzN1x4NjlceDY0IiwgJHJlcXVlc3QtPkNsYXNzbmFtZSktPndoZXJlKCJcMTY1XHg3M1x4NjVcMTYyXDEzN1wxNTFcMTQ0IiwgJGFjY291bnRfaWQpLT5maXJzdCgpOyBpZiAoJGNoZWNrX2Fzc2lnbmVzcykgeyAkcmVzcG9uc2VzW10gPSBhcnJheSgiXDE0Nlx4NmZceDc1XHg2ZVwxNDQiID0+ICJcMTAxXHg2M1wxNDNcMTU3XDE2NVwxNTZcMTY0XDQwXHg2MVx4NmNcMTYyXDE0NVwxNDFceDY0XDE3MVw0MFx4NjVceDZlXDE2MlwxNTdcMTU0XHg2Y1x4NjVceDY0XDU2Iik7IH0gZWxzZSB7ICRhc3NpZ24gPSBuZXcgQ2xhc3Nlc0FzaWduKCk7ICRhc3NpZ24tPnVzZXJfaWQgPSAkYWNjb3VudF9pZDsgJGFzc2lnbi0+Y2xhc3NfaWQgPSAkcmVxdWVzdC0+Q2xhc3NuYW1lOyAkYXNzaWduLT5jcmVhdGVkX2J5ID0gU2Vzc2lvbjo6Z2V0KCJceDZlXHg2MVx4NmRceDY1Iik7ICRhc3NpZ24tPnNhdmUoKTsgJG5vdGlmeSA9IG5ldyBOb3RpZmljYXRpb25zKCk7ICRjaGVja19jbGFzcyA9IERCOjp0YWJsZSgiXHg2M1x4NmNceDYxXHg3M1wxNjNceDY1XDE2MyIpLT53aGVyZSgiXDE1MVx4NjQiLCAkcmVxdWVzdC0+Q2xhc3NuYW1lKS0+Zmlyc3QoKTsgJG5vdGlmeS0+bm90aWZpY2F0aW9uX3RleHQgPSAiXHg1OVx4NmZceDc1XDQwXHg2OFx4NjFceDc2XHg2NVx4MjBcMTQyXHg2NVx4NjVceDZlXDQwXDEwNVwxNTZceDcyXDE1N1wxNTRcMTU0XDE0NVwxNDRcNDBcMTY0XDE1N1w0MHskY2hlY2tfY2xhc3MtPmNsYXNzbmFtZX0iOyAkbm90aWZ5LT51c2VyX2lkX25vdGlmeSA9ICRhY2NvdW50X2lkOyAkbm90aWZ5LT5zdGF0dXMgPSAiXDE2NVx4NmVceDcyXHg2NVwxNDFceDY0IjsgJG5vdGlmeS0+c2F2ZSgpOyAkcmVzcG9uc2VzW10gPSBhcnJheSgiXDE2M1wxNjVceDYzXDE0M1x4NjVcMTYzXHg3MyIgPT4gIlwxMDVcMTU2XHg3Mlx4NmZceDZjXHg2Y1wxNDVcMTQ0XHgyMFx4NzNceDc1XDE0M1x4NjNceDY1XDE2M1wxNjNceDY2XHg3NVx4NmNceDZjXDE3MVw1NiIpOyB9IH0gfSByZXR1cm4gcmVzcG9uc2UoKS0+anNvbigkcmVzcG9uc2VzKTsgfSBwdWJsaWMgZnVuY3Rpb24gbmV3YXBwKFJlcXVlc3QgJHJlcXVlc3QpIHsgJHZhbGlkYXRlZCA9IFZhbGlkYXRvcjo6bWFrZSgkcmVxdWVzdC0+YWxsKCksIGFycmF5KCJcMTA1XHg3OFwxNjBceDY1XDE2MlwxNTFceDZkXHg2NVx4NmVcMTY0XHg0OVx4NDQiID0+ICJceDcyXHg2NVwxNjFceDc1XDE1MVwxNjJceDY1XHg2NCIsICJceDYxXDE2MFwxNjBceDZlXDE0MVwxNTVceDY1IiA9PiAiXHg3Mlx4NjVcMTYxXHg3NVwxNTFceDcyXDE0NVwxNDQiLCAiXDE0MVx4NjNceDYzXDE0NVwxNjNcMTYzXHg1Zlx4NmNceDY5XDE1NlwxNTMiID0+ICJcMTYyXHg2NVx4NzFceDc1XHg2OVwxNjJceDY1XHg2NCIsICJcMTQxXHg3MFx4NzBceDYxXHg2M1x4NjNceDY1XDE2M1wxNjMiID0+ICJceDcyXDE0NVx4NzFcMTY1XHg2OVx4NzJcMTQ1XDE0NCIpLCBhcnJheSgiXDE0MVwxNjBceDcwXDE1NlwxNDFcMTU1XDE0NVw1NlwxNjJceDY1XDE2MVwxNjVceDY5XHg3MlwxNDVcMTQ0IiA9PiAiXHg1NFwxNTBceDY1XDQwXHg0MVx4NzBceDcwXHgyMFwxMTZcMTQxXHg2ZFwxNDVceDIwXDE0Nlx4NjlcMTQ1XDE1NFx4NjRcNDBcMTUxXDE2M1x4MjBcMTYyXHg2NVwxNjFceDc1XDE1MVwxNjJcMTQ1XHg2NCIsICJcMTQxXDE2MFwxNjBceDYxXDE0M1wxNDNceDY1XHg3M1wxNjNcNTZcMTYyXDE0NVx4NzFceDc1XDE1MVwxNjJcMTQ1XHg2NCIgPT4gIlx4NTRceDY4XHg2NVx4MjBcMTAxXHg3MFx4NzBceDIwXDEwMVwxNDNceDYzXDE0NVx4NzNceDczXHgyMFx4NjZcMTUxXDE0NVwxNTRceDY0XDQwXDE1MVx4NzNcNDBceDcyXDE0NVx4NzFcMTY1XDE1MVwxNjJcMTQ1XDE0NCIsICJceDYxXDE0M1x4NjNceDY1XHg3M1wxNjNcMTM3XDE1NFwxNTFceDZlXHg2Ylw1Nlx4NzJceDY1XDE2MVx4NzVceDY5XHg3Mlx4NjVceDY0IiA9PiAiXHg1NFx4NjhcMTQ1XHgyMFx4NDFceDYzXHg2M1x4NjVcMTYzXHg3M1w0MFx4NGNceDY5XHg2ZVwxNTNceDIwXHg2Nlx4NjlceDY1XHg2Y1wxNDRcNDBceDY5XHg3M1x4MjBcMTYyXHg2NVwxNjFceDc1XDE1MVwxNjJcMTQ1XHg2NCIsICJcMTA1XHg3OFx4NzBcMTQ1XHg3MlwxNTFcMTU1XHg2NVwxNTZceDc0XDExMVx4NDRcNTZceDcyXDE0NVx4NzFcMTY1XHg2OVx4NzJceDY1XHg2NCIgPT4gIlx4NTRceDY4XHg2NVx4MjBceDQ1XDE3MFwxNjBcMTQ1XHg3Mlx4NjlceDZkXDE0NVwxNTZceDc0XDQwXHg0ZVwxNDFcMTU1XDE0NVw0MFx4NjZcMTUxXDE0NVx4NmNceDY0XHgyMFx4NjlcMTYzXHgyMFwxNjJceDY1XDE2MVx4NzVceDY5XDE2MlwxNDVcMTQ0IikpOyBpZiAoJHZhbGlkYXRlZC0+ZmFpbHMoKSkgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg2NVx4NzJceDcyXHg2ZlwxNjJcMTYzIiA9PiAkdmFsaWRhdGVkLT5lcnJvcnMoKS0+Zmlyc3QoKSkpOyB9IGVsc2UgeyAkbmV3YXBwID0gbmV3IFNtYXJ0bGFiQXBwcygpOyAkbmV3YXBwLT5hcHBfbmFtZSA9ICRyZXF1ZXN0LT5hcHBuYW1lOyAkbmV3YXBwLT5hcHBfYWNjZXNzID0gJHJlcXVlc3QtPmFwcGFjY2VzczsgJG5ld2FwcC0+Y2xhc3NFeF9pZCA9ICRyZXF1ZXN0LT5FeHBlcmltZW50SUQ7ICRuZXdhcHAtPmFjY2Vzc19saW5rID0gJHJlcXVlc3QtPmFjY2Vzc19saW5rOyAkbmV3YXBwLT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY5XHg2ZVx4NzNceDY1XHg3MlwxNjRceDY1XHg2NCIgPT4gIlx4NDFceDcwXDE2MFx4MjBceDY4XDE0MVwxNjNcNDBcMTQyXHg2NVwxNDVcMTU2XDQwXDE2M1x4NzVceDYyXDE1NVwxNTFcMTY0XDE2NFwxNDVcMTQ0XHgyMFx4NzNcMTY1XHg2M1wxNDNceDY1XDE2M1x4NzNceDY2XHg3NVx4NmNceDZjXHg3OVw1NiIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBTY2hlZHVsZXNSZXF1ZXN0ZWRHZXQoKSB7ICRTY2hlZHVsZURhdGEgPSBEQjo6dGFibGUoIlx4NzNceDYzXHg2OFx4NjVcMTQ0XHg3NVwxNTRceDY1XDEzN1wxNDFcMTY1XHg3NFx4NjhceDczIiktPnNlbGVjdCgiXDE2NVx4NzNcMTQ1XDE2MlwxNjNceDJlXDUyIiwgIlwxNjNcMTQzXHg2OFwxNDVceDY0XHg3NVwxNTRceDY1XDEzN1x4NjFcMTY1XDE2NFwxNTBcMTYzXDU2XHgyYSIpLT5qb2luKCJcMTY1XHg3M1wxNDVcMTYyXDE2MyIsICJceDczXHg2M1x4NjhcMTQ1XDE0NFwxNjVceDZjXDE0NVx4NWZcMTQxXHg3NVx4NzRcMTUwXHg3M1w1NlwxNjVceDczXHg2NVx4NzJcMTExXDEwNCIsICJcNzUiLCAiXHg3NVx4NzNceDY1XDE2MlwxNjNcNTZceDY5XDE0NCIpLT53aGVyZSgiXHg3M1x4NjNceDY4XDE0NVwxNDRcMTY1XHg2Y1x4NjVceDVmXHg2MVwxNjVceDc0XDE1MFx4NzNceDJlXHg3M1x4NzRceDYxXHg3NFx4NzVceDczIiwgIlwxNDFcMTYwXHg3MFwxNjJceDZmXDE2NlwxNDFceDZjIiktPmdldCgpOyByZXR1cm4gRGF0YVRhYmxlczo6b2YoJFNjaGVkdWxlRGF0YSktPmFkZEluZGV4Q29sdW1uKCktPmFkZENvbHVtbigiXDE0MVwxNDNceDc0XHg2OVwxNTdceDZlIiwgZnVuY3Rpb24gKCRyb3cpIHsgJGJ0biA9ICJcNzRceDY0XHg2OVx4NzZceDIwXDE0M1x4NmNcMTQxXHg3M1wxNjNcNzVceDIyXHg2Mlx4NzRceDZlXHgyZFx4NjdcMTYyXDE1N1x4NzVcMTYwXDQwXDE0NFx4NzJcMTU3XHg3MFx4NmNcMTQ1XHg2Nlx4NzRcNDJcNzZceGFceDIwXDQwXDQwXDQwXHgyMFx4MjBceDIwXHgyMFw0MFw0MFw0MFw0MFx4MjBceDIwXHgyMFw0MFw3NFwxNDJcMTY1XDE2NFwxNjRcMTU3XHg2ZVx4MjBcMTY0XHg3OVx4NzBcMTQ1XHgzZFw0MlwxNDJcMTY1XHg3NFwxNjRceDZmXDE1Nlw0Mlw0MFwxNDNcMTU0XDE0MVx4NzNceDczXHgzZFx4MjJcMTQyXDE2NFx4NmVceDIwXDE0MlwxNjRceDZlXHgyZFwxNjBceDcyXHg2OVx4NmRceDYxXHg3MlwxNzFcNDBceDY0XHg3Mlx4NmZceDcwXHg2NFx4NmZceDc3XDE1Nlx4MmRcMTY0XDE1N1x4NjdcMTQ3XDE1NFx4NjVcNDJceDIwXDE0NFx4NjFcMTY0XDE0MVx4MmRcMTY0XHg2ZlwxNDdcMTQ3XDE1NFwxNDVceDNkXDQyXDE0NFwxNjJceDZmXDE2MFwxNDRcMTU3XDE2N1wxNTZceDIyXHgyMFwxNDFcMTYyXHg2OVwxNDFceDJkXDE1MFwxNDFceDczXHg3MFwxNTdcMTYwXHg3NVx4NzBceDNkXDQyXDE2NFwxNjJcMTY1XHg2NVw0Mlw0MFwxNDFceDcyXDE1MVx4NjFcNTVceDY1XDE3MFx4NzBcMTQxXDE1NlwxNDRceDY1XDE0NFw3NVx4MjJceDY2XHg2MVx4NmNceDczXDE0NVw0Mlx4M2VceGFcNDBceDIwXDQwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXDQwXDQwXHgyMFw0MFw0MFx4MjBcMTIzXHg2NVx4NzRcMTY0XHg2OVx4NmVcMTQ3XDE2M1x4YVw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFx4MjBceDIwXDQwXHgyMFw0MFw0MFw0MFx4MjBcNDBcNzRceDJmXHg2MlwxNjVceDc0XHg3NFwxNTdceDZlXDc2XHhhXDQwXHgyMFw0MFx4MjBcNDBcNDBcNDBcNDBcNDBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFx4MjBcNzRcMTQ0XHg2OVx4NzZceDIwXHg2M1wxNTRcMTQxXHg3M1x4NzNceDNkXDQyXDE0NFx4NzJcMTU3XDE2MFwxNDRceDZmXDE2N1x4NmVcNTVceDZkXDE0NVx4NmVceDc1XHgyMFwxNDRcMTYyXHg2ZlwxNjBcMTU0XDE0NVwxNDZcMTY0XDQyXHgzZVx4YVx4MjBcNDBcNDBcNDBcNDBcNDBcNDBceDIwXDQwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFx4M2NcMTQxXHgyMFx4NjNcMTU0XDE0MVwxNjNceDczXDc1XDQyXDE0NFwxNjJceDZmXHg3MFx4NjRcMTU3XHg3N1x4NmVceDJkXDE1MVx4NzRceDY1XHg2ZFw0MFwxNDFceDcwXDE2MFwxNjJceDZmXHg3NlwxNDVcNDJceDIwXDE1MFwxNjJceDY1XHg2Nlw3NVw0Mlx4MjNceDIyXHgyMFx4NjRceDYxXDE2NFwxNDFceDJkXHg2OVwxNDRcNzVcNDIiIC4gJHJvdy0+aWQgLiAiXDQyXHgzZVwxMDFceDcwXDE2MFwxNjJceDZmXHg3NlwxNDVceDIwXDEyM1wxNDNceDY4XDE0NVx4NjRcMTY1XDE1NFwxNDVcNzRceDJmXHg2MVx4M2VceGFcNDBcNDBcNDBceDIwXHgyMFx4MjBcNDBcNDBcNDBceDIwXHgyMFw0MFx4MjBceDIwXHgyMFw0MFx4MjBceDIwXHgzY1wxNDFcNDBcMTQzXDE1NFx4NjFceDczXHg3M1x4M2RceDIyXDE0NFx4NzJcMTU3XDE2MFwxNDRcMTU3XHg3N1wxNTZcNTVcMTUxXHg3NFwxNDVcMTU1XHgyMFx4NjRcMTQ1XDE1NFwxNDVcMTY0XHg2NVwxMDFcMTIzXDEwMlx4NzRcMTU2XDQyXHgyMFwxNTBceDcyXDE0NVx4NjZcNzVcNDJceDIzXDQyXDQwXDE0NFx4NjFceDc0XDE0MVw1NVx4NjlceDY0XDc1XHgyMiIgLiAkcm93LT5pZCAuICJcNDJceDNlXHg0NFwxNTFceDczXHg2MVwxNjBceDcwXDE2Mlx4NmZcMTY2XHg2NVx4MjBcMTIzXDE0M1wxNTBcMTQ1XDE0NFx4NzVcMTU0XDE0NVx4M2NcNTdcMTQxXHgzZVwxMlx4MjBcNDBceDIwXDQwXHgyMFw0MFw0MFw0MFw0MFw0MFx4MjBceDIwXDQwXDQwXDQwXHgyMFx4M2NcNTdceDY0XHg2OVwxNjZceDNlXHhhXHgyMFw0MFx4MjBcNDBceDIwXHgyMFw0MFx4MjBcNDBceDIwXHgyMFx4MjBcNDBcNDBcNzRceDJmXHg2NFwxNTFcMTY2XHgzZSI7IHJldHVybiAkYnRuOyB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXHg2MVx4NjNceDc0XDE1MVwxNTdcMTU2IikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBBcnRpY2xlR2V0KFJlcXVlc3QgJHJlcXVlc3QpIHsgJEFydGljbGVEYXRhID0gREI6OnRhYmxlKCJcMTY1XHg3MFwxNDRceDYxXDE2NFx4NjVceDczXHg1ZlwxNjRceDYxXHg2MlwxNTRceDY1XHg3MyIpLT5nZXQoKTsgcmV0dXJuIERhdGFUYWJsZXM6Om9mKCRBcnRpY2xlRGF0YSktPmFkZEluZGV4Q29sdW1uKCktPmFkZENvbHVtbigiXDE0MVwxNDNceDc0XHg2OVwxNTdcMTU2IiwgZnVuY3Rpb24gKCRyb3cpIHsgJGJ0biA9ICJceDNjXHg2MlwxNjVcMTY0XHg3NFwxNTdcMTU2XHgyMFx4NjNceDZjXDE0MVx4NzNcMTYzXDc1XDQyXDE0MlwxNjRceDZlXHgyMFw0MFx4NjJcMTY0XDE1Nlx4MmRceDczXHg2ZFw0MFx4NjRcMTQ1XHg2Y1wxNDVceDc0XHg2NVwxMDJceDc0XDE1Nlw0MFwxNDFceDcwXHg3MFx4NzJceDZmXHg3NlwxNDVcNDJcNDBceDczXHg3NFx4NzlceDZjXDE0NVx4M2RcNDJcMTQyXDE0MVwxNDNcMTUzXDE0N1wxNjJcMTU3XHg3NVwxNTZcMTQ0XHgyZFwxNDNceDZmXHg2Y1x4NmZceDcyXHgzYVx4MjBcMTQ3XDE1N1x4NmNcMTQ0XDczXHgyMFwxNDNcMTU3XHg2Y1x4NmZceDcyXDcyXDQwXHg3N1x4NjhceDY5XHg3NFwxNDVcNzNceDIyXDQwXHg2NFwxNDFcMTY0XHg2MVx4MmRceDY5XHg2NFx4M2RceDIyIiAuICRyb3ctPmlkIC4gIlw0Mlw3Nlx4NDVcMTQ0XHg2OVwxNjRcNzRceDJmXDE0Mlx4NzVcMTY0XDE2NFwxNTdceDZlXHgzZSI7ICRidG4gLj0gIlx4MjBcNzRcMTQyXDE2NVx4NzRcMTY0XHg2Zlx4NmVceDIwXHg2M1x4NmNceDYxXDE2M1x4NzNceDNkXHgyMlwxNDJcMTY0XDE1Nlw0MFwxNDJcMTY0XHg2ZVw1NVwxNjBcMTYyXDE1MVwxNTVcMTQxXDE2MlwxNzFcNDBcMTQyXDE2NFwxNTZcNTVcMTYzXHg2ZFw0MFx4NjRcMTQ1XHg2Y1wxNDVcMTY0XHg2NVwxMDFcMTIzXDEwMlx4NzRceDZlXHgyMlw0MFw0MFw0MFwxNDRcMTQxXDE2NFx4NjFceDJkXDE1MVwxNDRcNzVceDIyIiAuICRyb3ctPmlkIC4gIlw0Mlx4M2VceDQ0XDE0NVx4NmNcMTQ1XHg3NFx4NjVcNzRceDJmXHg2Mlx4NzVceDc0XHg3NFx4NmZcMTU2XHgzZSI7IHJldHVybiAkYnRuOyB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXDE0MVwxNDNcMTY0XDE1MVwxNTdcMTU2IikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBTY2hlZHVsZUFwcm92ZUFjdGlvbihSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRpZCA9ICRyZXF1ZXN0LT5hcHByb3ZlOyAkQXBwcm92ZXVwZGF0ZSA9IFNjaGVkdWxlQXV0aDo6ZmluZCgkaWQpOyAkQXBwcm92ZXVwZGF0ZS0+c3RhdHVzID0gIlwxNjZceDYxXDE1NFx4NjlceDY0IjsgJEFwcHJvdmV1cGRhdGUtPnNhdmUoKTsgJGNoZWNrX2NsYXNzID0gREI6OnRhYmxlKCJcMTYzXHg2M1x4NjhceDY1XDE0NFwxNjVcMTU0XHg2NVwxMzdceDYxXDE2NVwxNjRcMTUwXDE2MyIpLT53aGVyZSgiXHg2OVwxNDQiLCAkaWQpLT5maXJzdCgpOyAkbm90aWZ5ID0gbmV3IE5vdGlmaWNhdGlvbnMoKTsgJG5vdGlmeS0+bm90aWZpY2F0aW9uX3RleHQgPSAiXDEzMVx4NmZceDc1XDE2Mlw0MFx4NzJceDY1XHg3MVwxNjVcMTQ1XDE2M1wxNjRceDY1XDE0NFw0MFwxNjNcMTQzXHg2OFwxNDVceDY0XHg3NVwxNTRcMTQ1XDQwXDE0NlwxNTdceDcyXHgyMHskY2hlY2tfY2xhc3MtPmxhYm5hbWV9XDQwXDE1MFx4NjFceDczXHgyMFwxNDJceDY1XDE0NVx4NmVceDIwXHg2MVwxNjBceDcwXHg3Mlx4NmZcMTY2XHg2NVwxNDQiOyAkbm90aWZ5LT51c2VyX2lkX25vdGlmeSA9ICRjaGVja19jbGFzcy0+dXNlcklEOyAkbm90aWZ5LT5zdGF0dXMgPSAiXHg3NVwxNTZcMTYyXDE0NVwxNDFceDY0IjsgJG5vdGlmeS0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg2MVwxNjBceDcwXHg3MlwxNTdceDc2XHg2NVx4NjQiID0+ICJcMTIzXDE0M1wxNTBceDY1XDE0NFx4NzVcMTU0XDE0NVw0MFwxNTBceDYxXDE2M1w0MFx4NjJcMTQ1XHg2NVx4NmVceDIwXHg2MVx4NzBceDcwXDE2Mlx4NmZcMTY2XHg2NVx4NjRceDIwXDE2M1x4NzVcMTQzXHg2M1wxNDVcMTYzXDE2M1wxNDZcMTY1XHg2Y1wxNTRcMTcxXHgyZSIpKTsgfSBwdWJsaWMgZnVuY3Rpb24gRGlzU2NoZWR1bGVBcHJvdmVBY3Rpb24oUmVxdWVzdCAkcmVxdWVzdCkgeyAkaWQgPSAkcmVxdWVzdC0+ZGlzYXBwcm92ZUlEOyAkY2hlY2tfY2xhc3MgPSBEQjo6dGFibGUoIlx4NzNcMTQzXHg2OFx4NjVceDY0XHg3NVx4NmNceDY1XHg1Zlx4NjFcMTY1XDE2NFwxNTBcMTYzIiktPndoZXJlKCJcMTUxXDE0NCIsICRpZCktPmZpcnN0KCk7IFNjaGVkdWxlQXV0aDo6d2hlcmUoIlx4NjlceDY0IiwgJGlkKS0+ZGVsZXRlKCk7ICRub3RpZnkgPSBuZXcgTm90aWZpY2F0aW9ucygpOyAkbm90aWZ5LT5ub3RpZmljYXRpb25fdGV4dCA9ICJcMTMxXHg2ZlwxNjVceDcyXDQwXDE2Mlx4NjVceDcxXDE2NVwxNDVceDczXHg3NFx4NjVceDY0XHgyMFwxNjNceDYzXHg2OFx4NjVcMTQ0XHg3NVwxNTRcMTQ1XDQwXDE0NlwxNTdcMTYyXHgyMHskY2hlY2tfY2xhc3MtPmxhYm5hbWV9XDQwXHg2OFx4NjFcMTYzXHgyMFwxNDJcMTQ1XHg2NVwxNTZcNDBcMTA0XHg2OVx4NzNcMTQxXHg3MFwxNjBceDcyXDE1N1wxNjZcMTQ1XDE0NCI7ICRub3RpZnktPnVzZXJfaWRfbm90aWZ5ID0gJGNoZWNrX2NsYXNzLT51c2VySUQ7ICRub3RpZnktPnN0YXR1cyA9ICJceDc1XDE1NlwxNjJceDY1XHg2MVx4NjQiOyAkbm90aWZ5LT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTQxXHg3MFx4NzBcMTYyXHg2Zlx4NzZceDY1XHg2NCIgPT4gIlx4NTNcMTQzXHg2OFx4NjVcMTQ0XDE2NVwxNTRceDY1XHgyMFx4NjhceDYxXHg3M1w0MFx4NjJceDY1XDE0NVwxNTZceDIwXHg2NFwxNTFceDczXDE0MVx4NzBcMTYwXHg3MlwxNTdcMTY2XDE0NVwxNDRceDIwXHg3M1wxNjVceDYzXHg2M1wxNDVceDczXDE2M1wxNDZceDc1XDE1NFwxNTRcMTcxXDU2IikpOyB9IHB1YmxpYyBmdW5jdGlvbiBpbnNlcnRuZXdVcGRhdGUoUmVxdWVzdCAkcmVxdWVzdCkgeyAkdmFsaWRhdGVkID0gVmFsaWRhdG9yOjptYWtlKCRyZXF1ZXN0LT5hbGwoKSwgYXJyYXkoIlx4NzVcMTYwXDE0NFx4NjFceDc0XHg2NVwxNjRcMTUxXDE2NFwxNTRceDY1IiA9PiAiXHg3Mlx4NjVcMTYxXDE2NVwxNTFcMTYyXDE0NVwxNDQiLCAiXDE0Mlx4NmZceDY0XHg3OSIgPT4gIlx4NzJcMTQ1XHg3MVx4NzVcMTUxXDE2MlwxNDVceDY0IiwgIlx4NzBceDZmXHg3M1x4NzRceDY0XDE0NVx4NzMiID0+ICJceDcyXDE0NVwxNjFcMTY1XHg2OVwxNjJceDY1XDE0NCIsICJcMTY1XHg3MFx4NjRceDYxXHg3NFwxNDVceDcwXDE1MVx4NjMiID0+ICJceDcyXHg2NVx4NzFcMTY1XHg2OVwxNjJcMTQ1XHg2NCIpLCBhcnJheSgiXDE2NVwxNjBceDY0XDE0MVx4NzRcMTQ1XHg3NFx4NjlcMTY0XDE1NFwxNDVceDJlXHg3Mlx4NjVceDcxXDE2NVwxNTFcMTYyXDE0NVwxNDQiID0+ICJceDU0XHg2OFx4NjVceDIwXHg1NFx4NjlcMTY0XDE1NFwxNDVcNDBcMTQ2XHg2OVx4NjVceDZjXDE0NFx4MjBcMTUxXHg3M1x4MjBcMTYyXDE0NVwxNjFcMTY1XHg2OVx4NzJceDY1XHg2NCIsICJcMTQyXDE1N1x4NjRceDc5XDU2XDE2MlwxNDVceDcxXHg3NVwxNTFcMTYyXDE0NVx4NjQiID0+ICJcMTI0XDE1MFx4NjVceDIwXDEwMlwxNTdceDY0XDE3MVw0MFx4NjZceDY5XDE0NVwxNTRcMTQ0XHgyMFx4NjlceDczXDQwXHg3Mlx4NjVcMTYxXHg3NVwxNTFcMTYyXHg2NVwxNDQiLCAiXDE2NVwxNjBceDY0XHg2MVx4NzRceDY1XHg3MFx4NjlcMTQzXHgyZVwxNjJceDY1XDE2MVx4NzVcMTUxXHg3Mlx4NjVceDY0IiA9PiAiXDEyNFx4NjhceDY1XDQwXHg1MFwxNTFceDYzXHg3NFwxNjVcMTYyXDE0NVw0MFx4NjZceDY5XDE0NVx4NmNcMTQ0XHgyMFwxNTFcMTYzXHgyMFx4NzJcMTQ1XDE2MVwxNjVceDY5XDE2MlwxNDVcMTQ0IiwgIlx4NzBcMTU3XHg3M1x4NzRcMTQ0XDE0NVwxNjNcNTZceDcyXHg2NVx4NzFceDc1XDE1MVx4NzJcMTQ1XDE0NCIgPT4gIlwxMjRceDY4XDE0NVx4MjBcMTA0XHg2NVx4NzNcMTQzXDE2MlwxNTFceDcwXDE2NFwxNTFcMTU3XHg2ZVx4MjBceDY2XHg2OVwxNDVceDZjXHg2NFx4MjBcMTUxXHg3M1w0MFx4NzJceDY1XDE2MVwxNjVcMTUxXDE2Mlx4NjVceDY0IikpOyBpZiAoJHZhbGlkYXRlZC0+ZmFpbHMoKSkgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE0NVx4NzJceDcyXDE1N1x4NzJcMTYzIiA9PiAkdmFsaWRhdGVkLT5lcnJvcnMoKS0+Zmlyc3QoKSkpOyB9IGVsc2UgeyBpZiAoJHBpYyA9ICRyZXF1ZXN0LT5maWxlKCJcMTY1XHg3MFwxNDRceDYxXHg3NFwxNDVcMTYwXDE1MVwxNDMiKSkgeyAkZmlsZW5hbWUgPSAkcGljLT5nZXRDbGllbnRPcmlnaW5hbE5hbWUoKTsgaWYgKCRwaWMtPm1vdmUoIlx4NzVcMTYwXHg2NFx4NjFceDc0XHg2NVw1N1x4NzVceDcwXHg2NFx4NjFceDc0XDE0NVx4NTBceDY5XHg2M1x4NzMiLCAkZmlsZW5hbWUpKSB7ICROZXdVcGRhdGUgPSBuZXcgVXBkYXRlc1RhYmxlKCk7ICROZXdVcGRhdGUtPnRpdGxlID0gJHJlcXVlc3QtPnVwZGF0ZXRpdGxlOyAkTmV3VXBkYXRlLT5ib2R5ID0gJHJlcXVlc3QtPmJvZHk7ICROZXdVcGRhdGUtPnVwZGF0ZXBpYyA9ICRmaWxlbmFtZTsgJE5ld1VwZGF0ZS0+ZGVzY3JpcHRpb24gPSAkcmVxdWVzdC0+cG9zdGRlczsgJE5ld1VwZGF0ZS0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg2OVwxNTZcMTYzXDE0NVwxNjJceDc0XDE0NVx4NjQiID0+ICJceDRlXDE0NVx4NzdceDIwXHg1NVx4NzBceDY0XHg2MVwxNjRceDY1XHgyMFx4NTBcMTU3XDE2M1x4NzRcNDBcMTUwXDE0MVx4NzNcNDBceDYyXHg2NVwxNDVcMTU2XDQwXHg2M1wxNjJcMTQ1XHg2MVwxNjRceDY1XHg2NFx4MmUiKSk7IH0gfSB9IH0gcHVibGljIGZ1bmN0aW9uIGluc2VydG5ld0NsYXNzRXgoUmVxdWVzdCAkcmVxdWVzdCkgeyAkdmFsaWRhdGVkID0gVmFsaWRhdG9yOjptYWtlKCRyZXF1ZXN0LT5hbGwoKSwgYXJyYXkoIlwxNDVcMTcwXDExNlx4NjFceDZkXDE0NSIgPT4gIlwxNjJcMTQ1XHg3MVwxNjVcMTUxXHg3Mlx4NjVceDY0IiwgIlwxNDVceDc4XHg2OVwxNDQiID0+ICJceDcyXHg2NVx4NzFceDc1XHg2OVwxNjJceDY1XHg2NCIsICJcMTQ1XDE3MFwxNDZcMTUxXHg2Y1x4NjUiID0+ICJceDcyXDE0NVx4NzFcMTY1XDE1MVwxNjJceDY1XDE0NFwxNzRcMTU1XDE1MVwxNTVcMTQ1XHg3M1x4M2FceDcwXHg2NFx4NjYiKSwgYXJyYXkoIlx4NjVcMTcwXHg0ZVx4NjFcMTU1XDE0NVw1Nlx4NzJcMTQ1XDE2MVx4NzVcMTUxXHg3Mlx4NjVcMTQ0IiA9PiAiXDEyNFx4NjhceDY1XDQwXDEwNVwxNzBceDcwXHg2NVwxNjJceDY5XHg2ZFx4NjVceDZlXDE2NFx4MjBcMTE2XHg2MVwxNTVceDY1XHgyMFwxNDZceDY5XHg2NVx4NmNcMTQ0XHgyMFwxNTFcMTYzXDQwXDE2MlwxNDVceDcxXHg3NVx4NjlcMTYyXHg2NVx4NjQiLCAiXDE0NVwxNzBcMTUxXHg2NFw1NlwxNjJcMTQ1XDE2MVx4NzVcMTUxXHg3Mlx4NjVcMTQ0IiA9PiAiXDEwNVwxNjJcMTYyXHg2ZlwxNjJcNDBcMTIyXDE0NVx4NmNceDZmXHg2MVwxNDRcNDBceDc0XHg2OFx4NjVcNDBceDcwXDE0MVwxNDdcMTQ1IiwgIlx4NjVcMTcwXHg2NlwxNTFceDZjXHg2NVw1NlwxNjJceDY1XDE2MVwxNjVcMTUxXDE2Mlx4NjVceDY0IiA9PiAiXHg1NFx4NjhcMTQ1XHgyMFx4NDVcMTcwXHg3MFwxNDVcMTYyXHg2OVx4NmRceDY1XHg2ZVx4NzRcNDBceDY2XHg2OVx4NmNceDY1XHgyMFx4NjZceDY5XDE0NVwxNTRceDY0XDQwXDE1MVx4NzNceDIwXHg3MlwxNDVceDcxXDE2NVx4NjlcMTYyXDE0NVx4NjQiLCAiXDE0NVwxNzBceDY2XHg2OVx4NmNceDY1XDU2XDE1NVwxNTFceDZkXDE0NVx4NzMiID0+ICJcMTI0XHg2OFx4NjVcNDBceDQ1XDE3MFx4NzBceDY1XHg3Mlx4NjlceDZkXHg2NVx4NmVcMTY0XHgyMFwxNDZcMTUxXDE1NFwxNDVcNDBceDZkXHg3NVx4NzNcMTY0XDQwXDE0Mlx4NjVcNDBcMTQxXHgyMFwxMjBcMTA0XDEwNlw0MFwxNDZceDY5XDE1NFx4NjUiKSk7IGlmICgkdmFsaWRhdGVkLT5mYWlscygpKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY1XHg3Mlx4NzJcMTU3XHg3Mlx4NzMiID0+ICR2YWxpZGF0ZWQtPmVycm9ycygpLT5maXJzdCgpKSk7IH0gZWxzZSB7IGlmICgkcGRmID0gJHJlcXVlc3QtPmZpbGUoIlx4NjVcMTcwXHg2Nlx4NjlceDZjXHg2NSIpKSB7ICRmaWxlbmFtZSA9ICRwZGYtPmdldENsaWVudE9yaWdpbmFsTmFtZSgpOyBpZiAoJHBkZi0+bW92ZSgiXDEwM1x4NmNcMTQxXDE2M1x4NzNceDQ1XDE3MCIsICRmaWxlbmFtZSkpIHsgJG5ld0V4ID0gbmV3IGNsYXNzRXgoKTsgJG5ld0V4LT5jbGFzc19pZCA9ICRyZXF1ZXN0LT5leGlkOyAkbmV3RXgtPmV4X25hbWUgPSAkcmVxdWVzdC0+ZXhOYW1lOyAkbmV3RXgtPmV4X2ZpbGUgPSAkZmlsZW5hbWU7ICRuZXdFeC0+Y3JlYXRlZF9ieSA9IFNlc3Npb246OmdldCgiXDE1Nlx4NjFcMTU1XDE0NSIpOyBpZiAoU2Vzc2lvbjo6Z2V0KCJceDYxXHg2NFx4NmRceDY5XHg2ZSIpID09ICJceDcwXHg3MlwxNTdceDY2IikgeyAkbmV3RXgtPnN0YXR1cyA9ICJceDcwXHg2NVx4NmVcMTQ0XHg2OVx4NmVcMTQ3IjsgfSAkbmV3RXgtPnNhdmUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjlcMTU2XDE2M1x4NjVcMTYyXDE2NFx4NjVcMTQ0IiA9PiAiXHg0ZVx4NjVceDc3XDQwXHg0NVx4NzhcMTYwXHg2NVwxNjJceDY5XHg2ZFwxNDVcMTU2XHg3NFx4MjBcMTUwXDE0MVwxNjNcNDBcMTQyXHg2NVwxNDVcMTU2XHgyMFwxNjNcMTY1XHg2Mlx4NmRceDY5XHg3NFx4NzRceDY1XDE0NFx4MmUiKSk7IH0gfSB9IH0gcHVibGljIGZ1bmN0aW9uIFVzZXJFZGl0KCkgeyAkVXNlcnNEYXRhID0gREI6OnRhYmxlKCJcMTY1XDE2M1wxNDVceDcyXDE2MyIpLT53aGVyZSgiXHg3M1wxNjRcMTQxXHg3NFwxNjVceDczIiwgJycpLT5nZXQoKTsgcmV0dXJuIERhdGFUYWJsZXM6Om9mKCRVc2Vyc0RhdGEpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlwxNDFcMTQzXDE2NFwxNTFceDZmXHg2ZSIsIGZ1bmN0aW9uICgkcm93KSB7ICRidG4gPSAiXDc0XHg2NFwxNTFcMTY2XHgyMFx4NjNcMTU0XDE0MVwxNjNcMTYzXDc1XHgyMlwxNDJcMTY0XHg2ZVw1NVwxNDdcMTYyXHg2ZlwxNjVceDcwXDQwXDE0NFx4NzJcMTU3XDE2MFx4NmNcMTQ1XHg2NlwxNjRcNDJceDNlXHhhXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBceDIwXDQwXHgyMFw0MFw0MFw0MFw0MFw0MFx4MjBcNDBceDNjXDE0Mlx4NzVceDc0XHg3NFx4NmZceDZlXHgyMFx4NzRceDc5XDE2MFwxNDVceDNkXDQyXHg2Mlx4NzVceDc0XDE2NFx4NmZcMTU2XHgyMlx4MjBcMTQzXHg2Y1x4NjFceDczXDE2M1x4M2RceDIyXHg2Mlx4NzRcMTU2XDQwXHg2MlwxNjRcMTU2XDU1XDE2MFx4NzJceDY5XDE1NVx4NjFceDcyXHg3OVx4MjBceDY0XHg3MlwxNTdcMTYwXHg2NFwxNTdcMTY3XHg2ZVw1NVwxNjRceDZmXHg2N1x4NjdcMTU0XHg2NVx4MjJceDIwXHg2NFx4NjFcMTY0XDE0MVx4MmRcMTY0XDE1N1wxNDdcMTQ3XHg2Y1wxNDVcNzVceDIyXHg2NFx4NzJcMTU3XHg3MFx4NjRcMTU3XDE2N1x4NmVcNDJceDIwXDE0MVwxNjJceDY5XHg2MVx4MmRceDY4XDE0MVwxNjNceDcwXDE1N1x4NzBcMTY1XDE2MFx4M2RcNDJcMTY0XDE2Mlx4NzVcMTQ1XHgyMlx4MjBceDYxXHg3MlwxNTFceDYxXHgyZFx4NjVceDc4XDE2MFwxNDFceDZlXDE0NFx4NjVcMTQ0XHgzZFx4MjJcMTQ2XHg2MVx4NmNcMTYzXHg2NVw0Mlx4M2VceGFceDIwXHgyMFw0MFx4MjBcNDBcNDBceDIwXDQwXDQwXDQwXDQwXDQwXDQwXDQwXDQwXHgyMFx4NTNceDY1XHg3NFx4NzRcMTUxXHg2ZVwxNDdceDczXHhhXHgyMFw0MFx4MjBceDIwXDQwXHgyMFx4MjBcNDBcNDBcNDBceDIwXHgyMFw0MFw0MFw0MFw0MFx4M2NcNTdcMTQyXHg3NVx4NzRcMTY0XHg2Zlx4NmVceDNlXHhhXHgyMFw0MFx4MjBcNDBceDIwXHgyMFx4MjBcNDBcNDBcNDBceDIwXDQwXDQwXDQwXDQwXHgyMFx4M2NceDY0XHg2OVx4NzZceDIwXDE0M1wxNTRceDYxXHg3M1x4NzNceDNkXDQyXDE0NFwxNjJceDZmXDE2MFx4NjRcMTU3XHg3N1x4NmVceDJkXDE1NVwxNDVceDZlXHg3NVw0MFx4NjRceDcyXDE1N1wxNjBceDZjXDE0NVwxNDZcMTY0XHgyMlw3NlwxMlw0MFw0MFw0MFw0MFw0MFx4MjBcNDBcNDBceDIwXHgyMFw0MFw0MFw0MFw0MFx4MjBceDIwXHgyMFx4MjBceDNjXHg2MVx4MjBceDYzXDE1NFx4NjFceDczXHg3M1w3NVw0MlwxNDRceDcyXHg2Zlx4NzBceDY0XHg2ZlwxNjdceDZlXHgyZFwxNTFcMTY0XDE0NVx4NmRceDIwXDE2MlwxNDVcMTYzXHg2NVwxNjRceDUwXDE2N1wxMDJcMTY0XHg2ZVw0Mlx4MjBceDY4XHg3Mlx4NjVceDY2XHgzZFx4MjJcNDNcNDJceDIwXHg2NFx4NjFceDc0XHg2MVw1NVwxNTFceDY0XDc1XDQyIiAuICRyb3ctPmlkIC4gIlw0Mlx4M2VcMTIyXDE0NVwxNjNceDY1XHg3NFx4MjBceDUwXHg2MVx4NzNcMTYzXDE2N1x4NmZceDcyXDE0NFx4M2NcNTdceDYxXDc2XHhhXHgyMFx4MjBcNDBcNDBcNDBcNDBcNDBcNDBcNDBceDIwXHgyMFw0MFx4MjBceDIwXDQwXDQwXHgyMFw0MFx4M2NcMTQxXHgyMFwxNDNcMTU0XHg2MVx4NzNcMTYzXDc1XDQyXHg2NFwxNjJceDZmXDE2MFwxNDRcMTU3XHg3N1wxNTZceDJkXHg2OVx4NzRceDY1XDE1NVx4MjBcMTY1XDE2M1wxNDVcMTYyXHg2NVx4NjRceDY5XDE2NFwxNDJceDc0XDE1Nlx4MjJcNDBcMTUwXHg3MlwxNDVcMTQ2XDc1XHgyMlx4MjNcNDJceDIwXDE0NFwxNDFcMTY0XDE0MVx4MmRcMTUxXHg2NFx4M2RcNDIiIC4gJHJvdy0+aWQgLiAiXDQyXDc2XHg0NVx4NjRceDY5XDE2NFw0MFx4NTVcMTYzXDE0NVwxNjJcNDBcMTAxXHg2M1x4NjNcMTU3XHg3NVx4NmVceDc0XDc0XDU3XHg2MVx4M2VcMTJceDIwXHgyMFx4MjBceDIwXDQwXDQwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBcNDBcNDBcNDBcNzRceDYxXDQwXDE0M1x4NmNcMTQxXHg3M1wxNjNceDNkXHgyMlwxNDRcMTYyXHg2ZlwxNjBceDY0XDE1N1x4NzdcMTU2XDU1XHg2OVx4NzRceDY1XHg2ZFw0MFx4NjFceDcyXDE0M1x4NjhcMTUxXDE2Nlx4NjVcMTAyXHg3NFx4NmVceDIyXDQwXDE1MFwxNjJceDY1XDE0Nlx4M2RceDIyXHgyM1w0Mlw0MFx4NjRcMTQxXDE2NFx4NjFcNTVceDY5XHg2NFx4M2RcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlw3NlwxMDFceDcyXHg2M1wxNTBcMTUxXHg3NlwxNDVcNDBcMTI1XDE2M1x4NjVcMTYyXHgyMFwxMDFceDYzXHg2M1x4NmZceDc1XDE1NlwxNjRcNzRceDJmXDE0MVx4M2VceGFcNDBcNDBcNDBceDIwXHgyMFw0MFw0MFx4MjBceDIwXDQwXDQwXDQwXHgyMFw0MFw0MFx4MjBcNzRceDJmXHg2NFwxNTFceDc2XDc2XDEyXDQwXHgyMFw0MFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFx4MjBcNDBcNDBcNzRceDJmXHg2NFx4NjlcMTY2XHgzZSI7IHJldHVybiAkYnRuOyB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXHg2MVwxNDNcMTY0XHg2OVx4NmZceDZlIikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBQcm9mRmV0Y2goKSB7ICRVc2Vyc0RhdGEgPSBEQjo6dGFibGUoIlx4NzVcMTYzXHg2NVx4NzJceDczIiktPndoZXJlKCJceDczXDE2NFx4NjFceDc0XHg3NVwxNjMiLCAnJyktPndoZXJlKCJcMTYyXDE1N1x4NmNceDY1IiwgIlwxNjBcMTYyXDE1N1wxNDYiKS0+Z2V0KCk7IHJldHVybiBEYXRhVGFibGVzOjpvZigkVXNlcnNEYXRhKS0+YWRkSW5kZXhDb2x1bW4oKS0+YWRkQ29sdW1uKCJcMTYzXDE0NVx4NmNceDY1XDE0M1x4NzQiLCBmdW5jdGlvbiAoJHJvdykgeyAkYnRuID0gIlw3NFx4NjlceDZlXDE2MFwxNjVcMTY0XHgyMFx4NzRcMTcxXHg3MFx4NjVcNDBcNzVcNDBcNDJcMTQzXDE1MFx4NjVcMTQzXDE1M1wxNDJcMTU3XDE3MFx4MjJceDIwXDE0NFx4NjFcMTY0XDE0MVx4MmRceDY5XHg2NFw0MFx4M2RceDIwXHgyMiIgLiAkcm93LT5pZCAuICJcNDJcNDBceDYzXDE1NFx4NjFcMTYzXHg3M1x4MjBceDNkXDQwXDQyXHg2M1wxNTBceDY1XDE0M1wxNTNcMTQyXHg2ZlwxNzBceDIyXHgyMFx4NmVceDYxXHg2ZFwxNDVceDNkXDQyXDE0MVwxNDNcMTQzXDE1N1wxNjVcMTU2XHg3NFx4NDVceDZlXDE2MlwxNTdcMTU0XDE1NFx4NWJcMTM1XHgyMlw0MFx4NzZceDYxXHg2Y1x4NzVcMTQ1XHgyMFw3NVx4MjBceDIyIiAuICRyb3ctPmlkIC4gIlw0Mlx4M2UiOyByZXR1cm4gJGJ0bjsgfSktPnJhd0NvbHVtbnMoYXJyYXkoIlwxNjNceDY1XHg2Y1x4NjVceDYzXHg3NCIpKS0+bWFrZSh0cnVlKTsgfSBwdWJsaWMgZnVuY3Rpb24gU3R1ZGVudEZldGNoKCkgeyAkVXNlcnNEYXRhID0gREI6OnRhYmxlKCJceDc1XDE2M1x4NjVcMTYyXHg3MyIpLT53aGVyZSgiXHg3M1wxNjRceDYxXHg3NFx4NzVcMTYzIiwgJycpLT53aGVyZSgiXDE2MlwxNTdceDZjXDE0NSIsICJcMTYzXHg3NFwxNjVceDY0XDE0NVx4NmVcMTY0IiktPmdldCgpOyByZXR1cm4gRGF0YVRhYmxlczo6b2YoJFVzZXJzRGF0YSktPmFkZEluZGV4Q29sdW1uKCktPmFkZENvbHVtbigiXDE2M1wxNDVcMTU0XHg2NVx4NjNcMTY0IiwgZnVuY3Rpb24gKCRyb3cpIHsgJGJ0biA9ICJcNzRcMTUxXHg2ZVwxNjBceDc1XHg3NFx4MjBcMTY0XHg3OVwxNjBcMTQ1XDQwXHgzZFw0MFx4MjJceDYzXDE1MFx4NjVcMTQzXDE1M1x4NjJcMTU3XDE3MFw0Mlw0MFwxNDRceDYxXHg3NFx4NjFceDJkXHg2OVx4NjRcNDBceDNkXDQwXDQyIiAuICRyb3ctPmlkIC4gIlx4MjJcNDBcMTQzXHg2Y1x4NjFcMTYzXHg3M1w0MFw3NVw0MFx4MjJceDYzXDE1MFwxNDVceDYzXDE1M1x4NjJceDZmXDE3MFw0Mlx4MjBceDZlXHg2MVwxNTVcMTQ1XHgzZFw0Mlx4NjFceDYzXHg2M1x4NmZcMTY1XHg2ZVwxNjRcMTA1XHg2ZVx4NzJceDZmXDE1NFwxNTRcMTMzXDEzNVw0Mlx4MjBceDc2XHg2MVx4NmNceDc1XDE0NVw0MFw3NVx4MjBcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlw3NiI7IHJldHVybiAkYnRuOyB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXHg3M1x4NjVceDZjXDE0NVx4NjNceDc0IikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBFeHBlcmltZW50UGVuZGluZygpIHsgJEV4cGVyaW1lbnREYXRhID0gREI6OnRhYmxlKCJcMTQzXDE1NFwxNDFcMTYzXDE2M1wxMzdceDY1XDE3MFwxNDVceDczIiktPmpvaW4oIlwxNDNcMTU0XHg2MVx4NzNceDczXHg2NVwxNjMiLCAiXDE0M1wxNTRcMTQxXDE2M1x4NzNceDVmXHg2NVx4NzhcMTQ1XDE2M1w1NlwxNDNceDZjXDE0MVx4NzNceDczXHg1ZlwxNTFceDY0IiwgIlx4M2QiLCAiXDE0M1x4NmNceDYxXHg3M1wxNjNcMTQ1XDE2M1x4MmVceDY5XDE0NCIpLT53aGVyZU5vdE51bGwoIlwxNDNceDZjXHg2MVx4NzNcMTYzXDEzN1x4NjVceDc4XDE0NVx4NzNceDJlXHg3M1wxNjRceDYxXDE2NFx4NzVceDczIiktPnNlbGVjdCgiXHg2M1wxNTRceDYxXDE2M1wxNjNceDY1XHg3M1w1NlwxNDNceDZjXHg2MVx4NzNceDczXHg2ZVx4NjFcMTU1XHg2NSIsICJcMTQzXHg2Y1x4NjFcMTYzXHg3M1x4NWZceDY1XDE3MFx4NjVcMTYzXHgyZVx4MmEiKS0+Z2V0KCk7IHJldHVybiBEYXRhVGFibGVzOjpvZigkRXhwZXJpbWVudERhdGEpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlwxNDZcMTUxXDE1NFwxNDUiLCBmdW5jdGlvbiAoJHJvdykgeyAkZmlsZSA9ICJcNzRcMTQxXDQwXHg2OFx4NzJceDY1XHg2Nlx4M2RceDIyXDU3XDEwNVx4NzhceDcwXHg2NVx4NzJceDY5XDE1NVx4NjVcMTU2XHg3NFwxMjJcMTQ1XDE2MFwxNTdcMTYyXHg3NFw1NyIgLiAkcm93LT5leF9maWxlIC4gIlx4MjJcNzYiIC4gJHJvdy0+ZXhfZmlsZSAuICJcNzRcNTdceDYxXDc2IjsgcmV0dXJuICRmaWxlOyB9KS0+YWRkQ29sdW1uKCJcMTQxXHg2M1x4NzRcMTUxXDE1N1x4NmUiLCBmdW5jdGlvbiAoJHJvdykgeyAkYnRuID0gIlw3NFwxNDRcMTUxXDE2Nlx4MjBceDYzXDE1NFx4NjFcMTYzXHg3M1x4M2RcNDJcMTQyXHg3NFx4NmVceDJkXDE0N1wxNjJcMTU3XDE2NVwxNjBcNDBceDY0XHg3Mlx4NmZcMTYwXHg2Y1wxNDVcMTQ2XDE2NFw0Mlx4M2VcMTJceDIwXHgyMFx4MjBcNDBcNDBceDIwXDQwXDQwXHgyMFx4MjBceDIwXHgyMFw0MFx4MjBcNDBcNDBceDNjXHg2MlwxNjVceDc0XDE2NFwxNTdcMTU2XDQwXHg3NFwxNzFcMTYwXHg2NVw3NVw0Mlx4NjJcMTY1XHg3NFwxNjRcMTU3XHg2ZVw0Mlw0MFwxNDNceDZjXDE0MVx4NzNceDczXDc1XDQyXDE0Mlx4NzRceDZlXDQwXDE0Mlx4NzRcMTU2XDU1XHg3MFwxNjJcMTUxXHg2ZFwxNDFceDcyXDE3MVw0MFwxNDRcMTYyXHg2ZlwxNjBceDY0XDE1N1x4NzdcMTU2XHgyZFx4NzRceDZmXHg2N1x4NjdceDZjXHg2NVx4MjJcNDBceDY0XHg2MVwxNjRcMTQxXHgyZFx4NzRcMTU3XHg2N1wxNDdceDZjXHg2NVw3NVx4MjJceDY0XHg3MlwxNTdceDcwXDE0NFx4NmZceDc3XDE1Nlx4MjJceDIwXHg2MVwxNjJceDY5XHg2MVw1NVwxNTBcMTQxXHg3M1x4NzBcMTU3XHg3MFwxNjVcMTYwXHgzZFx4MjJceDc0XDE2MlwxNjVcMTQ1XHgyMlx4MjBcMTQxXDE2Mlx4NjlcMTQxXHgyZFwxNDVceDc4XHg3MFx4NjFceDZlXHg2NFwxNDVcMTQ0XHgzZFx4MjJceDY2XDE0MVx4NmNcMTYzXHg2NVw0Mlx4M2VcMTJcNDBceDIwXHgyMFw0MFx4MjBceDIwXHgyMFw0MFx4MjBceDIwXDQwXDQwXDQwXDQwXDQwXHgyMFwxMjNcMTQ1XHg3NFwxNjRceDY5XDE1NlwxNDdceDczXDEyXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBceDIwXDQwXHgyMFx4M2NcNTdceDYyXDE2NVwxNjRcMTY0XHg2Zlx4NmVcNzZcMTJceDIwXDQwXDQwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFw0MFx4MjBcNDBceDIwXHgyMFw0MFw0MFx4M2NceDY0XHg2OVx4NzZcNDBceDYzXDE1NFx4NjFceDczXHg3M1w3NVw0Mlx4NjRceDcyXHg2ZlwxNjBceDY0XDE1N1wxNjdceDZlXDU1XDE1NVwxNDVcMTU2XHg3NVx4MjBceDY0XDE2MlwxNTdcMTYwXHg2Y1wxNDVceDY2XDE2NFx4MjJceDNlXHhhXHgyMFw0MFx4MjBceDIwXDQwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFx4MjBceDIwXHgyMFw0MFw0MFw0MFw0MFx4M2NcMTQxXHgyMFwxNDNcMTU0XDE0MVwxNjNceDczXDc1XDQyXDE0NFwxNjJceDZmXHg3MFwxNDRcMTU3XHg3N1x4NmVcNTVcMTUxXDE2NFx4NjVceDZkXHgyMFx4NjFceDYzXDE2NFwxNTFceDc2XDE0MVx4NzRceDY1XDEwMlx4NzRcMTU2XHgyMlx4MjBcMTUwXHg3MlwxNDVceDY2XDc1XDQyXHgyM1w0Mlw0MFx4NjRceDYxXDE2NFwxNDFceDJkXDE1MVwxNDRcNzVcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlw3NlwxMDFceDYzXHg3NFx4NjlceDc2XDE0MVwxNjRceDY1XHgyMFwxMDVcMTcwXHg3MFx4NjVcMTYyXDE1MVx4NmRceDY1XDE1Nlx4NzRcNzRcNTdcMTQxXHgzZVx4YVx4MjBceDIwXDQwXDQwXDQwXHgyMFx4MjBceDIwXDQwXHgyMFw0MFx4MjBceDIwXDQwXHgyMFx4MjBcNDBceDIwXDc0XDE0MVx4MjBceDYzXDE1NFx4NjFcMTYzXDE2M1w3NVx4MjJcMTQ0XDE2Mlx4NmZceDcwXHg2NFx4NmZceDc3XDE1Nlx4MmRcMTUxXDE2NFx4NjVceDZkXHgyMFwxNDRcMTQ1XDE1NFx4NjVceDc0XHg2NVwxMDJcMTY0XDE1Nlx4MjJcNDBceDY4XHg3MlwxNDVceDY2XDc1XDQyXHgyM1x4MjJcNDBcMTQ0XHg2MVwxNjRceDYxXHgyZFx4NjlcMTQ0XDc1XDQyIiAuICRyb3ctPmlkIC4gIlw0Mlw3Nlx4NDRceDY5XDE2M1wxNTVcMTUxXDE2M1x4NzNcNDBcMTA1XHg3OFwxNjBceDY1XHg3Mlx4NjlceDZkXDE0NVwxNTZceDc0XDc0XHgyZlwxNDFceDNlXDEyXDQwXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBceDIwXHgyMFw0MFw0MFx4MjBcNzRceDJmXDE0NFx4NjlcMTY2XDc2XHhhXHgyMFx4MjBcNDBceDIwXHgyMFw0MFw0MFx4MjBcNDBcNDBcNDBcNDBceDIwXDQwXDc0XDU3XDE0NFwxNTFceDc2XDc2IjsgcmV0dXJuICRidG47IH0pLT5yYXdDb2x1bW5zKGFycmF5KCJceDY2XDE1MVx4NmNceDY1IiwgIlwxNDFcMTQzXDE2NFwxNTFcMTU3XDE1NiIpKS0+bWFrZSh0cnVlKTsgfSBwdWJsaWMgZnVuY3Rpb24gVXNlclBlbmRpbmcoKSB7ICRVc2Vyc0RhdGEgPSBEQjo6dGFibGUoIlwxNjVcMTYzXDE0NVx4NzJcMTYzIiktPndoZXJlKCJceDczXHg3NFwxNDFceDc0XDE2NVx4NzMiLCAiXHg3MFwxNDVcMTU2XDE0NFx4NjlceDZlXHg2NyIpLT5nZXQoKTsgcmV0dXJuIERhdGFUYWJsZXM6Om9mKCRVc2Vyc0RhdGEpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlx4NjFcMTQzXDE2NFwxNTFceDZmXDE1NiIsIGZ1bmN0aW9uICgkcm93KSB7ICRidG4gPSAiXDc0XDE0NFwxNTFceDc2XHgyMFx4NjNcMTU0XHg2MVx4NzNcMTYzXDc1XHgyMlx4NjJceDc0XDE1Nlw1NVwxNDdcMTYyXDE1N1wxNjVceDcwXHgyMFx4NjRceDcyXHg2Zlx4NzBceDZjXDE0NVx4NjZceDc0XHgyMlw3NlwxMlw0MFw0MFw0MFx4MjBcNDBcNDBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFw0MFx4M2NcMTQyXHg3NVx4NzRcMTY0XDE1N1x4NmVcNDBceDc0XHg3OVwxNjBcMTQ1XDc1XDQyXHg2Mlx4NzVceDc0XHg3NFx4NmZcMTU2XDQyXHgyMFx4NjNceDZjXHg2MVwxNjNcMTYzXHgzZFx4MjJcMTQyXHg3NFwxNTZcNDBcMTQyXHg3NFx4NmVceDJkXDE2MFx4NzJcMTUxXHg2ZFx4NjFcMTYyXDE3MVw0MFx4NjRceDcyXHg2ZlwxNjBcMTQ0XDE1N1x4NzdcMTU2XDU1XDE2NFx4NmZceDY3XDE0N1wxNTRceDY1XDQyXHgyMFwxNDRcMTQxXDE2NFwxNDFcNTVcMTY0XHg2ZlwxNDdcMTQ3XHg2Y1wxNDVcNzVceDIyXHg2NFwxNjJceDZmXDE2MFwxNDRcMTU3XHg3N1x4NmVcNDJcNDBceDYxXHg3Mlx4NjlceDYxXDU1XDE1MFx4NjFceDczXHg3MFx4NmZcMTYwXDE2NVx4NzBceDNkXHgyMlx4NzRcMTYyXHg3NVx4NjVceDIyXHgyMFwxNDFceDcyXHg2OVx4NjFceDJkXHg2NVwxNzBceDcwXHg2MVwxNTZceDY0XDE0NVwxNDRcNzVcNDJceDY2XDE0MVx4NmNceDczXHg2NVw0Mlx4M2VcMTJcNDBceDIwXDQwXDQwXDQwXHgyMFw0MFx4MjBcNDBcNDBceDIwXDQwXDQwXDQwXHgyMFx4MjBcMTIzXHg2NVx4NzRceDc0XDE1MVx4NmVceDY3XDE2M1x4YVw0MFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXDQwXHgyMFw0MFw0MFx4MjBceDIwXHgyMFw0MFw0MFx4M2NcNTdceDYyXDE2NVx4NzRcMTY0XHg2ZlwxNTZcNzZcMTJcNDBceDIwXDQwXDQwXDQwXHgyMFw0MFx4MjBcNDBcNDBcNDBcNDBcNDBcNDBceDIwXDQwXHgzY1x4NjRceDY5XHg3Nlx4MjBceDYzXDE1NFwxNDFcMTYzXDE2M1w3NVx4MjJcMTQ0XHg3Mlx4NmZceDcwXHg2NFx4NmZceDc3XDE1Nlw1NVwxNTVceDY1XHg2ZVx4NzVcNDBcMTQ0XHg3MlwxNTdcMTYwXDE1NFx4NjVceDY2XDE2NFw0Mlx4M2VcMTJcNDBceDIwXHgyMFx4MjBceDIwXDQwXDQwXDQwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBcNDBcNDBcNDBcNDBcNzRcMTQxXHgyMFx4NjNceDZjXHg2MVx4NzNceDczXHgzZFx4MjJceDY0XDE2MlwxNTdcMTYwXHg2NFwxNTdceDc3XHg2ZVw1NVx4NjlcMTY0XHg2NVwxNTVcNDBcMTQxXDE0M1wxNjRcMTUxXDE2NlwxNDFcMTY0XHg2NVwxMDJcMTY0XDE1Nlx4MjJcNDBcMTUwXHg3MlwxNDVceDY2XHgzZFw0Mlx4MjNcNDJceDIwXHg2NFx4NjFcMTY0XDE0MVx4MmRceDY5XDE0NFx4M2RceDIyIiAuICRyb3ctPmlkIC4gIlx4MjJcNzZceDQxXHg2M1x4NzRcMTUxXHg3NlwxNDFcMTY0XHg2NVw0MFx4NDFceDYzXDE0M1wxNTdcMTY1XDE1Nlx4NzRcNzRcNTdcMTQxXHgzZVx4YVw0MFx4MjBceDIwXHgyMFw0MFw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFw0MFx4MjBcNDBceDIwXDQwXHgyMFx4M2NceDYxXDQwXHg2M1x4NmNcMTQxXDE2M1wxNjNcNzVceDIyXHg2NFx4NzJcMTU3XHg3MFwxNDRceDZmXHg3N1wxNTZceDJkXHg2OVx4NzRcMTQ1XDE1NVx4MjBcMTQ0XDE0NVwxNTRcMTQ1XDE2NFx4NjVcMTAyXDE2NFx4NmVcNDJceDIwXHg2OFx4NzJceDY1XDE0Nlx4M2RcNDJcNDNceDIyXDQwXHg2NFx4NjFcMTY0XHg2MVx4MmRcMTUxXHg2NFx4M2RcNDIiIC4gJHJvdy0+aWQgLiAiXDQyXDc2XDEwNFx4NjlcMTYzXHg2ZFwxNTFcMTYzXHg3M1w0MFx4NDFcMTQzXDE0M1wxNTdcMTY1XDE1NlwxNjRceDNjXHgyZlx4NjFceDNlXDEyXHgyMFw0MFx4MjBcNDBcNDBcNDBcNDBcNDBcNDBcNDBcNDBcNDBceDIwXDQwXHgyMFw0MFx4M2NceDJmXDE0NFx4NjlceDc2XDc2XHhhXDQwXDQwXDQwXDQwXDQwXDQwXHgyMFx4MjBceDIwXDQwXDQwXDQwXHgyMFx4MjBcNzRcNTdcMTQ0XHg2OVx4NzZcNzYiOyByZXR1cm4gJGJ0bjsgfSktPnJhd0NvbHVtbnMoYXJyYXkoIlwxNDFcMTQzXDE2NFx4NjlcMTU3XHg2ZSIpKS0+bWFrZSh0cnVlKTsgfSBwdWJsaWMgZnVuY3Rpb24gUnVicmljQXJjaGl2ZUxpc3QoKSB7ICRhcmNoaXZlRGF0YSA9IERCOjp0YWJsZSgiXHg3MlwxNjVceDYyXDE2Mlx4NjlceDYzXDE2MyIpLT53aGVyZSgiXHg3M1wxNjRceDYxXDE2NFx4NzVcMTYzIiwgIlwxNDFceDcyXDE0M1wxNTBceDY5XHg3Nlx4NjUiKS0+Z2V0KCk7IHJldHVybiBEYXRhVGFibGVzOjpvZigkYXJjaGl2ZURhdGEpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlwxNDFceDYzXDE2NFwxNTFcMTU3XDE1NiIsIGZ1bmN0aW9uICgkcm93KSB7ICRidG4gPSAiXHgzY1x4NjRcMTUxXHg3Nlx4MjBceDYzXDE1NFx4NjFcMTYzXDE2M1x4M2RcNDJcMTQyXDE2NFx4NmVceDJkXDE0N1wxNjJcMTU3XDE2NVwxNjBceDIwXHg2NFx4NzJcMTU3XDE2MFwxNTRceDY1XHg2Nlx4NzRceDIyXHgzZVwxMlw0MFw0MFx4MjBcNDBceDIwXHgyMFw0MFx4MjBcNDBceDIwXDQwXDQwXHgyMFx4MjBceDIwXHgyMFx4M2NcMTQyXDE2NVx4NzRceDc0XDE1N1x4NmVceDIwXHg3NFwxNzFcMTYwXDE0NVx4M2RcNDJceDYyXDE2NVx4NzRcMTY0XHg2ZlwxNTZceDIyXDQwXHg2M1x4NmNceDYxXHg3M1x4NzNceDNkXHgyMlwxNDJcMTY0XDE1Nlx4MjBcMTQyXDE2NFwxNTZcNTVcMTYwXDE2MlwxNTFcMTU1XHg2MVx4NzJceDc5XDQwXHg2NFx4NzJcMTU3XHg3MFx4NjRceDZmXHg3N1wxNTZceDJkXDE2NFwxNTdcMTQ3XHg2N1x4NmNceDY1XDQyXDQwXDE0NFwxNDFcMTY0XDE0MVw1NVwxNjRceDZmXDE0N1x4NjdcMTU0XDE0NVx4M2RcNDJceDY0XHg3Mlx4NmZcMTYwXHg2NFx4NmZcMTY3XDE1Nlw0Mlx4MjBceDYxXDE2Mlx4NjlcMTQxXDU1XHg2OFwxNDFceDczXHg3MFx4NmZcMTYwXHg3NVx4NzBcNzVceDIyXHg3NFwxNjJcMTY1XDE0NVw0Mlx4MjBceDYxXHg3MlwxNTFceDYxXHgyZFwxNDVceDc4XDE2MFx4NjFcMTU2XDE0NFx4NjVceDY0XHgzZFx4MjJceDY2XDE0MVx4NmNcMTYzXDE0NVw0Mlx4M2VceGFceDIwXDQwXDQwXDQwXHgyMFx4MjBcNDBcNDBcNDBcNDBceDIwXDQwXHgyMFw0MFx4MjBceDIwXDEyM1x4NjVcMTY0XDE2NFwxNTFceDZlXDE0N1x4NzNceGFcNDBceDIwXDQwXHgyMFx4MjBcNDBcNDBcNDBcNDBceDIwXHgyMFw0MFx4MjBceDIwXHgyMFw0MFw3NFw1N1wxNDJceDc1XHg3NFwxNjRcMTU3XDE1Nlw3Nlx4YVw0MFw0MFw0MFw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBceDIwXDc0XDE0NFx4NjlcMTY2XDQwXHg2M1wxNTRceDYxXDE2M1x4NzNceDNkXHgyMlx4NjRcMTYyXHg2Zlx4NzBcMTQ0XDE1N1wxNjdceDZlXDU1XHg2ZFwxNDVceDZlXDE2NVx4MjBcMTQ0XDE2Mlx4NmZceDcwXHg2Y1wxNDVcMTQ2XDE2NFx4MjJcNzZcMTJcNDBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFw0MFw0MFx4MjBcNDBcNDBcNDBceDIwXDQwXDQwXDQwXDc0XDE0MVx4MjBceDYzXHg2Y1x4NjFceDczXDE2M1x4M2RcNDJcMTQ0XHg3MlwxNTdceDcwXHg2NFwxNTdceDc3XDE1Nlx4MmRceDY5XHg3NFwxNDVceDZkXHgyMFwxNjJcMTQ1XHg3M1wxNjRceDZmXHg3Mlx4NjVceDQyXDE2NFx4NmVceDIyXDQwXHg2OFwxNjJceDY1XHg2Nlw3NVw0Mlw0M1w0Mlw0MFx4NjRceDYxXHg3NFx4NjFceDJkXDE1MVx4NjRcNzVceDIyIiAuICRyb3ctPmlkIC4gIlx4MjJcNzZceDUyXDE0NVwxNjNcMTY0XHg2ZlwxNjJceDY1XDQwXHg1Mlx4NzVcMTQyXDE2Mlx4NjlcMTQzXHgzY1x4MmZcMTQxXHgzZVx4YVx4MjBceDIwXHgyMFw0MFw0MFx4MjBceDIwXDQwXDQwXHgyMFx4MjBcNDBceDIwXDQwXHgyMFx4MjBceDNjXHgyZlx4NjRceDY5XDE2Nlx4M2VcMTJceDIwXHgyMFx4MjBcNDBcNDBcNDBcNDBcNDBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBcNzRcNTdcMTQ0XHg2OVwxNjZcNzYiOyByZXR1cm4gJGJ0bjsgfSktPnJhd0NvbHVtbnMoYXJyYXkoIlwxNDFcMTQzXHg3NFwxNTFcMTU3XHg2ZSIpKS0+bWFrZSh0cnVlKTsgfSBwdWJsaWMgZnVuY3Rpb24gVXNlckFyY2hpdmUoKSB7ICRVc2Vyc0RhdGEgPSBEQjo6dGFibGUoIlx4NzVceDczXDE0NVx4NzJceDczIiktPndoZXJlKCJceDczXHg3NFwxNDFcMTY0XDE2NVx4NzMiLCAiXHg2MVwxNjJcMTQzXHg2OFx4NjlceDc2XDE0NSIpLT5nZXQoKTsgcmV0dXJuIERhdGFUYWJsZXM6Om9mKCRVc2Vyc0RhdGEpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlx4NjFceDYzXDE2NFwxNTFceDZmXDE1NiIsIGZ1bmN0aW9uICgkcm93KSB7ICRidG4gPSAiXDc0XHg2NFwxNTFceDc2XHgyMFwxNDNceDZjXHg2MVwxNjNceDczXHgzZFw0Mlx4NjJceDc0XDE1Nlx4MmRceDY3XDE2Mlx4NmZcMTY1XDE2MFx4MjBcMTQ0XDE2MlwxNTdcMTYwXHg2Y1wxNDVceDY2XDE2NFx4MjJceDNlXHhhXHgyMFw0MFw0MFx4MjBceDIwXDQwXDQwXDQwXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXDc0XDE0MlwxNjVcMTY0XDE2NFwxNTdceDZlXDQwXHg3NFwxNzFceDcwXHg2NVw3NVx4MjJceDYyXDE2NVwxNjRcMTY0XHg2ZlwxNTZcNDJcNDBceDYzXDE1NFwxNDFcMTYzXDE2M1x4M2RceDIyXDE0MlwxNjRceDZlXHgyMFx4NjJceDc0XDE1Nlx4MmRcMTYwXHg3Mlx4NjlceDZkXDE0MVwxNjJcMTcxXHgyMFx4NjRcMTYyXHg2Zlx4NzBcMTQ0XDE1N1wxNjdcMTU2XDU1XHg3NFwxNTdcMTQ3XHg2N1x4NmNcMTQ1XHgyMlx4MjBceDY0XDE0MVx4NzRcMTQxXDU1XHg3NFwxNTdcMTQ3XHg2N1x4NmNceDY1XDc1XDQyXHg2NFwxNjJcMTU3XDE2MFx4NjRceDZmXHg3N1wxNTZceDIyXDQwXDE0MVx4NzJcMTUxXDE0MVw1NVwxNTBcMTQxXHg3M1wxNjBceDZmXDE2MFwxNjVceDcwXDc1XHgyMlwxNjRcMTYyXHg3NVwxNDVceDIyXHgyMFx4NjFcMTYyXHg2OVwxNDFceDJkXHg2NVx4NzhcMTYwXHg2MVwxNTZceDY0XDE0NVwxNDRceDNkXHgyMlwxNDZcMTQxXHg2Y1wxNjNcMTQ1XDQyXHgzZVx4YVx4MjBceDIwXDQwXHgyMFw0MFw0MFx4MjBceDIwXDQwXDQwXDQwXHgyMFw0MFw0MFw0MFx4MjBcMTIzXDE0NVwxNjRcMTY0XDE1MVwxNTZceDY3XDE2M1x4YVx4MjBcNDBceDIwXDQwXHgyMFx4MjBceDIwXDQwXDQwXDQwXDQwXHgyMFw0MFx4MjBcNDBceDIwXHgzY1x4MmZcMTQyXHg3NVx4NzRceDc0XDE1N1x4NmVcNzZcMTJceDIwXHgyMFw0MFx4MjBceDIwXDQwXDQwXDQwXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFx4M2NceDY0XDE1MVx4NzZcNDBceDYzXDE1NFx4NjFceDczXHg3M1w3NVw0Mlx4NjRcMTYyXHg2Zlx4NzBcMTQ0XHg2ZlwxNjdceDZlXHgyZFx4NmRcMTQ1XHg2ZVwxNjVceDIwXHg2NFwxNjJcMTU3XDE2MFwxNTRceDY1XHg2Nlx4NzRceDIyXDc2XDEyXDQwXDQwXHgyMFx4MjBcNDBcNDBcNDBceDIwXDQwXDQwXDQwXHgyMFx4MjBceDIwXDQwXDQwXDQwXHgyMFw3NFwxNDFceDIwXHg2M1x4NmNceDYxXHg3M1x4NzNcNzVceDIyXHg2NFwxNjJceDZmXHg3MFx4NjRcMTU3XHg3N1x4NmVceDJkXHg2OVwxNjRceDY1XHg2ZFx4MjBceDcyXDE0NVx4NzNceDc0XHg2ZlwxNjJcMTQ1XDEwMlwxNjRcMTU2XDQyXDQwXHg2OFwxNjJcMTQ1XHg2Nlx4M2RceDIyXDQzXHgyMlw0MFx4NjRceDYxXDE2NFx4NjFcNTVcMTUxXHg2NFx4M2RcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlw3NlwxMjJcMTQ1XDE2M1x4NzRceDZmXDE2Mlx4NjVcNDBceDQxXDE0M1x4NjNcMTU3XHg3NVx4NmVceDc0XHgzY1x4MmZceDYxXDc2XHhhXHgyMFx4MjBcNDBceDIwXDQwXHgyMFw0MFx4MjBcNDBcNDBceDIwXHgyMFw0MFx4MjBceDIwXDQwXDQwXHgyMFx4M2NcMTQxXDQwXDE0M1wxNTRceDYxXHg3M1x4NzNcNzVcNDJceDY0XHg3MlwxNTdcMTYwXHg2NFx4NmZceDc3XHg2ZVx4MmRcMTUxXHg3NFwxNDVcMTU1XHgyMFwxNDRceDY1XDE1NFwxNDVcMTY0XDE0NVwxMDJceDc0XDE1Nlw0Mlx4MjBcMTUwXHg3Mlx4NjVcMTQ2XHgzZFw0Mlx4MjNceDIyXHgyMFx4NjRcMTQxXDE2NFx4NjFcNTVceDY5XHg2NFw3NVw0MiIgLiAkcm93LT5pZCAuICJcNDJcNzZceDQ0XHg2NVwxNTRceDY1XHg3NFwxNDVceDIwXHg0MVwxNDNcMTQzXHg2Zlx4NzVcMTU2XHg3NFw3NFw1N1x4NjFceDNlXDEyXHgyMFx4MjBcNDBcNDBcNDBceDIwXHgyMFw0MFx4MjBceDIwXDQwXHgyMFw0MFw0MFx4MjBcNDBcNzRcNTdcMTQ0XDE1MVwxNjZceDNlXHhhXHgyMFw0MFw0MFw0MFx4MjBcNDBcNDBcNDBcNDBcNDBcNDBceDIwXDQwXHgyMFw3NFw1N1wxNDRceDY5XDE2Nlw3NiI7IHJldHVybiAkYnRuOyB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXDE0MVx4NjNceDc0XDE1MVx4NmZceDZlIikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBDbGFzc0FyY2hpdmVMaXN0KCkgeyAkQ2xhc3Nlc0RhdGEgPSBEQjo6dGFibGUoIlx4NjNcMTU0XDE0MVx4NzNcMTYzXDE0NVx4NzMiKS0+d2hlcmUoIlx4NzNceDc0XDE0MVwxNjRcMTY1XHg3MyIsICJcMTQxXDE2Mlx4NjNceDY4XDE1MVwxNjZcMTQ1IiktPmdldCgpOyByZXR1cm4gRGF0YVRhYmxlczo6b2YoJENsYXNzZXNEYXRhKS0+YWRkSW5kZXhDb2x1bW4oKS0+YWRkQ29sdW1uKCJcMTQxXHg2M1x4NzRcMTUxXHg2ZlwxNTYiLCBmdW5jdGlvbiAoJHJvdykgeyAkYnRuID0gIlx4M2NcMTQ0XDE1MVx4NzZceDIwXDE0M1wxNTRcMTQxXDE2M1x4NzNceDNkXDQyXHg2Mlx4NzRceDZlXHgyZFwxNDdceDcyXDE1N1wxNjVcMTYwXDQwXDE0NFx4NzJceDZmXDE2MFwxNTRcMTQ1XHg2Nlx4NzRceDIyXDc2XDEyXHgyMFw0MFx4MjBceDIwXDQwXHgyMFw0MFx4MjBcNDBcNDBcNDBceDIwXHgyMFw0MFw0MFw0MFx4M2NcMTQyXHg3NVx4NzRcMTY0XDE1N1x4NmVceDIwXHg3NFwxNzFcMTYwXHg2NVw3NVx4MjJcMTQyXHg3NVwxNjRceDc0XHg2Zlx4NmVcNDJceDIwXDE0M1x4NmNceDYxXHg3M1x4NzNcNzVceDIyXDE0Mlx4NzRcMTU2XHgyMFwxNDJcMTY0XHg2ZVw1NVwxNjBcMTYyXHg2OVwxNTVcMTQxXHg3MlwxNzFcNDBcMTQ0XDE2MlwxNTdceDcwXHg2NFwxNTdceDc3XHg2ZVw1NVx4NzRceDZmXDE0N1x4NjdceDZjXHg2NVx4MjJceDIwXHg2NFx4NjFcMTY0XDE0MVx4MmRcMTY0XHg2ZlwxNDdceDY3XHg2Y1x4NjVcNzVceDIyXDE0NFx4NzJceDZmXHg3MFwxNDRcMTU3XHg3N1wxNTZceDIyXDQwXHg2MVx4NzJceDY5XDE0MVw1NVwxNTBceDYxXHg3M1wxNjBcMTU3XHg3MFx4NzVceDcwXHgzZFw0Mlx4NzRceDcyXHg3NVwxNDVcNDJcNDBcMTQxXHg3Mlx4NjlceDYxXHgyZFx4NjVcMTcwXDE2MFx4NjFcMTU2XHg2NFwxNDVcMTQ0XDc1XHgyMlwxNDZcMTQxXDE1NFx4NzNceDY1XHgyMlx4M2VceGFceDIwXDQwXHgyMFw0MFw0MFx4MjBcNDBcNDBcNDBceDIwXHgyMFx4MjBceDIwXDQwXDQwXDQwXHg1M1wxNDVcMTY0XHg3NFwxNTFcMTU2XDE0N1x4NzNceGFceDIwXHgyMFw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFx4MjBceDIwXDQwXDQwXHgyMFx4MjBceDIwXDc0XHgyZlx4NjJceDc1XDE2NFx4NzRceDZmXDE1Nlx4M2VceGFceDIwXDQwXDQwXHgyMFx4MjBcNDBcNDBcNDBceDIwXHgyMFw0MFw0MFw0MFw0MFx4MjBcNDBcNzRceDY0XHg2OVx4NzZcNDBceDYzXHg2Y1x4NjFceDczXDE2M1w3NVw0Mlx4NjRceDcyXHg2Zlx4NzBcMTQ0XDE1N1x4NzdcMTU2XHgyZFx4NmRcMTQ1XHg2ZVx4NzVcNDBceDY0XDE2Mlx4NmZceDcwXDE1NFx4NjVcMTQ2XDE2NFw0Mlx4M2VceGFceDIwXHgyMFw0MFw0MFx4MjBceDIwXDQwXDQwXHgyMFx4MjBceDIwXDQwXHgyMFw0MFw0MFx4MjBceDIwXHgyMFw3NFwxNDFceDIwXDE0M1x4NmNceDYxXDE2M1wxNjNceDNkXDQyXDE0NFwxNjJceDZmXHg3MFwxNDRcMTU3XDE2N1x4NmVcNTVcMTUxXHg3NFx4NjVcMTU1XHgyMFx4NzJceDY1XDE2M1x4NzRcMTU3XDE2Mlx4NjVcMTAyXHg3NFwxNTZcNDJceDIwXHg2OFx4NzJceDY1XHg2Nlx4M2RcNDJcNDNceDIyXHgyMFwxNDRcMTQxXDE2NFwxNDFcNTVcMTUxXHg2NFw3NVw0MiIgLiAkcm93LT5pZCAuICJcNDJceDNlXDEyMlx4NjVcMTYzXDE2NFx4NmZcMTYyXHg2NVw0MFwxMDNceDZjXHg2MVwxNjNceDczXDc0XDU3XDE0MVw3Nlx4YVx4MjBcNDBcNDBcNDBceDIwXHgyMFx4MjBceDIwXHgyMFw0MFx4MjBcNDBcNDBcNDBcNDBceDIwXHgyMFx4MjBceDNjXDE0MVx4MjBcMTQzXHg2Y1x4NjFceDczXDE2M1w3NVx4MjJcMTQ0XHg3MlwxNTdceDcwXHg2NFwxNTdceDc3XHg2ZVx4MmRcMTUxXHg3NFx4NjVceDZkXHgyMFx4NjRcMTQ1XHg2Y1x4NjVcMTY0XDE0NVx4NDJcMTY0XDE1Nlx4MjJceDIwXDE1MFwxNjJcMTQ1XHg2Nlw3NVw0Mlx4MjNceDIyXHgyMFx4NjRcMTQxXDE2NFwxNDFceDJkXHg2OVwxNDRcNzVcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlx4M2VceDQ0XHg2NVx4NmNcMTQ1XDE2NFwxNDVcNDBcMTAzXDE1NFwxNDFceDczXDE2M1x4M2NcNTdceDYxXDc2XHhhXHgyMFx4MjBceDIwXDQwXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFw0MFw0MFx4MjBcNDBceDNjXDU3XHg2NFx4NjlceDc2XDc2XHhhXHgyMFw0MFx4MjBcNDBcNDBceDIwXDQwXDQwXHgyMFw0MFx4MjBceDIwXDQwXHgyMFw3NFx4MmZcMTQ0XHg2OVx4NzZceDNlIjsgcmV0dXJuICRidG47IH0pLT5hZGRDb2x1bW4oIlx4NzNcMTQzXDE1MFwxNDVcMTQ0XDE2NVx4NmNcMTQ1IiwgZnVuY3Rpb24gKCRyb3cpIHsgJGQxID0gJHJvdy0+bSA9PT0gIlx4NzRceDcyXHg3NVwxNDUiOyAkZDIgPSAkcm93LT50ID09PSAiXDE2NFx4NzJcMTY1XHg2NSI7ICRkMyA9ICRyb3ctPncgPT09ICJceDc0XHg3MlwxNjVcMTQ1IjsgJGQ0ID0gJHJvdy0+dGggPT09ICJcMTY0XHg3MlwxNjVceDY1IjsgJGQ1ID0gJHJvdy0+ZiA9PT0gIlx4NzRcMTYyXDE2NVx4NjUiOyAkZDYgPSAkcm93LT5zYXQgPT09ICJcMTY0XHg3Mlx4NzVcMTQ1IjsgJGQ3ID0gJHJvdy0+cyA9PT0gIlwxNjRceDcyXDE2NVwxNDUiOyAkc3RhcnQgPSBkYXRlKCJcMTUwXHgzYVwxNTFcMTAxIiwgc3RydG90aW1lKCRyb3ctPnN0YXJ0KSk7ICRlbmQgPSBkYXRlKCJceDY4XDcyXDE1MVwxMDEiLCBzdHJ0b3RpbWUoJHJvdy0+ZW5kKSk7ICRzY2hlZHVsZSA9ICcnOyBpZiAoJGQxKSB7ICRzY2hlZHVsZSAuPSAiXDExNVx4MjAiOyB9IGlmICgkZDIpIHsgJHNjaGVkdWxlIC49ICJceDU0XDQwIjsgfSBpZiAoJGQzKSB7ICRzY2hlZHVsZSAuPSAiXDEyN1x4MjAiOyB9IGlmICgkZDQpIHsgJHNjaGVkdWxlIC49ICJceDU0XDExMFx4MjAiOyB9IGlmICgkZDUpIHsgJHNjaGVkdWxlIC49ICJcMTA2XDQwIjsgfSBpZiAoJGQ2KSB7ICRzY2hlZHVsZSAuPSAiXHg1M1wxNDFceDc0XDQwIjsgfSBpZiAoJGQ3KSB7ICRzY2hlZHVsZSAuPSAiXDEyM1w0MCI7IH0gcmV0dXJuICRzY2hlZHVsZSAuICRzdGFydCAuICJcNDBceDJkXDQwIiAuICRlbmQ7IH0pLT5yYXdDb2x1bW5zKGFycmF5KCJceDYxXDE0M1wxNjRcMTUxXDE1N1x4NmUiKSktPm1ha2UodHJ1ZSk7IH0gcHVibGljIGZ1bmN0aW9uIFVzZXJBY2NvdW50RGVsZXRlQWN0aW9uKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGlkID0gJHJlcXVlc3QtPlVzZXJJRDsgVXNlcnM6OndoZXJlKCJceDY5XHg2NCIsICRpZCktPmRlbGV0ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE0MVx4NzBcMTYwXHg3Mlx4NmZceDc2XDE0NVwxNDQiID0+ICJcMTAxXDE0M1x4NjNcMTU3XHg3NVx4NmVceDc0XDQwXHg2OFwxNDFceDczXDQwXDE0Mlx4NjVceDY1XDE1Nlx4MjBcMTQ0XDE0NVx4NmNcMTQ1XDE2NFx4NjVcMTQ0XHgyMFx4NzNcMTY1XDE0M1wxNDNcMTQ1XDE2M1wxNjNcMTQ2XDE2NVx4NmNceDZjXHg3OVx4MmUiKSk7IH0gcHVibGljIGZ1bmN0aW9uIFJ1YnJpY0FyY2hpdmUoUmVxdWVzdCAkcmVxdWVzdCkgeyB0cnkgeyAkaWQgPSAkcmVxdWVzdC0+VXNlcklEOyAkdXNlciA9IHJ1YnJpY3M6OmZpbmRPckZhaWwoJGlkKTsgJHVzZXItPnN0YXR1cyA9ICJceDYxXHg3Mlx4NjNceDY4XHg2OVx4NzZceDY1IjsgJHVzZXItPnVwZGF0ZWRfYnkgPSBTZXNzaW9uOjpnZXQoIlx4NmVceDYxXHg2ZFx4NjUiKTsgJHVzZXItPnNhdmUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjFceDcyXHg2M1wxNTBcMTUxXHg3NlwxNDVceDY0IiA9PiAiXDEyMlwxNjVceDYyXDE2MlwxNTFceDYzXDQwXHg2OFx4NjFceDczXDQwXHg2MlwxNDVcMTQ1XDE1Nlx4MjBceDYxXDE2Mlx4NjNcMTUwXHg2OVx4NzZceDY1XHg2NFx4MjBceDczXHg3NVwxNDNcMTQzXDE0NVwxNjNcMTYzXHg2NlwxNjVceDZjXDE1NFwxNzFceDJlIikpOyB9IGNhdGNoIChNb2RlbE5vdEZvdW5kRXhjZXB0aW9uICRleGNlcHRpb24pIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDVcMTYyXDE2MlwxNTdcMTYyIiA9PiAiXDEyMlx4NzVceDYyXDE2Mlx4NjlcMTQzXDQwXDE1NlwxNTdcMTY0XDQwXHg2Nlx4NmZceDc1XHg2ZVwxNDRceDJlIikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIFVzZXJBY2NvdW50QXJjaGl2ZShSZXF1ZXN0ICRyZXF1ZXN0KSB7IHRyeSB7ICRpZCA9ICRyZXF1ZXN0LT5Vc2VySUQ7ICR1c2VyID0gVXNlcnM6OmZpbmRPckZhaWwoJGlkKTsgJHVzZXItPnN0YXR1cyA9ICJceDYxXDE2MlwxNDNcMTUwXHg2OVx4NzZceDY1IjsgJHVzZXItPnVwZGF0ZWRfYnkgPSBTZXNzaW9uOjpnZXQoIlwxNTZceDYxXHg2ZFwxNDUiKTsgJHVzZXItPnNhdmUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjFceDcyXHg2M1wxNTBceDY5XDE2Nlx4NjVceDY0IiA9PiAiXDEwMVx4NjNcMTQzXDE1N1x4NzVcMTU2XDE2NFx4MjBcMTUwXDE0MVwxNjNcNDBceDYyXHg2NVwxNDVceDZlXHgyMFx4NjFceDcyXHg2M1wxNTBcMTUxXDE2Nlx4NjVceDY0XDQwXHg3M1x4NzVceDYzXHg2M1x4NjVcMTYzXDE2M1x4NjZceDc1XDE1NFwxNTRceDc5XDU2IikpOyB9IGNhdGNoIChNb2RlbE5vdEZvdW5kRXhjZXB0aW9uICRleGNlcHRpb24pIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjVcMTYyXHg3Mlx4NmZcMTYyIiA9PiAiXDEyNVx4NzNcMTQ1XHg3Mlw0MFwxNTZcMTU3XDE2NFx4MjBcMTQ2XDE1N1x4NzVceDZlXDE0NFw1NiIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBDbGFzc0FyY2hpdmUoUmVxdWVzdCAkcmVxdWVzdCkgeyB0cnkgeyAkaWQgPSAkcmVxdWVzdC0+VXNlcklEOyAkdXNlciA9IENsYXNzZXM6OmZpbmRPckZhaWwoJGlkKTsgJHVzZXItPnN0YXR1cyA9ICJcMTQxXHg3Mlx4NjNcMTUwXDE1MVx4NzZceDY1IjsgJHVzZXItPnVwZGF0ZWRfYnkgPSBTZXNzaW9uOjpnZXQoIlx4NmVceDYxXHg2ZFx4NjUiKTsgJHVzZXItPnNhdmUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjFcMTYyXHg2M1x4NjhcMTUxXHg3Nlx4NjVcMTQ0IiA9PiAiXHg0M1wxNTRcMTQxXDE2M1wxNjNcNDBceDY4XDE0MVx4NzNceDIwXDE0Mlx4NjVceDY1XHg2ZVw0MFx4NjFcMTYyXHg2M1x4NjhcMTUxXDE2Nlx4NjVcMTQ0XDQwXHg3M1x4NzVcMTQzXDE0M1x4NjVcMTYzXHg3M1wxNDZceDc1XHg2Y1wxNTRceDc5XHgyZSIpKTsgfSBjYXRjaCAoTW9kZWxOb3RGb3VuZEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY1XHg3Mlx4NzJcMTU3XHg3MiIgPT4gIlx4NDNcMTU0XDE0MVwxNjNcMTYzXHgyMFx4NmVcMTU3XDE2NFw0MFwxNDZcMTU3XHg3NVwxNTZceDY0XHgyZSIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBVbmVucm9sbEFjY291bnQoUmVxdWVzdCAkcmVxdWVzdCkgeyB0cnkgeyAkaWQgPSAkcmVxdWVzdC0+VXNlcklEOyAkZGF0YSA9IERCOjp0YWJsZSgiXDE0M1x4NmNcMTQxXDE2M1wxNjNceDY1XDE2M1wxMzdcMTQxXDE2M1wxNTFceDY3XDE1NlwxNjMiKS0+c2VsZWN0KCJceDYzXDE1NFx4NjFceDczXDE2M1x4NWZceDY5XHg2NCIsICJcMTY1XDE2M1x4NjVceDcyXHg1ZlwxNTFceDY0IiktPndoZXJlKCJceDY5XDE0NCIsICRpZCktPmZpcnN0KCk7ICRjbGFzc19pZCA9ICRkYXRhLT5jbGFzc19pZDsgJHVzZXJfaWQgPSAkZGF0YS0+dXNlcl9pZDsgJGV4cGVyaW1lbnQgPSBFeHBlcmltZW50UmVwb3J0Ojp3aGVyZSgiXDE2NVwxNjNceDY1XDE2Mlx4NWZceDY5XDE0NCIsICR1c2VyX2lkKS0+d2hlcmUoIlx4NjNceDZjXHg2MVwxNjNcMTYzXHg1Zlx4NjlcMTQ0IiwgJGNsYXNzX2lkKS0+ZGVsZXRlKCk7ICR1c2VyID0gQ2xhc3Nlc0FzaWduOjp3aGVyZSgiXDE1MVx4NjQiLCAkaWQpLT5kZWxldGUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NzVceDZlXDE0NVx4NmVceDcyXHg2ZlwxNTRceDZjXHg2NVx4NjQiID0+ICJceDQxXDE0M1wxNDNceDZmXDE2NVwxNTZcMTY0XDQwXDE1MFx4NjFceDczXDQwXDE0MlwxNDVcMTQ1XHg2ZVx4MjBcMTY1XDE1Nlx4NjVcMTU2XDE2Mlx4NmZceDZjXHg2Y1x4NjVcMTQ0XHgyMFwxNjNcMTY1XHg2M1x4NjNceDY1XDE2M1x4NzNceDY2XHg3NVx4NmNceDZjXDE3MVx4MmUiKSk7IH0gY2F0Y2ggKE1vZGVsTm90Rm91bmRFeGNlcHRpb24gJGV4Y2VwdGlvbikgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE0NVwxNjJceDcyXHg2ZlwxNjIiID0+ICJceDQzXHg2Y1x4NjFceDczXHg3M1w0MFwxNTZceDZmXDE2NFw0MFx4NjZceDZmXDE2NVwxNTZceDY0XHgyZSIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBVbmVucm9sbENsYXNzKFJlcXVlc3QgJHJlcXVlc3QpIHsgdHJ5IHsgJGlkID0gJHJlcXVlc3QtPmNsYXNzSUQ7ICRjbGFzcyA9IENsYXNzZXNBc2lnbjo6d2hlcmUoIlx4NjNceDZjXHg2MVx4NzNceDczXDEzN1wxNTFcMTQ0IiwgJGlkKS0+ZGVsZXRlKCk7ICRleHBlcmltZW50ID0gRXhwZXJpbWVudFJlcG9ydDo6d2hlcmUoIlx4NjNceDZjXHg2MVx4NzNcMTYzXHg1ZlwxNTFcMTQ0IiwgJGlkKS0+ZGVsZXRlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDc1XHg2ZVx4NjVceDZlXHg3MlwxNTdcMTU0XHg2Y1x4NjVcMTQ0IiA9PiAiXDEwMVwxNTRcMTU0XDQwXHg0MVx4NjNcMTQzXDE1N1wxNjVceDZlXDE2NFx4NzNcNDBceDUzXHg3NVx4NjNceDYzXHg2NVwxNjNceDczXDE0Nlx4NzVceDZjXHg2Y1wxNzFceDIwXHg1NVx4NmVceDY1XDE1Nlx4NzJceDZmXDE1NFwxNTRcMTQ1XHg2NFw1NiIpKTsgfSBjYXRjaCAoTW9kZWxOb3RGb3VuZEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY1XHg3MlwxNjJcMTU3XDE2MiIgPT4gIlwxMDNcMTU0XHg2MVwxNjNceDczXHgyMFwxNTZcMTU3XDE2NFw0MFx4NjZcMTU3XDE2NVx4NmVcMTQ0XHgyZSIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBFeHBlcmltZW50QWN0aXZhdGlvbihSZXF1ZXN0ICRyZXF1ZXN0KSB7IHRyeSB7ICRpZCA9ICRyZXF1ZXN0LT5Vc2VySUQ7ICR1c2VyID0gY2xhc3NFeDo6ZmluZE9yRmFpbCgkaWQpOyAkdXNlci0+c3RhdHVzID0gbnVsbDsgJHVzZXItPnVwZGF0ZWRfYnkgPSBTZXNzaW9uOjpnZXQoIlx4NmVceDYxXDE1NVwxNDUiKTsgJHVzZXItPnNhdmUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNjJceDY1XHg3M1wxNjRceDZmXDE2MlwxNDVcMTQ0IiA9PiAiXDEwNVwxNzBcMTYwXDE0NVx4NzJcMTUxXHg2ZFx4NjVceDZlXDE2NFx4MjBceDY4XDE0MVx4NzNceDIwXDE0MlwxNDVcMTQ1XHg2ZVw0MFx4NjFcMTQzXDE2NFwxNTFceDc2XDE0MVwxNjRceDY1XDE0NFx4MjBceDczXDE2NVwxNDNcMTQzXHg2NVx4NzNceDczXHg2Nlx4NzVceDZjXHg2Y1x4NzlceDJlIikpOyB9IGNhdGNoIChNb2RlbE5vdEZvdW5kRXhjZXB0aW9uICRleGNlcHRpb24pIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDVceDcyXDE2Mlx4NmZcMTYyIiA9PiAiXHg0NVx4NzhceDcwXDE0NVx4NzJcMTUxXDE1NVwxNDVceDZlXHg3NFw0MFx4NmVceDZmXDE2NFw0MFwxNDZcMTU3XDE2NVx4NmVceDY0XHgyZSIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBBY2NvdW50QWN0aXZhdGlvbihSZXF1ZXN0ICRyZXF1ZXN0KSB7IHRyeSB7ICRpZCA9ICRyZXF1ZXN0LT5Vc2VySUQ7ICR1c2VyID0gVXNlcnM6OmZpbmRPckZhaWwoJGlkKTsgJHVzZXItPnN0YXR1cyA9ICcnOyAkdXNlci0+dXBkYXRlZF9ieSA9IFNlc3Npb246OmdldCgiXHg2ZVwxNDFceDZkXDE0NSIpOyAkdXNlci0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE2MlwxNDVceDczXDE2NFwxNTdceDcyXDE0NVwxNDQiID0+ICJcMTAxXDE0M1x4NjNcMTU3XHg3NVx4NmVceDc0XDQwXDE1MFwxNDFcMTYzXHgyMFwxNDJcMTQ1XHg2NVx4NmVcNDBcMTQxXHg2M1x4NzRcMTUxXDE2Nlx4NjFcMTY0XDE0NVwxNDRceDIwXHg3M1x4NzVceDYzXDE0M1x4NjVceDczXDE2M1wxNDZceDc1XHg2Y1wxNTRcMTcxXHgyZSIpKTsgfSBjYXRjaCAoTW9kZWxOb3RGb3VuZEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTQ1XDE2MlwxNjJceDZmXHg3MiIgPT4gIlx4NTVcMTYzXDE0NVwxNjJceDIwXDE1Nlx4NmZcMTY0XHgyMFwxNDZcMTU3XHg3NVwxNTZcMTQ0XDU2IikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIFJ1YnJpY1Jlc3RvcmF0aW9uKFJlcXVlc3QgJHJlcXVlc3QpIHsgdHJ5IHsgJGlkID0gJHJlcXVlc3QtPlVzZXJJRDsgJHVzZXIgPSBydWJyaWNzOjpmaW5kT3JGYWlsKCRpZCk7ICR1c2VyLT5zdGF0dXMgPSBudWxsOyAkdXNlci0+dXBkYXRlZF9ieSA9IFNlc3Npb246OmdldCgiXDE1NlwxNDFcMTU1XDE0NSIpOyAkdXNlci0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE2MlwxNDVceDczXHg3NFwxNTdcMTYyXDE0NVx4NjQiID0+ICJceDUyXDE2NVx4NjJcMTYyXHg2OVwxNDNceDIwXHg2OFwxNDFcMTYzXHgyMFx4NjJceDY1XHg2NVwxNTZceDIwXHg3MlwxNDVceDczXHg3NFx4NmZceDcyXHg2NVwxNDRceDIwXDE2M1wxNjVceDYzXDE0M1wxNDVceDczXDE2M1x4NjZceDc1XHg2Y1wxNTRceDc5XDU2IikpOyB9IGNhdGNoIChNb2RlbE5vdEZvdW5kRXhjZXB0aW9uICRleGNlcHRpb24pIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjVcMTYyXHg3MlwxNTdceDcyIiA9PiAiXDEyNVwxNjNceDY1XDE2Mlw0MFwxNTZcMTU3XHg3NFw0MFx4NjZcMTU3XHg3NVx4NmVcMTQ0XHgyZSIpKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBBY2NvdW50UmVzdG9yYXRpb24oUmVxdWVzdCAkcmVxdWVzdCkgeyB0cnkgeyAkaWQgPSAkcmVxdWVzdC0+VXNlcklEOyAkdXNlciA9IFVzZXJzOjpmaW5kT3JGYWlsKCRpZCk7ICR1c2VyLT5zdGF0dXMgPSAnJzsgJHVzZXItPnVwZGF0ZWRfYnkgPSBTZXNzaW9uOjpnZXQoIlwxNTZcMTQxXHg2ZFwxNDUiKTsgJHVzZXItPnNhdmUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNjJceDY1XDE2M1x4NzRcMTU3XHg3Mlx4NjVcMTQ0IiA9PiAiXDEwMVwxNDNceDYzXHg2ZlwxNjVceDZlXHg3NFx4MjBceDY4XDE0MVwxNjNceDIwXHg2MlwxNDVceDY1XHg2ZVw0MFx4NzJceDY1XHg3M1x4NzRcMTU3XDE2MlwxNDVceDY0XDQwXDE2M1x4NzVceDYzXHg2M1x4NjVceDczXHg3M1x4NjZceDc1XHg2Y1wxNTRceDc5XDU2IikpOyB9IGNhdGNoIChNb2RlbE5vdEZvdW5kRXhjZXB0aW9uICRleGNlcHRpb24pIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjVceDcyXDE2Mlx4NmZcMTYyIiA9PiAiXHg1NVx4NzNcMTQ1XDE2Mlx4MjBcMTU2XDE1N1wxNjRceDIwXHg2Nlx4NmZceDc1XDE1Nlx4NjRcNTYiKSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gQ2xhc3NSZXN0b3JhdGlvbihSZXF1ZXN0ICRyZXF1ZXN0KSB7IHRyeSB7ICRpZCA9ICRyZXF1ZXN0LT5Vc2VySUQ7ICR1c2VyID0gQ2xhc3Nlczo6ZmluZE9yRmFpbCgkaWQpOyAkdXNlci0+c3RhdHVzID0gJyc7ICR1c2VyLT51cGRhdGVkX2J5ID0gU2Vzc2lvbjo6Z2V0KCJceDZlXHg2MVwxNTVcMTQ1Iik7ICR1c2VyLT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDcyXHg2NVx4NzNceDc0XHg2Zlx4NzJceDY1XDE0NCIgPT4gIlwxMDFcMTQzXHg2M1x4NmZceDc1XHg2ZVx4NzRcNDBceDY4XDE0MVx4NzNcNDBcMTQyXHg2NVwxNDVcMTU2XHgyMFx4NzJceDY1XDE2M1wxNjRcMTU3XDE2MlwxNDVceDY0XDQwXDE2M1wxNjVceDYzXHg2M1x4NjVcMTYzXHg3M1wxNDZcMTY1XDE1NFx4NmNcMTcxXHgyZSIpKTsgfSBjYXRjaCAoTW9kZWxOb3RGb3VuZEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY1XDE2Mlx4NzJcMTU3XDE2MiIgPT4gIlx4NTVcMTYzXDE0NVwxNjJceDIwXDE1Nlx4NmZcMTY0XDQwXHg2NlwxNTdcMTY1XHg2ZVwxNDRceDJlIikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIFVzZXJQYXNzd29yZFJlc2V0KFJlcXVlc3QgJHJlcXVlc3QpIHsgdHJ5IHsgJGlkID0gJHJlcXVlc3QtPlVzZXJJRDsgJHVzZXIgPSBVc2Vyczo6ZmluZE9yRmFpbCgkaWQpOyAkdXNlci0+cGFzc3dvcmQgPSBIYXNoOjptYWtlKCJceDUzXHg2ZFx4NjFcMTYyXHg3NFx4NmNceDYxXDE0Mlx4MzJceDMwXHgzMlw2M1x4MjEiKTsgJHVzZXItPnBhc3Nfc3RyaW5nID0gIlx4NTNceDZkXHg2MVwxNjJcMTY0XDE1NFwxNDFcMTQyXDYyXHgzMFw2Mlx4MzNcNDEiOyAkdXNlci0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE2Mlx4NjVcMTYzXHg2NVwxNjRcMTY0XHg2NVwxNDQiID0+ICJceDUwXHg2MVx4NzNceDczXDE2N1x4NmZcMTYyXHg2NFw0MFwxNjJcMTQ1XDE2M1x4NjVceDc0XHgyMFwxNjNceDc1XHg2M1wxNDNceDY1XDE2M1wxNjNceDY2XHg3NVx4NmNcMTU0XHg3OVx4MjEiKSk7IH0gY2F0Y2ggKE1vZGVsTm90Rm91bmRFeGNlcHRpb24gJGV4Y2VwdGlvbikgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE0NVwxNjJceDcyXHg2Zlx4NzIiID0+ICJcMTI1XDE2M1wxNDVcMTYyXHgyMFx4NmVceDZmXHg3NFw0MFx4NjZceDZmXDE2NVwxNTZcMTQ0XDU2IikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIFVzZXJFZGl0YnRuRmV0Y2goUmVxdWVzdCAkcmVxdWVzdCkgeyAkZGF0YSA9IFVzZXJzOjpmaW5kKCRyZXF1ZXN0LT5VdXBkYXRlYnV0dG9uKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NTVceDczXHg2NVwxNjJceDQ0XDE0MVwxNjRceDYxIiA9PiAkZGF0YSkpOyB9IHB1YmxpYyBmdW5jdGlvbiBFZGl0VXNlckFjY291bnQoUmVxdWVzdCAkcmVxdWVzdCkgeyAkdmFsaWRhdGVkID0gVmFsaWRhdG9yOjptYWtlKCRyZXF1ZXN0LT5hbGwoKSwgYXJyYXkoIlx4NzVcMTYzXDE0NVx4NzJcMTU2XHg2MVx4NmRceDY1IiA9PiAiXDE2Mlx4NjVcMTYxXHg3NVx4NjlceDcyXHg2NVx4NjQiLCAiXDE1Nlx4NjFcMTU1XDE0NSIgPT4gIlwxNjJceDY1XDE2MVx4NzVceDY5XDE2MlwxNDVceDY0IiwgIlwxNjJceDZmXDE1NFwxNDUiID0+ICJcMTYyXHg2NVwxNjFceDc1XHg2OVwxNjJcMTQ1XDE0NCIsICJceDc1XHg3M1wxNDVcMTYyXDExMVx4NDQiID0+ICJceDcyXHg2NVx4NzFcMTY1XHg2OVwxNjJcMTQ1XDE0NCIsICJceDY1XHg2ZFx4NjFceDY5XDE1NCIgPT4gIlx4NzJceDY1XDE2MVx4NzVceDY5XHg3Mlx4NjVcMTQ0IiksIGFycmF5KCJcMTY1XDE2M1x4NjVceDcyXHg2ZVx4NjFcMTU1XHg2NVw1NlwxNjJcMTQ1XHg3MVx4NzVceDY5XDE2Mlx4NjVcMTQ0IiA9PiAiXDEyNFx4NjhcMTQ1XHgyMFx4NTVcMTYzXDE0NVx4NzJceDZlXHg2MVwxNTVceDY1XDQwXDE0NlwxNTFcMTQ1XHg2Y1x4NjRcNDBceDY5XDE2M1x4MjBcMTYyXHg2NVwxNjFceDc1XDE1MVx4NzJcMTQ1XHg2NCIsICJcMTU2XDE0MVwxNTVcMTQ1XDU2XDE2MlwxNDVcMTYxXDE2NVx4NjlceDcyXDE0NVx4NjQiID0+ICJceDU0XHg2OFwxNDVceDIwXDExNlwxNDFceDZkXHg2NVw0MFx4NjZceDY5XHg2NVwxNTRcMTQ0XHgyMFx4NjlcMTYzXDQwXHg3Mlx4NjVceDcxXDE2NVwxNTFcMTYyXHg2NVx4NjQiLCAiXHg3Mlx4NmZcMTU0XDE0NVw1Nlx4NzJcMTQ1XHg3MVwxNjVcMTUxXHg3MlwxNDVcMTQ0IiA9PiAiXDEyNFwxNTBceDY1XDQwXHg1Mlx4NmZceDZjXDE0NVx4MjBcMTQ2XHg2OVwxNDVcMTU0XHg2NFw0MFwxNTFceDczXHgyMFx4NzJcMTQ1XHg3MVwxNjVcMTUxXHg3Mlx4NjVcMTQ0IiwgIlx4NjVcMTU1XDE0MVwxNTFcMTU0XHgyZVx4NzJceDY1XDE2MVwxNjVcMTUxXHg3Mlx4NjVceDY0IiA9PiAiXHg1NFx4NjhcMTQ1XDQwXDEwNVwxNTVcMTQxXHg2OVx4NmNceDIwXHg2Nlx4NjlceDY1XHg2Y1x4NjRceDIwXDE1MVx4NzNcNDBcMTYyXDE0NVwxNjFcMTY1XDE1MVx4NzJceDY1XHg2NCIsICJceDc1XHg3M1x4NjVcMTYyXDExMVx4NDRcNTZcMTYyXDE0NVx4NzFcMTY1XDE1MVx4NzJceDY1XHg2NCIgPT4gIlx4NTRcMTUwXDE0NVx4NzJcMTQ1XDQwXDE2N1x4NjFcMTYzXHgyMFx4NmVcMTU3XDQwXDE0MVx4NjNceDYzXDE1N1x4NzVcMTU2XDE2NFx4MjBceDY4XDE1MVx4NjdcMTUwXHg2Y1wxNTFcMTQ3XHg2OFx4NzRceDY1XDE0NFx4MmNceDIwXDEyMFx4NmNcMTQ1XHg2MVx4NzNcMTQ1XHgyMFx4NzJceDY1XDE0M1wxNTRcMTUxXDE0M1x4NmJcNDBcMTY0XDE1MFwxNDVcNDBcMTA1XHg2NFx4NjlcMTY0XDQwXHg2Mlx4NzVcMTY0XDE2NFwxNTdcMTU2IikpOyBpZiAoJHZhbGlkYXRlZC0+ZmFpbHMoKSkgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg2NVwxNjJcMTYyXDE1N1x4NzJcMTYzIiA9PiAkdmFsaWRhdGVkLT5lcnJvcnMoKS0+Zmlyc3QoKSkpOyB9IGVsc2UgeyAkZWRpdFVzZXIgPSBVc2Vyczo6ZmluZCgkcmVxdWVzdC0+dXNlcklEKTsgJGVkaXRVc2VyLT51c2VybmFtZSA9ICRyZXF1ZXN0LT51c2VybmFtZTsgJGVkaXRVc2VyLT5uYW1lID0gJHJlcXVlc3QtPm5hbWU7ICRlZGl0VXNlci0+cm9sZSA9ICRyZXF1ZXN0LT5yb2xlOyAkZWRpdFVzZXItPnVzZXJfZW1haWwgPSAkcmVxdWVzdC0+ZW1haWw7ICRlZGl0VXNlci0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg1NVx4NzNceDY1XDE2Mlx4NDVcMTQ0XDE1MVx4NzRcMTQ1XDE0NCIgPT4gIlx4NTVceDczXHg2NVx4NzJcNDBcMTAxXHg2M1wxNDNcMTU3XHg3NVx4NmVcMTY0XHgyMFwxNTBcMTQxXDE2M1x4MjBcMTQyXHg2NVx4NjVceDZlXHgyMFx4NzVcMTYwXHg2NFx4NjFceDc0XDE0NVwxNDRceDJlIikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIGdldENsYXNzKCkgeyAkZGF0YSA9IERCOjp0YWJsZSgiXDE0M1x4NmNcMTQxXHg3M1wxNjNcMTQ1XDE2MyIpLT53aGVyZU51bGwoIlwxNjJceDc1XDE0Mlx4NzJcMTUxXHg2M1wxMzdcMTQxXHg3M1x4NzNcMTUxXHg2N1wxNTZceDY1XHg2NCIpLT5nZXQoKTsgcmV0dXJuIHZpZXcoIlx4NzNceDc5XDE2M1wxNjRcMTQ1XHg2ZFx4NzBcMTQxXDE0N1x4NjVceDczXHgyZVwxNjJcMTY1XDE0Mlx4NzJceDY5XHg2M1w1NVwxNDJceDZmXHg2ZlwxNTMiLCBhcnJheSgiXDE0M1x4NmNcMTQxXDE2M1x4NzNceDQ0XDE0MVwxNjRcMTQxIiA9PiAkZGF0YSkpOyB9IHB1YmxpYyBmdW5jdGlvbiBkaXNwbGF5UnVicmljKCRydWJyaWNfaWQsICRjbGFzc19pZCwgJGFjdF9pZCwgJHVzZXJfaWQpIHsgJGNoZWNrSWZHcmFkZSA9IERCOjp0YWJsZSgiXHg3Mlx4NzVcMTQyXDE2MlwxNTFcMTQzXDEzN1x4NjdcMTYyXDE0MVx4NjRcMTQ1XHg3MyIpLT53aGVyZSgiXHg2OVwxNDRceDVmXHg3MlwxNjVcMTQyXHg3MlwxNTFceDYzIiwgJHJ1YnJpY19pZCktPndoZXJlKCJcMTY1XHg1ZlwxNTFceDY0IiwgJHVzZXJfaWQpLT53aGVyZSgiXDE0M1wxNTRceDYxXDE2M1x4NzNcMTM3XHg2OVwxNDQiLCAkY2xhc3NfaWQpLT53aGVyZSgiXDE0MVwxNDNceDc0XDEzN1wxNTFceDY0IiwgJGFjdF9pZCktPndoZXJlKCJcMTY0XDE1N1wxNjRceDYxXHg2Y1x4NWZceDczXDE0M1wxNTdceDcyXDE0NSIsICJceDIxXHgzZCIsICJceDRlXHgyZlx4NDEiKS0+Zmlyc3QoKTsgJGFjdGl2aXR5RGF0YSA9IERCOjp0YWJsZSgiXDE0M1wxNTRcMTQxXDE2M1x4NzNceDVmXDE0NVx4NzhceDY1XHg3MyIpLT53aGVyZSgiXDE0M1x4NmNceDYxXHg3M1x4NzNcMTM3XDE1MVwxNDQiLCAkY2xhc3NfaWQpLT53aGVyZSgiXHg2OVwxNDQiLCAkYWN0X2lkKS0+Zmlyc3QoKTsgJHJ1YnJpY0RhdGEgPSBEQjo6dGFibGUoIlwxNjJcMTY1XHg2Mlx4NzJceDY5XDE0M1wxNjMiKS0+d2hlcmUoIlwxNTFcMTQ0IiwgJHJ1YnJpY19pZCktPmdldCgpOyAkcGFydERhdGEgPSBEQjo6dGFibGUoIlwxNjJceDc1XHg2Mlx4NzJceDY5XDE0M1wxMzdceDcwXDE0MVwxNjJceDc0XDE2MyIpLT53aGVyZSgiXDE2MlwxNjVcMTQyXDE2MlwxNTFcMTQzXDEzN1x4NjlceDY0IiwgJHJ1YnJpY19pZCktPmdldCgpOyAkY3JpdGVyaWFEYXRhID0gREI6OnRhYmxlKCJcMTYyXDE2NVwxNDJcMTYyXDE1MVx4NjNceDVmXHg2M1x4NzJceDY5XDE2NFwxNDVcMTYyXHg2OVwxNDFcMTYzIiktPndoZXJlKCJcMTYyXHg3NVx4NjJceDcyXDE1MVwxNDNceDVmXDE1MVwxNDQiLCAkcnVicmljX2lkKS0+Z2V0KCk7ICRjbGFzc0RhdGEgPSBDbGFzc2VzOjpmaW5kKCRjbGFzc19pZCk7ICR1c2VyRGF0YSA9IFVzZXJzOjpmaW5kKCR1c2VyX2lkKTsgJGNoZWNrVXNlcklEQ2xhc3MgPSBDbGFzc2VzQXNpZ246OndoZXJlKCJceDYzXDE1NFx4NjFceDczXHg3M1wxMzdcMTUxXDE0NCIsICRjbGFzc19pZCktPndoZXJlKCJceDc1XDE2M1wxNDVceDcyXDEzN1x4NjlcMTQ0IiwgJHVzZXJfaWQpLT5maXJzdCgpOyBpZiAoJGNoZWNrSWZHcmFkZSkgeyByZXR1cm4gcmVkaXJlY3QoIlw1N1wxNjBceDcyXDE0NVwxNjZcMTUxXHg2NVwxNjdcNTVceDY3XDE2Mlx4NjFcMTQ0XDE0NVx4MmYiIC4gJHJ1YnJpY19pZCAuICJcNTciIC4gJGNsYXNzX2lkIC4gIlw1NyIgLiAkYWN0X2lkIC4gIlx4MmYiIC4gJHVzZXJfaWQpOyB9IGVsc2UgeyBpZiAoISRjbGFzc0RhdGEpIHsgcmV0dXJuIHJlZGlyZWN0KCJceDJmXDE0NFwxNDFceDczXHg2OFwxNDJcMTU3XHg2MVx4NzJcMTQ0Iik7IH0gZWxzZSB7IGlmICghJGNoZWNrVXNlcklEQ2xhc3MpIHsgcmV0dXJuIHJlZGlyZWN0KCJcNTdceDY0XDE0MVwxNjNcMTUwXHg2MlwxNTdcMTQxXHg3Mlx4NjQiKTsgfSBlbHNlIHsgaWYgKCEkcnVicmljRGF0YS0+aXNFbXB0eSgpKSB7IHJldHVybiB2aWV3KCJceDczXDE3MVx4NzNceDc0XHg2NVwxNTVceDcwXHg2MVwxNDdceDY1XDE2M1w1Nlx4NzJcMTY1XDE0Mlx4NzJcMTUxXDE0M1x4MmRceDY3XDE2MlwxNDFcMTQ0XDE0NSIsIGFycmF5KCJceDY0XDE0MVwxNjRceDYxIiA9PiAkcnVicmljRGF0YSwgIlwxNjJcMTY1XHg2Mlx4NzJcMTUxXHg2M1x4NWZceDY5XDE0NCIgPT4gJHJ1YnJpY19pZCwgIlwxNjBcMTQxXHg3MlwxNjRceDQ0XDE0MVwxNjRcMTQxIiA9PiAkcGFydERhdGEsICJceDYzXDE2Mlx4NjlceDc0XHg2NVwxNjJceDY5XHg2MVx4NDRceDYxXHg3NFx4NjEiID0+ICRjcml0ZXJpYURhdGEsICJcMTQ2XDE2NVwxNTRceDZjXDE1Nlx4NjFcMTU1XHg2NSIgPT4gJHVzZXJEYXRhLT5uYW1lLCAiXHg3M1wxNjRcMTY1XHg2NFwxNDVceDZlXHg3NFwxMTFceDQ0IiA9PiAkdXNlckRhdGEtPmlkLCAiXDE0M1wxNTRceDYxXDE2M1wxNjNceDZlXHg2MVx4NmRceDY1IiA9PiAkY2xhc3NEYXRhLT5jbGFzc25hbWUsICJceDYxXDE0M1wxNjRceDY5XDE2NlwxNTFcMTY0XHg3OVwxMTZceDYxXHg2ZFwxNDUiID0+ICRhY3Rpdml0eURhdGEtPmV4X25hbWUpKTsgfSBlbHNlIHsgcmV0dXJuIHJlZGlyZWN0KCJceDJmXDE0NFx4NjFcMTYzXHg2OFwxNDJceDZmXHg2MVx4NzJcMTQ0Iik7IH0gfSB9IH0gfSBwdWJsaWMgZnVuY3Rpb24gZGlzcGxheVJ1YnJpY0RCKCRpZCkgeyAkcnVicmljRGF0YSA9IERCOjp0YWJsZSgiXHg3Mlx4NzVceDYyXHg3MlwxNTFceDYzXHg3MyIpLT53aGVyZSgiXDE1MVx4NjQiLCAkaWQpLT5nZXQoKTsgJHBhcnREYXRhID0gREI6OnRhYmxlKCJceDcyXDE2NVwxNDJcMTYyXHg2OVx4NjNcMTM3XHg3MFx4NjFceDcyXHg3NFwxNjMiKS0+d2hlcmUoIlwxNjJceDc1XDE0Mlx4NzJceDY5XHg2M1wxMzdcMTUxXDE0NCIsICRpZCktPmdldCgpOyAkY3JpdGVyaWFEYXRhID0gREI6OnRhYmxlKCJceDcyXDE2NVwxNDJceDcyXHg2OVwxNDNceDVmXDE0M1wxNjJceDY5XHg3NFwxNDVceDcyXDE1MVx4NjFceDczIiktPndoZXJlKCJcMTYyXDE2NVwxNDJcMTYyXHg2OVx4NjNceDVmXHg2OVx4NjQiLCAkaWQpLT5nZXQoKTsgaWYgKCEkcnVicmljRGF0YS0+aXNFbXB0eSgpKSB7IHJldHVybiB2aWV3KCJceDczXHg3OVwxNjNcMTY0XHg2NVx4NmRcMTYwXDE0MVx4NjdceDY1XDE2M1x4MmVcMTYyXDE2NVwxNDJcMTYyXDE1MVx4NjNcNTVceDcwXHg3Mlx4NjVceDc2XDE1MVwxNDVceDc3IiwgYXJyYXkoIlwxNDRceDYxXDE2NFx4NjEiID0+ICRydWJyaWNEYXRhLCAiXDE2MFx4NjFcMTYyXDE2NFx4NDRcMTQxXDE2NFwxNDEiID0+ICRwYXJ0RGF0YSwgIlx4NjNcMTYyXDE1MVwxNjRceDY1XDE2Mlx4NjlcMTQxXDEwNFwxNDFcMTY0XDE0MSIgPT4gJGNyaXRlcmlhRGF0YSkpOyB9IGVsc2UgeyByZXR1cm4gcmVkaXJlY3QoIlx4MmZcMTQ0XHg2MVx4NzNcMTUwXDE0MlwxNTdceDYxXDE2Mlx4NjQiKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBlZGl0UnVicmljREIoJGlkKSB7ICRydWJyaWNEYXRhID0gREI6OnRhYmxlKCJcMTYyXHg3NVwxNDJceDcyXHg2OVwxNDNceDczIiktPndoZXJlKCJceDY5XHg2NCIsICRpZCktPmdldCgpOyAkcGFydERhdGEgPSBEQjo6dGFibGUoIlwxNjJceDc1XHg2MlwxNjJceDY5XHg2M1x4NWZceDcwXHg2MVwxNjJceDc0XHg3MyIpLT53aGVyZSgiXHg3MlwxNjVceDYyXHg3MlwxNTFcMTQzXDEzN1x4NjlcMTQ0IiwgJGlkKS0+Z2V0KCk7ICRjcml0ZXJpYURhdGEgPSBEQjo6dGFibGUoIlwxNjJcMTY1XDE0MlwxNjJceDY5XDE0M1wxMzdceDYzXHg3Mlx4NjlcMTY0XHg2NVx4NzJcMTUxXDE0MVx4NzMiKS0+d2hlcmUoIlx4NzJcMTY1XDE0Mlx4NzJceDY5XDE0M1wxMzdceDY5XHg2NCIsICRpZCktPmdldCgpOyBpZiAoISRydWJyaWNEYXRhLT5pc0VtcHR5KCkpIHsgcmV0dXJuIHZpZXcoIlx4NzNcMTcxXHg3M1wxNjRceDY1XHg2ZFwxNjBceDYxXDE0N1x4NjVceDczXHgyZVwxNDVcMTQ0XDE1MVx4NzRcNTVcMTYyXHg3NVwxNDJcMTYyXDE1MVwxNDMiLCBhcnJheSgiXHg2NFwxNDFcMTY0XDE0MSIgPT4gJHJ1YnJpY0RhdGEsICJceDcwXDE0MVwxNjJcMTY0XHg0NFwxNDFceDc0XDE0MSIgPT4gJHBhcnREYXRhLCAiXHg2M1x4NzJceDY5XHg3NFx4NjVceDcyXHg2OVwxNDFcMTA0XDE0MVwxNjRceDYxIiA9PiAkY3JpdGVyaWFEYXRhLCAiXHg2OVwxNDQiID0+ICRpZCkpOyB9IGVsc2UgeyByZXR1cm4gcmVkaXJlY3QoIlx4MmZceDY0XDE0MVx4NzNceDY4XDE0Mlx4NmZcMTQxXHg3Mlx4NjQiKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBwdWJsaXNoR3JhZGUoUmVxdWVzdCAkcmVxdWVzdCkgeyAkdG90YWxQYXJ0ID0gJHJlcXVlc3QtPmlucHV0KCJceDcwXDE2NFwxNjRceDZmXHg3NFx4NjFcMTU0Iik7ICRzY29yZSA9ICRyZXF1ZXN0LT5pbnB1dCgiXHg2Nlx4NjlceDZlXDE0MVwxNTRcMTM3XHg3M1x4NjNcMTU3XHg3MlwxNDUiKTsgJGZlZWRiYWNrID0gJHJlcXVlc3QtPmlucHV0KCJceDY2XHg2NVwxNDVcMTQ0XHg2MlwxNDFcMTQzXHg2YlwxMzciKTsgJHVfaWQgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NzNceDc0XDE2NVx4NjRcMTQ1XHg2ZVwxNjRceDVmXDE1MVx4NjQiKTsgJHJfaWQgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NzJcMTY1XHg2Mlx4NzJceDY5XDE0M1wxMzdceDY5XDE0NCIpOyAkY2xhc3NfaWQgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NjNceDZjXHg2MVwxNjNceDczXDEzN1x4NjlcMTQ0Iik7ICRhY3RfaWQgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NjFcMTQzXHg3NFx4NWZcMTUxXHg2NCIpOyAkYWN0X25hbWUgPSAkcmVxdWVzdC0+aW5wdXQoIlx4NjFceDYzXHg3NFwxNTFceDc2XDE1MVx4NzRcMTcxXHg1Zlx4NmVcMTQxXDE1NVx4NjUiKTsgJGNoZWNrX3dlaWdodCA9ICRyZXF1ZXN0LT5pbnB1dCgiXDE2N1wxNDVcMTUxXDE0N1wxNTBcMTY0XDEwM1wxNTBcMTQ1XHg2M1x4NmIiKTsgJHZhbGlkYXRlZCA9IFZhbGlkYXRvcjo6bWFrZSgkcmVxdWVzdC0+YWxsKCksIGFycmF5KCJcMTYwXHg3NFx4NzRcMTU3XDE2NFwxNDFceDZjXHgyZVw1MiIgPT4gIlwxNjJceDY1XDE2MVx4NzVcMTUxXDE2MlwxNDVcMTQ0IiksIGFycmF5KCJcMTYwXDE2NFx4NzRcMTU3XHg3NFx4NjFceDZjXHgyZVw1Mlw1NlwxNjJcMTQ1XDE2MVwxNjVcMTUxXHg3MlwxNDVcMTQ0IiA9PiAiXDEyNFx4NjhcMTQ1XHgyMFwxMDNceDcyXDE1MVx4NzRcMTQ1XDE2MlwxNTFcMTQxXHgyMFx4NjZceDY5XHg2NVx4NmNceDY0XHgyMFwxNTFceDczXHgyMFx4NzJceDY1XDE2MVx4NzVcMTUxXDE2MlwxNDVcMTQ0XHgyZSIpKTsgJGNoZWNrSWZHcmFkZSA9IERCOjp0YWJsZSgiXDE2MlwxNjVceDYyXDE2Mlx4NjlcMTQzXDEzN1x4NjdceDcyXDE0MVx4NjRcMTQ1XDE2MyIpLT53aGVyZSgiXHg2OVx4NjRceDVmXDE2MlwxNjVcMTQyXHg3Mlx4NjlceDYzIiwgJHJfaWQpLT53aGVyZSgiXHg3NVx4NWZceDY5XHg2NCIsICR1X2lkKS0+d2hlcmUoIlwxNDNcMTU0XHg2MVx4NzNcMTYzXDEzN1x4NjlceDY0IiwgJGNsYXNzX2lkKS0+d2hlcmUoIlx4NjFcMTQzXHg3NFx4NWZceDY5XDE0NCIsICRhY3RfaWQpLT53aGVyZSgiXHg3NFx4NmZcMTY0XDE0MVx4NmNceDVmXHg3M1wxNDNceDZmXDE2MlwxNDUiLCAiXHgyMVx4M2QiLCAiXDExNlx4MmZceDQxIiktPmZpcnN0KCk7IGlmICgkdmFsaWRhdGVkLT5mYWlscygpKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY1XDE2MlwxNjJcMTU3XHg3MlwxNjMiID0+ICR2YWxpZGF0ZWQtPmVycm9ycygpLT5maXJzdCgpKSk7IH0gZWxzZSB7IGlmICgkY2hlY2tJZkdyYWRlKSB7IHJldHVybiByZWRpcmVjdCgiXDU3XHg3MFx4NzJcMTQ1XHg3Nlx4NjlcMTQ1XDE2N1x4MmRceDY3XDE2Mlx4NjFceDY0XHg2NVx4MmYiIC4gJHJfaWQgLiAiXDU3IiAuICRjbGFzc19pZCAuICJceDJmIiAuICRhY3RfaWQgLiAiXHgyZiIgLiAkdV9pZCk7IH0gZWxzZSB7ICRjb25kaXRpb25zID0gYXJyYXkoIlwxNjVceDVmXDE1MVwxNDQiID0+ICR1X2lkLCAiXDE1MVx4NjRcMTM3XHg3Mlx4NzVceDYyXDE2Mlx4NjlceDYzIiA9PiAkcl9pZCwgIlwxNDNcMTU0XHg2MVwxNjNcMTYzXHg1ZlwxNTFceDY0IiA9PiAkY2xhc3NfaWQsICJceDYxXDE0M1wxNjRceDVmXDE1MVwxNDQiID0+ICRhY3RfaWQpOyBSdWJyaWNHcmFkZXM6OndoZXJlKCRjb25kaXRpb25zKS0+dXBkYXRlKGFycmF5KCJcMTY0XDE1N1wxNjRceDYxXDE1NFwxMzdceDczXDE0M1x4NmZceDcyXDE0NSIgPT4gJHNjb3JlLCAiXDE2Mlx4NjFcMTU2XDE1MyIgPT4gJycsICJcMTQ2XDE0NVwxNDVceDY0XHg2Mlx4NjFcMTQzXDE1MyIgPT4gJGZlZWRiYWNrLCAiXHg2MVwxNDNceDc0XHg1ZlwxNTZcMTQxXDE1NVwxNDUiID0+ICRhY3RfbmFtZSwgIlwxNDNcMTYyXHg2NVwxNDFceDc0XDE0NVwxNDRceDVmXDE0Mlx4NzkiID0+IFNlc3Npb246OmdldCgiXDE1Nlx4NjFceDZkXHg2NSIpKSk7IGZvcmVhY2ggKCR0b3RhbFBhcnQgYXMgJHRwaW5kZXggPT4gJHRwKSB7ICRzYXZlUGFydCA9IG5ldyBQYXJ0R3JhZGVzKCk7ICRzYXZlUGFydC0+dV9pZCA9ICR1X2lkOyAkc2F2ZVBhcnQtPmlkX3J1YnJpYyA9ICRyX2lkOyAkc2F2ZVBhcnQtPmlkX3BhcnQgPSAkdHBpbmRleDsgJHNhdmVQYXJ0LT5hY3RfaWQgPSAkYWN0X2lkOyAkc2F2ZVBhcnQtPnRvdGFsX3B0cyA9ICR0cDsgJHNhdmVQYXJ0LT5hdmdfcHRzID0gbnVsbDsgJHNhdmVQYXJ0LT53ZWlnaHRlZF9hdmcgPSBudWxsOyAkc2F2ZVBhcnQtPnNhdmUoKTsgfSByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE2M1x4NzVcMTQzXDE0M1wxNDVceDczXDE2MyIgPT4gIlwxMDdceDcyXHg2MVwxNDRcMTQ1XDQwXDE1N1x4NjZceDIwXHg1M1x4NzRcMTY1XHg2NFwxNDVceDZlXHg3NFx4MjBceDcwXDE2NVwxNDJceDZjXHg2OVwxNjNcMTUwXDE0NVwxNDRcNDBceDczXHg3NVx4NjNceDYzXHg2NVwxNjNcMTYzXHg2Nlx4NzVcMTU0XDE1NFwxNzFceDJlIikpOyB9IH0gfSBwdWJsaWMgZnVuY3Rpb24gZ3JhZGVQcmV2aWV3KCRydWJyaWNfaWQsICRjbGFzc19pZCwgJGFjdF9pZCwgJHVzZXJfaWQpIHsgJHJ1YnJpY0RhdGEgPSBSdWJyaWNHcmFkZXM6OmpvaW4oIlwxNjJceDc1XDE0MlwxNjJceDY5XDE0M1x4NzMiLCAiXHg3Mlx4NzVcMTQyXDE2Mlx4NjlcMTQzXHg1Zlx4NjdceDcyXDE0MVx4NjRcMTQ1XHg3M1x4MmVcMTUxXDE0NFx4NWZceDcyXHg3NVx4NjJcMTYyXHg2OVwxNDMiLCAiXDc1IiwgIlwxNjJcMTY1XDE0Mlx4NzJceDY5XDE0M1x4NzNceDJlXDE1MVwxNDQiKS0+d2hlcmUoIlx4NzJcMTY1XHg2Mlx4NzJceDY5XHg2M1x4NzNceDJlXDE1MVwxNDQiLCAkcnVicmljX2lkKS0+d2hlcmUoIlwxNjJceDc1XDE0MlwxNjJcMTUxXHg2M1x4NWZceDY3XHg3Mlx4NjFcMTQ0XHg2NVwxNjNceDJlXDE2NVx4NWZceDY5XDE0NCIsICR1c2VyX2lkKS0+d2hlcmUoIlx4NjFceDYzXDE2NFwxMzdcMTUxXHg2NCIsICRhY3RfaWQpLT5nZXQoKTsgJHBhcnREYXRhID0gUGFydEdyYWRlczo6am9pbigiXDE2Mlx4NzVcMTQyXDE2Mlx4NjlcMTQzXHg1ZlwxNjBceDYxXHg3Mlx4NzRcMTYzIiwgZnVuY3Rpb24gKCRqb2luKSB7ICRqb2luLT5vbigiXHg3MFx4NjFcMTYyXDE2NFx4NWZceDY3XDE2MlwxNDFcMTQ0XDE0NVx4NzNcNTZcMTUxXDE0NFx4NWZceDcyXDE2NVwxNDJcMTYyXHg2OVx4NjMiLCAiXHgzZCIsICJcMTYyXHg3NVwxNDJcMTYyXDE1MVwxNDNceDVmXDE2MFwxNDFcMTYyXHg3NFwxNjNceDJlXDE2MlwxNjVceDYyXDE2MlwxNTFcMTQzXDEzN1wxNTFcMTQ0IiktPm9uKCJceDcwXDE0MVwxNjJcMTY0XHg1Zlx4NjdcMTYyXHg2MVwxNDRcMTQ1XDE2M1x4MmVceDY5XHg2NFx4NWZcMTYwXDE0MVx4NzJceDc0IiwgIlw3NSIsICJcMTYyXDE2NVwxNDJcMTYyXDE1MVwxNDNcMTM3XHg3MFx4NjFcMTYyXHg3NFwxNjNcNTZceDY5XDE0NCIpOyB9KS0+d2hlcmUoIlwxNjJceDc1XHg2Mlx4NzJceDY5XHg2M1x4NWZceDcwXDE0MVx4NzJcMTY0XDE2M1x4MmVceDcyXHg3NVwxNDJceDcyXHg2OVwxNDNceDVmXDE1MVx4NjQiLCAkcnVicmljX2lkKS0+d2hlcmUoIlwxNjBcMTQxXHg3Mlx4NzRcMTM3XHg2N1x4NzJcMTQxXHg2NFwxNDVceDczXHgyZVx4NzVcMTM3XDE1MVwxNDQiLCAkdXNlcl9pZCktPndoZXJlKCJceDYxXHg2M1x4NzRceDVmXDE1MVx4NjQiLCAkYWN0X2lkKS0+Z2V0KCk7ICRjcml0ZXJpYURhdGEgPSBEQjo6dGFibGUoIlx4NzJcMTY1XDE0Mlx4NzJceDY5XHg2M1x4NWZcMTQzXDE2MlwxNTFceDc0XDE0NVx4NzJcMTUxXHg2MVwxNjMiKS0+d2hlcmUoIlx4NzJceDc1XDE0Mlx4NzJcMTUxXHg2M1x4NWZcMTUxXDE0NCIsICRydWJyaWNfaWQpLT5nZXQoKTsgJHNjb3JlRGF0YSA9IERCOjp0YWJsZSgiXHg2M1wxNjJcMTUxXHg3NFwxNDVceDcyXDE1MVx4NjFceDVmXDE0N1wxNjJceDYxXDE0NFwxNDVceDczIiktPndoZXJlKCJceDY5XHg2NFx4NWZcMTYyXHg3NVx4NjJceDcyXDE1MVwxNDMiLCAkcnVicmljX2lkKS0+d2hlcmUoIlwxNjVcMTM3XHg2OVx4NjQiLCAkdXNlcl9pZCktPndoZXJlKCJceDYxXHg2M1x4NzRcMTM3XDE1MVx4NjQiLCAkYWN0X2lkKS0+Z2V0KCk7ICRjbGFzc0RhdGEgPSBDbGFzc2VzOjpmaW5kKCRjbGFzc19pZCk7ICR1c2VyRGF0YSA9IFVzZXJzOjpmaW5kKCR1c2VyX2lkKTsgJGNoZWNrVXNlcklEQ2xhc3MgPSBDbGFzc2VzQXNpZ246OndoZXJlKCJcMTQzXHg2Y1wxNDFceDczXHg3M1x4NWZcMTUxXHg2NCIsICRjbGFzc19pZCktPndoZXJlKCJceDc1XHg3M1x4NjVcMTYyXDEzN1wxNTFceDY0IiwgJHVzZXJfaWQpLT5maXJzdCgpOyBpZiAoISRjbGFzc0RhdGEpIHsgcmV0dXJuIHJlZGlyZWN0KCJceDJmXHg2NFwxNDFcMTYzXHg2OFx4NjJcMTU3XHg2MVwxNjJceDY0Iik7IH0gZWxzZSB7IGlmICghJGNoZWNrVXNlcklEQ2xhc3MpIHsgcmV0dXJuIHJlZGlyZWN0KCJceDJmXHg2NFwxNDFceDczXHg2OFwxNDJceDZmXDE0MVwxNjJcMTQ0Iik7IH0gZWxzZSB7IGlmICghJHJ1YnJpY0RhdGEtPmlzRW1wdHkoKSkgeyByZXR1cm4gdmlldygiXDE2M1x4NzlceDczXHg3NFx4NjVcMTU1XHg3MFx4NjFcMTQ3XDE0NVx4NzNceDJlXHg2N1wxNjJceDYxXHg2NFwxNDVcNTVceDcwXDE2MlwxNDVceDc2XDE1MVwxNDVcMTY3IiwgYXJyYXkoIlwxNDRcMTQxXDE2NFx4NjEiID0+ICRydWJyaWNEYXRhLCAiXHg3MlwxNjVceDYyXHg3Mlx4NjlcMTQzXDEzN1x4NjlcMTQ0IiA9PiAkcnVicmljX2lkLCAiXHg3MFx4NjFcMTYyXHg3NFwxMDRcMTQxXDE2NFwxNDEiID0+ICRwYXJ0RGF0YSwgIlx4NjNcMTYyXHg2OVwxNjRcMTQ1XDE2MlwxNTFcMTQxXHg0NFwxNDFceDc0XDE0MSIgPT4gJGNyaXRlcmlhRGF0YSwgIlx4NzNceDYzXDE1N1x4NzJcMTQ1XDEwNFwxNDFceDc0XHg2MSIgPT4gJHNjb3JlRGF0YSwgIlx4NjZceDc1XHg2Y1x4NmNceDZlXHg2MVx4NmRceDY1IiA9PiAkdXNlckRhdGEtPm5hbWUsICJceDczXDE2NFwxNjVceDY0XDE0NVwxNTZcMTY0XHg0OVx4NDQiID0+ICR1c2VyRGF0YS0+aWQsICJceDYzXHg2Y1wxNDFceDczXDE2M1wxNTZceDYxXDE1NVwxNDUiID0+ICRjbGFzc0RhdGEtPmNsYXNzbmFtZSkpOyB9IGVsc2UgeyByZXR1cm4gcmVkaXJlY3QoIlw1N1x4NjRcMTQxXHg3M1wxNTBcMTQyXHg2ZlwxNDFceDcyXDE0NCIpOyB9IH0gfSB9IHB1YmxpYyBmdW5jdGlvbiBDbGFzc0VkaXRGZXRjaCgpIHsgaWYgKFNlc3Npb246OmdldCgiXHg2MVwxNDRceDZkXDE1MVx4NmUiKSA9PSAiXDE0MVx4NjRcMTU1XHg2OVwxNTYiIHx8IFNlc3Npb246OmdldCgiXHg2MVwxNDRceDZkXHg2OVx4NmUiKSA9PSAiXHg2Y1x4NmZcMTY3XHg1ZlwxNDFcMTQ0XDE1NVx4NjlceDZlIikgeyAkQ2xhc3NEYXRhID0gREI6OnRhYmxlKCJcMTQzXDE1NFx4NjFcMTYzXDE2M1wxNDVcMTYzIiktPndoZXJlKCJcMTYzXHg3NFx4NjFcMTY0XDE2NVx4NzMiLCAnJyktPmdldCgpOyB9IGVsc2VpZiAoU2Vzc2lvbjo6Z2V0KCJceDYxXDE0NFx4NmRceDY5XDE1NiIpID09ICJcMTYwXDE2MlwxNTdcMTQ2IikgeyAkQ2xhc3NEYXRhID0gREI6OnRhYmxlKCJceDYzXDE1NFwxNDFceDczXDE2M1x4NjVceDczIiktPndoZXJlKCJceDZmXHg3N1x4NmVceDY1XHg3MlwxMzdcMTUxXHg2NCIsIFNlc3Npb246OmdldCgiXHg3NVx4NzNcMTQ1XDE2MlwxNTZcMTQxXHg2ZFx4NjUiKSktPndoZXJlKCJceDczXDE2NFx4NjFceDc0XDE2NVwxNjMiLCAnJyktPmdldCgpOyB9IHJldHVybiBEYXRhVGFibGVzOjpvZigkQ2xhc3NEYXRhKS0+YWRkSW5kZXhDb2x1bW4oKS0+YWRkQ29sdW1uKCJceDUzXDE0M1x4NjhceDY1XHg2NFx4NzVcMTU0XHg2NSIsIGZ1bmN0aW9uICgkcm93KSB7ICRjbGFzc190aW1lID0gREI6OnRhYmxlKCJceDc3XHg2NVx4NjVcMTUzXDEzN1x4NjRcMTQxXHg3OVwxNjMiKS0+d2hlcmUoIlx4NjNcMTU0XDE0MVwxNjNceDczXHg1ZlwxNTFcMTQ0IiwgJHJvdy0+c2NoZWR1bGVfaWQpLT5nZXQoKTsgJGRhdGFQYXNzZWQgPSBhcnJheSgpOyAkY3VycmVudFMgPSAnJzsgJGN1cnJlbnRFID0gJyc7IGZvcmVhY2ggKCRjbGFzc190aW1lIGFzICR0aW1lRGF0YSkgeyAkdGltZVMgPSBkYXRlKCJceDY4XDcyXDE1MVx4NDEiLCBzdHJ0b3RpbWUoJHRpbWVEYXRhLT5zdGFydCkpOyAkdGltZUUgPSBkYXRlKCJceDY4XHgzYVx4NjlcMTAxIiwgc3RydG90aW1lKCR0aW1lRGF0YS0+ZW5kKSk7ICRjdXJyZW50UyA9ICR0aW1lUzsgJGN1cnJlbnRFID0gJHRpbWVFOyAkZGF5ID0gJHRpbWVEYXRhLT5kYXk7IHN3aXRjaCAoJGRheSkgeyBjYXNlICJcMTE1XHg2ZlwxNTZceDY0XHg2MVx4NzkiOiAkZGF5U3RyaW5nID0gIlwxMTUiOyBicmVhazsgY2FzZSAiXDEyNFwxNjVceDY1XHg3M1wxNDRcMTQxXHg3OSI6ICRkYXlTdHJpbmcgPSAiXHg1NCI7IGJyZWFrOyBjYXNlICJcMTI3XDE0NVx4NjRceDZlXHg2NVx4NzNceDY0XDE0MVwxNzEiOiAkZGF5U3RyaW5nID0gIlx4NTciOyBicmVhazsgY2FzZSAiXDEyNFwxNTBceDc1XHg3Mlx4NzNceDY0XDE0MVx4NzkiOiAkZGF5U3RyaW5nID0gIlwxMjRceDQ4IjsgYnJlYWs7IGNhc2UgIlwxMDZceDcyXHg2OVwxNDRceDYxXDE3MSI6ICRkYXlTdHJpbmcgPSAiXDEwNiI7IGJyZWFrOyBjYXNlICJcMTIzXDE0MVwxNjRcMTY1XHg3MlwxNDRceDYxXDE3MSI6ICRkYXlTdHJpbmcgPSAiXDEyM1x4NjFcMTY0IjsgYnJlYWs7IGNhc2UgIlwxMjNceDc1XHg2ZVwxNDRcMTQxXHg3OSI6ICRkYXlTdHJpbmcgPSAiXHg1MyI7IGJyZWFrOyB9ICRkYXRhUGFzc2VkW10gPSAnJyAuICRkYXlTdHJpbmc7IH0gJGRhdGFQYXNzZWRbXSA9ICJceDIwIiAuICRjdXJyZW50UyAuICJceDIwXDU1XDQwIiAuICRjdXJyZW50RSAuICJcNDAiOyBpZiAoJGRhdGFQYXNzZWQpIHsgcmV0dXJuICRkYXRhUGFzc2VkOyB9IH0pLT5hZGRDb2x1bW4oIlx4NzJcMTY1XHg2MlwxNjJceDY5XHg2MyIsIGZ1bmN0aW9uICgkcm93KSB7ICRydWJyaWNOYW1lID0gREI6OnRhYmxlKCJcMTYyXHg3NVwxNDJceDcyXDE1MVx4NjNceDczIiktPndoZXJlKCJcMTUxXHg2NCIsICRyb3ctPnJ1YnJpY19hc3NpZ25lZCktPnZhbHVlKCJcMTYyXDE2NVwxNDJcMTYyXHg2OVx4NjNceDVmXHg2ZVwxNDFcMTU1XHg2NSIpOyByZXR1cm4gIlx4M2NceDc0XDE0NFx4M2VcNDB7JHJ1YnJpY05hbWV9XHgyMFw3NFx4MmZceDc0XHg2NFx4M2UiOyB9KS0+YWRkQ29sdW1uKCJceDYxXDE0M1x4NzRcMTUxXDE1N1x4NmUiLCBmdW5jdGlvbiAoJHJvdykgeyBpZiAoU2Vzc2lvbjo6Z2V0KCJcMTQxXDE0NFx4NmRcMTUxXHg2ZSIpID09ICJcMTQxXHg2NFwxNTVcMTUxXDE1NiIgfHwgU2Vzc2lvbjo6Z2V0KCJceDYxXDE0NFx4NmRcMTUxXHg2ZSIpID09ICJcMTU0XHg2Zlx4NzdcMTM3XHg2MVwxNDRceDZkXHg2OVwxNTYiKSB7ICRidG4gPSAiXDc0XHg2NFwxNTFceDc2XDQwXHg2M1x4NmNceDYxXDE2M1x4NzNcNzVceDIyXDE0MlwxNjRceDZlXDU1XDE0N1wxNjJceDZmXHg3NVx4NzBcNDBcMTQ0XHg3MlwxNTdceDcwXDE1NFwxNDVceDY2XHg3NFw0Mlx4M2VcMTJceDIwXHgyMFw0MFx4MjBceDIwXHgyMFw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFw0MFx4MjBcNDBceDNjXDE0Mlx4NzVceDc0XHg3NFx4NmZcMTU2XDQwXHg3NFwxNzFcMTYwXHg2NVw3NVx4MjJcMTQyXDE2NVx4NzRcMTY0XHg2ZlwxNTZceDIyXHgyMFx4NjNceDZjXHg2MVx4NzNcMTYzXDc1XHgyMlwxNDJcMTY0XHg2ZVx4MjBceDYyXHg3NFx4NmVcNTVcMTYwXHg3MlwxNTFcMTU1XDE0MVwxNjJcMTcxXDQwXDE0NFx4NzJcMTU3XDE2MFx4NjRceDZmXHg3N1x4NmVceDJkXHg3NFwxNTdceDY3XHg2N1x4NmNcMTQ1XDQyXDQwXHg2NFx4NjFcMTY0XDE0MVw1NVwxNjRcMTU3XHg2N1x4NjdceDZjXHg2NVw3NVw0Mlx4NjRceDcyXHg2Zlx4NzBceDY0XHg2ZlwxNjdcMTU2XHgyMlx4MjBceDYxXDE2Mlx4NjlcMTQxXHgyZFx4NjhceDYxXDE2M1wxNjBceDZmXHg3MFwxNjVceDcwXHgzZFx4MjJcMTY0XHg3Mlx4NzVceDY1XHgyMlw0MFwxNDFceDcyXDE1MVwxNDFcNTVcMTQ1XDE3MFx4NzBceDYxXDE1NlwxNDRceDY1XDE0NFx4M2RceDIyXHg2NlwxNDFcMTU0XHg3M1wxNDVceDIyXDc2XHhhXHgyMFw0MFw0MFw0MFx4MjBcNDBcNDBcNDBcNDBceDIwXDQwXHgyMFw0MFx4MjBceDIwXDQwXHg1M1wxNDVcMTY0XHg3NFwxNTFceDZlXHg2N1x4NzNceGFceDIwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBcNDBceDIwXDQwXHgyMFw0MFw0MFw0MFw0MFw0MFw3NFw1N1x4NjJcMTY1XHg3NFx4NzRcMTU3XDE1Nlw3Nlx4YVw0MFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFw0MFw0MFw0MFx4MjBceDIwXDQwXDQwXHgyMFx4M2NceDY0XHg2OVx4NzZceDIwXHg2M1wxNTRcMTQxXHg3M1wxNjNcNzVcNDJcMTQ0XDE2Mlx4NmZcMTYwXHg2NFwxNTdceDc3XDE1Nlw1NVx4NmRcMTQ1XDE1Nlx4NzVcNDBceDY0XDE2Mlx4NmZceDcwXDE1NFwxNDVceDY2XDE2NFw0Mlw3Nlx4YVw0MFw0MFw0MFw0MFx4MjBceDIwXDQwXHgyMFx4MjBceDIwXHgyMFw0MFx4MjBceDIwXDQwXDQwXDQwXDQwXHgzY1x4NjFceDIwXDE0M1x4NmNceDYxXDE2M1x4NzNcNzVceDIyXDE0NFwxNjJceDZmXDE2MFwxNDRcMTU3XDE2N1x4NmVcNTVceDY5XDE2NFx4NjVcMTU1XDQwXHg0M1wxNTRceDYxXDE2M1x4NzNceDQ1XHg2NFwxNTFceDc0XDEwMlx4NzRceDZlXDQyXHgyMFwxNDRcMTQxXHg3NFwxNDFcNTVcMTUxXDE0NFw3NVw0MiIgLiAkcm93LT5pZCAuICJcNDJceDIwXHg2OFwxNjJceDY1XHg2Nlw3NVx4MjJceDIzXHgyMlx4M2VceDQ1XDE0NFwxNTFcMTY0XDQwXHg0M1x4NmNcMTQxXDE2M1x4NzNceDIwXHg1M1wxNDNcMTUwXDE0NVx4NjRcMTY1XHg2Y1x4NjVceDNjXDU3XDE0MVx4M2VcMTJceDIwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFw0MFx4MjBceDIwXHgyMFw0MFx4MjBcNDBcNDBcNDBcNDBcNDBceDNjXHg2MVx4MjBceDYzXHg2Y1x4NjFcMTYzXDE2M1w3NVw0MlwxNDRcMTYyXDE1N1x4NzBceDY0XDE1N1wxNjdcMTU2XHgyZFx4NjlcMTY0XDE0NVwxNTVceDIwXHg0MVwxNDRcMTQ0XDExNlwxNDVceDc3XDEwNVx4NzhceDcwXHg2NVwxNjJcMTUxXHg2ZFx4NjVceDZlXHg3NFw0Mlx4MjBcMTUwXHg3Mlx4NjVcMTQ2XDc1XDQyXHgyM1w0Mlx4MjBcMTQ0XHg2MVwxNjRcMTQxXHgyZFx4NjlceDY0XDc1XHgyMiIgLiAkcm93LT5pZCAuICJceDIyXHgzZVx4NTVceDcwXHg2Y1wxNTdcMTQxXHg2NFw0MFx4NGVcMTQ1XHg3N1x4MjBcMTA1XHg3OFwxNjBcMTQ1XDE2Mlx4NjlceDZkXHg2NVx4NmVceDc0XHgzY1w1N1x4NjFcNzZceGFceDIwXDQwXDQwXDQwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBcNDBcNDBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFw3NFwxNDFceDIwXHg2M1wxNTRceDYxXHg3M1wxNjNceDNkXHgyMlwxNDRceDcyXDE1N1x4NzBceDY0XDE1N1x4NzdcMTU2XHgyZFx4NjlcMTY0XHg2NVwxNTVcNDJceDIwXHg2OFx4NzJcMTQ1XHg2Nlw3NVx4MjJceDJmXDE0NVx4NmVcMTYyXDE1N1x4NmNcMTU0XDE0NVwxNDRceDJkXDE1NFwxNTFcMTYzXHg3NFx4MmYiIC4gJHJvdy0+aWQgLiAiXDQyXDQwXDE0NFwxNDFcMTY0XDE0MVx4MmRcMTUxXHg2NFw3NVx4MjIiIC4gJHJvdy0+aWQgLiAiXDQyXDQwXHg3NFx4NjFceDcyXHg2N1x4NjVcMTY0XHgyMFw3NVw0MFx4MjJceDVmXHg2Mlx4NmNcMTQxXDE1NlwxNTNceDIyXDQwXDc2XHg1NlwxNTFceDY1XHg3N1x4MjBcMTAxXDE0M1x4NjNcMTU3XHg3NVx4NmVceDc0XHg3M1w0MFx4NDVceDZlXHg3Mlx4NmZcMTU0XHg2Y1x4NjVceDY0XHgzY1x4MmZcMTQxXHgzZVwxMlw0MFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFx4MjBcNDBceDIwXDQwXHgyMFw0MFx4MjBceDNjXHg2MVw0MFwxNDNceDZjXHg2MVwxNjNceDczXDc1XDQyXDE0NFwxNjJceDZmXHg3MFwxNDRceDZmXDE2N1x4NmVceDJkXHg2OVwxNjRceDY1XDE1NVx4MjBcMTY2XHg2OVwxNDVceDc3XDEwNVx4NzhcMTYwXDE0NVwxNjJcMTUxXDE1NVwxNDVcMTU2XDE2NFx4NzNceDIyXHgyMFx4NjhceDcyXDE0NVwxNDZceDNkXHgyMlx4MjNcNDJcNDBcMTQ0XDE0MVwxNjRceDYxXDU1XDE1MVx4NjRceDNkXDQyIiAuICRyb3ctPmlkIC4gIlx4MjJcNzZcMTI2XHg2OVwxNDVceDc3XHgyMFx4NDNcMTU0XDE0MVx4NzNceDczXHgyMFx4NDVceDc4XDE2MFwxNDVcMTYyXHg2OVx4NmRcMTQ1XHg2ZVx4NzRceDczXDc0XHgyZlwxNDFceDNlXDEyXDQwXHgyMFx4MjBcNDBcNDBceDIwXDQwXDQwXDQwXDQwXDQwXHgyMFw0MFw0MFx4MjBceDIwXHgyMFx4MjBceDNjXHg2MVx4MjBcMTQzXDE1NFwxNDFcMTYzXDE2M1x4M2RceDIyXHg2NFwxNjJceDZmXHg3MFx4NjRceDZmXHg3N1x4NmVceDJkXDE1MVwxNjRcMTQ1XHg2ZFx4MjBceDcyXDE0NVx4NmRceDZmXHg3Nlx4NjVceDUyXHg3NVx4NjJcMTYyXDE1MVx4NjNcNDJceDIwXDE1MFx4NzJceDY1XHg2Nlx4M2RceDIyXHgyM1w0Mlx4MjBcMTQ0XDE0MVwxNjRcMTQxXDU1XDE1MVx4NjRceDNkXHgyMiIgLiAkcm93LT5pZCAuICJceDIyXHgzZVx4NTJceDY1XDE1NVwxNTdceDc2XDE0NVx4MjBcMTIyXDE2NVwxNDJceDcyXHg2OVwxNDNcNzRceDJmXHg2MVx4M2VcMTJcNDBcNDBceDIwXHgyMFx4MjBcNDBceDIwXDQwXHgyMFx4MjBcNDBcNDBcNDBceDIwXDQwXDQwXDQwXHgyMFx4M2NcMTQxXHgyMFwxNDNcMTU0XHg2MVwxNjNcMTYzXHgzZFx4MjJceDY0XDE2MlwxNTdcMTYwXHg2NFwxNTdceDc3XHg2ZVw1NVx4NjlcMTY0XHg2NVx4NmRcNDBceDYxXHg3MlwxNDNceDY4XHg2OVx4NzZceDY1XDEwMlwxNjRceDZlXDQyXDQwXDE1MFx4NzJceDY1XDE0Nlw3NVw0Mlw0M1w0Mlw0MFx4NjRcMTQxXHg3NFx4NjFceDJkXDE1MVwxNDRcNzVceDIyIiAuICRyb3ctPmlkIC4gIlx4MjJceDNlXDEwMVwxNjJcMTQzXDE1MFwxNTFcMTY2XDE0NVx4MjBceDQzXDE1NFx4NjFcMTYzXDE2M1w3NFw1N1wxNDFceDNlXDEyXHgyMFx4MjBcNDBceDIwXDQwXDQwXHgyMFw0MFx4MjBceDIwXDQwXHgyMFw0MFw0MFw0MFw0MFx4MjBceDIwXHgzY1x4NjFceDIwXHg2M1wxNTRceDYxXHg3M1x4NzNceDNkXHgyMlx4NjRcMTYyXHg2Zlx4NzBcMTQ0XHg2ZlwxNjdcMTU2XHgyZFwxNTFceDc0XDE0NVwxNTVcNDBcMTU1XHg2MVx4NzNcMTYzXHg1NVx4NmVceDY1XHg2ZVwxNjJcMTU3XHg2Y1x4NmNcMTAyXDE2NFx4NmVcNDJcNDBcMTUwXDE2Mlx4NjVcMTQ2XHgzZFw0Mlw0M1x4MjJceDIwXDE0NFx4NjFcMTY0XHg2MVx4MmRceDY5XHg2NFx4M2RcNDIiIC4gJHJvdy0+aWQgLiAiXDQyXDc2XHg0ZFx4NjFceDczXDE2M1x4MjBcMTI1XDE1NlwxNDVcMTU2XDE2Mlx4NmZceDZjXHg2Y1wxNTVceDY1XHg2ZVx4NzRcNzRceDJmXDE0MVx4M2VcMTJcNDBcNDBcNDBcNDBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBceDIwXHgzY1w1N1x4NjRcMTUxXDE2Nlw3NlwxMlw0MFx4MjBceDIwXHgyMFx4MjBcNDBcNDBceDIwXHgyMFw0MFx4MjBcNDBcNDBcNDBceDNjXDU3XDE0NFwxNTFceDc2XDc2IjsgfSBlbHNlIHsgJGJ0biA9ICJcNzRceDY0XDE1MVx4NzZcNDBceDYzXHg2Y1wxNDFcMTYzXHg3M1w3NVx4MjJceDYyXDE2NFx4NmVcNTVcMTQ3XHg3MlwxNTdcMTY1XHg3MFw0MFx4NjRceDcyXHg2Zlx4NzBceDZjXDE0NVwxNDZceDc0XHgyMlw3Nlx4YVw0MFw0MFw0MFx4MjBcNDBcNDBceDIwXHgyMFw0MFx4MjBceDIwXDQwXDQwXDQwXDQwXHgyMFw3NFx4NjJceDc1XHg3NFx4NzRcMTU3XHg2ZVx4MjBceDc0XDE3MVwxNjBcMTQ1XHgzZFw0MlwxNDJcMTY1XHg3NFwxNjRcMTU3XHg2ZVw0Mlx4MjBceDYzXDE1NFx4NjFceDczXHg3M1x4M2RcNDJcMTQyXDE2NFx4NmVcNDBceDYyXHg3NFx4NmVceDJkXDE2MFwxNjJcMTUxXHg2ZFwxNDFceDcyXHg3OVx4MjBceDY0XHg3Mlx4NmZcMTYwXDE0NFx4NmZceDc3XHg2ZVx4MmRcMTY0XDE1N1wxNDdceDY3XDE1NFx4NjVceDIyXHgyMFx4NjRcMTQxXHg3NFwxNDFcNTVcMTY0XHg2Zlx4NjdcMTQ3XDE1NFwxNDVcNzVceDIyXHg2NFx4NzJceDZmXHg3MFwxNDRceDZmXDE2N1x4NmVceDIyXDQwXHg2MVx4NzJcMTUxXDE0MVw1NVx4NjhceDYxXHg3M1wxNjBceDZmXHg3MFx4NzVceDcwXHgzZFw0MlwxNjRceDcyXDE2NVx4NjVceDIyXHgyMFx4NjFceDcyXHg2OVwxNDFceDJkXDE0NVwxNzBcMTYwXDE0MVx4NmVcMTQ0XDE0NVwxNDRceDNkXHgyMlwxNDZceDYxXHg2Y1x4NzNceDY1XDQyXDc2XDEyXHgyMFw0MFx4MjBcNDBcNDBcNDBcNDBcNDBcNDBcNDBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFx4NTNcMTQ1XHg3NFwxNjRceDY5XDE1Nlx4NjdceDczXDEyXDQwXHgyMFw0MFw0MFx4MjBcNDBceDIwXHgyMFw0MFw0MFx4MjBceDIwXHgyMFw0MFx4MjBceDIwXHgzY1x4MmZcMTQyXDE2NVwxNjRcMTY0XHg2ZlwxNTZcNzZcMTJceDIwXHgyMFx4MjBceDIwXDQwXDQwXDQwXDQwXDQwXDQwXDQwXHgyMFx4MjBcNDBcNDBcNDBceDNjXHg2NFwxNTFcMTY2XHgyMFx4NjNcMTU0XDE0MVwxNjNceDczXHgzZFw0MlwxNDRceDcyXDE1N1x4NzBcMTQ0XDE1N1wxNjdceDZlXDU1XDE1NVx4NjVcMTU2XDE2NVw0MFx4NjRceDcyXDE1N1wxNjBceDZjXHg2NVwxNDZceDc0XHgyMlx4M2VceGFcNDBcNDBcNDBcNDBcNDBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFx4MjBcNDBceDIwXDc0XDE0MVx4MjBcMTQzXHg2Y1wxNDFcMTYzXDE2M1x4M2RceDIyXHg2NFwxNjJcMTU3XDE2MFwxNDRcMTU3XHg3N1x4NmVcNTVcMTUxXDE2NFwxNDVceDZkXDQwXDEwM1x4NmNceDYxXHg3M1x4NzNcMTA1XDE0NFx4NjlceDc0XHg0Mlx4NzRcMTU2XDQyXDQwXHg2NFwxNDFcMTY0XHg2MVx4MmRcMTUxXDE0NFw3NVw0MiIgLiAkcm93LT5pZCAuICJceDIyXHgyMFx4NjhcMTYyXDE0NVwxNDZcNzVceDIyXHgyM1x4MjJcNzZcMTA1XDE0NFwxNTFceDc0XDQwXHg0M1x4NmNcMTQxXHg3M1wxNjNcNDBcMTIzXHg2M1wxNTBceDY1XHg2NFx4NzVceDZjXHg2NVx4M2NcNTdcMTQxXDc2XDEyXHgyMFw0MFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFw0MFw0MFw0MFx4MjBceDIwXHgyMFw0MFx4MjBceDNjXDE0MVx4MjBcMTQzXDE1NFx4NjFceDczXDE2M1w3NVx4MjJcMTQ0XHg3MlwxNTdcMTYwXDE0NFx4NmZcMTY3XDE1Nlw1NVx4NjlcMTY0XDE0NVx4NmRcNDBceDQxXDE0NFwxNDRceDRlXDE0NVwxNjdceDQ1XHg3OFwxNjBceDY1XHg3Mlx4NjlceDZkXDE0NVx4NmVceDc0XDQyXDQwXDE1MFwxNjJceDY1XDE0Nlw3NVw0Mlx4MjNceDIyXHgyMFx4NjRcMTQxXDE2NFwxNDFceDJkXDE1MVx4NjRceDNkXDQyIiAuICRyb3ctPmlkIC4gIlw0Mlw3Nlx4NTVcMTYwXHg2Y1x4NmZceDYxXDE0NFx4MjBcMTE2XDE0NVx4NzdcNDBceDRkXHg2ZlwxNDRceDc1XDE1NFwxNDVcNzRcNTdceDYxXDc2XDEyXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFx4MjBceDIwXDQwXDQwXDQwXHgyMFx4MjBceDIwXDQwXHgyMFw3NFx4NjFcNDBceDYzXDE1NFwxNDFcMTYzXHg3M1x4M2RcNDJcMTQ0XHg3Mlx4NmZceDcwXDE0NFwxNTdcMTY3XDE1Nlw1NVx4NjlceDc0XDE0NVwxNTVceDIwXHg2M1wxNjJcMTQ1XHg2MVx4NzRcMTQ1XDExNlx4NjVceDc3XHg0NVwxNzBceDcwXHg2NVwxNjJcMTUxXHg2ZFx4NjVcMTU2XDE2NFx4MjJceDIwXDE1MFx4NzJcMTQ1XHg2Nlx4M2RceDIyXHgyM1x4MjJcNDBceDY0XDE0MVwxNjRcMTQxXDU1XDE1MVx4NjRcNzVcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlx4M2VceDQzXHg3Mlx4NjVceDYxXHg3NFx4NjVcNDBcMTE2XDE0NVx4NzdceDIwXDExNVwxNTdceDY0XDE2NVwxNTRceDY1XHgzY1x4MmZceDYxXDc2XDEyXDQwXHgyMFx4MjBcNDBcNDBceDIwXDQwXHgyMFw0MFw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFx4MjBcNDBcNzRceDYxXDQwXDE0M1x4NmNcMTQxXDE2M1x4NzNceDNkXDQyXHg2NFx4NzJcMTU3XDE2MFwxNDRcMTU3XDE2N1wxNTZcNTVceDY5XHg3NFwxNDVcMTU1XDQwXDE2NlwxNTFcMTQ1XHg3N1wxMDVceDc4XHg3MFx4NjVcMTYyXHg2OVx4NmRcMTQ1XHg2ZVwxNjRceDczXHgyMlx4MjBceDY4XHg3MlwxNDVcMTQ2XDc1XDQyXDQzXDQyXDQwXDE0NFx4NjFceDc0XHg2MVx4MmRcMTUxXDE0NFw3NVw0MiIgLiAkcm93LT5pZCAuICJcNDJceDNlXHg1Nlx4NjlceDY1XHg3N1w0MFx4NDNceDZjXDE0MVwxNjNceDczXDQwXHg0NVwxNzBcMTYwXDE0NVx4NzJceDY5XHg2ZFx4NjVceDZlXHg3NFx4NzNcNzRceDJmXDE0MVx4M2VcMTJcNDBcNDBcNDBceDIwXDQwXDQwXHgyMFx4MjBcNDBceDIwXDQwXDQwXHgyMFw0MFw0MFw0MFx4M2NceDJmXHg2NFx4NjlceDc2XDc2XDEyXHgyMFx4MjBcNDBceDIwXHgyMFx4MjBcNDBcNDBceDIwXHgyMFw0MFx4MjBceDIwXDQwXDc0XDU3XHg2NFx4NjlcMTY2XHgzZSI7IH0gcmV0dXJuICRidG47IH0pLT5yYXdDb2x1bW5zKGFycmF5KCJcMTQxXHg2M1wxNjRceDY5XHg2Zlx4NmUiLCAiXHg3MlwxNjVcMTQyXDE2MlwxNTFceDYzIiwgIlwxMjNcMTQzXDE1MFx4NjVcMTQ0XHg3NVwxNTRceDY1IikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBSdWJyaWNCb29rRmV0Y2goKSB7ICRSdWJyaWNCb29rID0gREI6OnRhYmxlKCJcMTYyXHg3NVwxNDJceDcyXHg2OVx4NjNceDczIiktPndoZXJlTnVsbCgiXHg3M1wxNjRceDYxXHg3NFwxNjVceDczIiktPmdldCgpOyByZXR1cm4gRGF0YVRhYmxlczo6b2YoJFJ1YnJpY0Jvb2spLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlx4NjFcMTQzXHg3NFwxNTFceDZmXDE1NiIsIGZ1bmN0aW9uICgkcm93KSB7ICRidG4gPSAiXHgzY1wxNDRcMTUxXDE2Nlx4MjBceDYzXDE1NFx4NjFcMTYzXHg3M1x4M2RceDIyXHg2MlwxNjRcMTU2XHgyZFx4NjdcMTYyXDE1N1x4NzVcMTYwXHgyMFx4NjRcMTYyXHg2ZlwxNjBcMTU0XDE0NVwxNDZceDc0XHgyMlx4M2VceGFcMTFceDlcMTFcMTFceDlceDlceDNjXDE0Mlx4NzVceDc0XDE2NFwxNTdcMTU2XDQwXHg3NFx4NzlceDcwXHg2NVw3NVx4MjJcMTQyXDE2NVx4NzRceDc0XHg2ZlwxNTZcNDJceDIwXDE0M1x4NmNcMTQxXDE2M1wxNjNcNzVceDIyXHg2Mlx4NzRcMTU2XHgyMFwxNDJceDc0XHg2ZVw1NVwxNjBceDcyXDE1MVwxNTVceDYxXHg3MlwxNzFcNDBceDY0XHg3MlwxNTdceDcwXHg2NFwxNTdceDc3XDE1Nlx4MmRceDc0XHg2ZlwxNDdceDY3XHg2Y1wxNDVceDIyXHgyMFx4NjRcMTQxXHg3NFwxNDFceDJkXHg3NFx4NmZcMTQ3XDE0N1wxNTRceDY1XDc1XDQyXHg2NFx4NzJcMTU3XHg3MFx4NjRceDZmXHg3N1wxNTZcNDJcNDBcMTQxXHg3Mlx4NjlceDYxXDU1XDE1MFx4NjFcMTYzXHg3MFx4NmZcMTYwXHg3NVx4NzBcNzVceDIyXDE2NFwxNjJceDc1XDE0NVw0Mlw0MFx4NjFcMTYyXHg2OVwxNDFcNTVceDY1XDE3MFwxNjBcMTQxXDE1Nlx4NjRceDY1XHg2NFx4M2RcNDJcMTQ2XDE0MVx4NmNceDczXHg2NVw0Mlw3NlwxMlx4OVx4OVwxMVx4OVwxMVwxMVx4OVx4NTNcMTQ1XDE2NFx4NzRceDY5XDE1NlwxNDdcMTYzXHhhXDExXHg5XDExXDExXHg5XHg5XHgzY1w1N1x4NjJcMTY1XDE2NFwxNjRceDZmXDE1Nlx4M2VcMTJcMTFcMTFcMTFceDlceDlceDlcNzRcMTQ0XDE1MVx4NzZceDIwXDE0M1wxNTRceDYxXDE2M1wxNjNceDNkXHgyMlwxNDRceDcyXDE1N1x4NzBcMTQ0XHg2ZlwxNjdcMTU2XDU1XHg2ZFx4NjVceDZlXHg3NVw0MFx4NjRcMTYyXHg2Zlx4NzBceDZjXHg2NVwxNDZcMTY0XHgyMlx4M2VceGFcMTFceDlcMTFcMTFceDlcMTFcMTFcNzRcMTQxXDQwXHg2M1x4NmNcMTQxXHg3M1wxNjNcNzVceDIyXDE0NFwxNjJceDZmXHg3MFwxNDRceDZmXHg3N1wxNTZcNTVceDY5XDE2NFx4NjVceDZkXHgyMFwxNjJcMTY1XDE0MlwxNjJcMTUxXHg2M1x4NDFceDczXDE2M1wxNTFcMTQ3XHg2ZVwxMDNceDZjXHg2OVwxNDNceDZiXHgyMlx4MjBceDY0XHg2MVwxNjRcMTQxXDU1XHg2OVx4NjRcNzVcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlx4MjBcMTUwXHg3MlwxNDVcMTQ2XHgzZFw0Mlw0M1w0Mlw0MFwxNDRceDYxXHg3NFx4NjFcNTVceDc0XHg2Zlx4NjdcMTQ3XHg2Y1wxNDVceDNkXHgyMlwxNTVceDZmXHg2NFwxNDFceDZjXDQyXHgyMFx4NjRceDYxXHg3NFwxNDFceDJkXHg3NFwxNDFcMTYyXDE0N1x4NjVceDc0XDc1XHgyMlx4MjNceDYxXHg3M1wxNjNceDY5XHg2N1wxNTZceDUyXHg3NVx4NjJceDcyXHg2OVx4NjNcMTE1XDE1N1wxNDRcMTQxXDE1NFw0Mlx4M2VceDQxXHg3M1wxNjNceDY5XDE0N1x4NmVceDIwXDEyMlx4NzVcMTQyXDE2Mlx4NjlcMTQzXHgyMFwxNjRcMTU3XDQwXDEwM1wxNTRceDYxXDE2M1wxNjNcNzRceDJmXDE0MVx4M2VcMTJcMTFceDlcMTFcMTFcMTFcMTFcMTFcNzRceDYxXHgyMFwxNDNceDZjXDE0MVwxNjNcMTYzXHgzZFw0Mlx4NjRceDcyXHg2Zlx4NzBceDY0XHg2Zlx4NzdcMTU2XHgyZFwxNTFcMTY0XDE0NVx4NmRcNDJcNDBcMTUwXDE2Mlx4NjVcMTQ2XDc1XDQyXHgyZlx4NzJceDc1XDE0MlwxNjJceDY5XDE0M1w1NVwxNjBceDcyXHg2NVx4NzZcMTUxXHg2NVx4NzdcNTciIC4gJHJvdy0+aWQgLiAiXHgyMlx4MjBcMTY0XDE0MVx4NzJceDY3XHg2NVx4NzRcNzVceDIyXDEzN1wxNDJceDZjXDE0MVwxNTZcMTUzXDQyXHgzZVx4NTBceDcyXDE0NVwxNjZcMTUxXDE0NVx4NzdcNDBceDUyXDE2NVx4NjJceDcyXHg2OVwxNDNceDNjXDU3XDE0MVw3NlwxMlwxMVx4OVwxMVx4OVx4OVwxMVwxMVx4M2NceDYxXHgyMFwxNDNceDZjXHg2MVx4NzNcMTYzXHgzZFx4MjJceDY0XHg3Mlx4NmZceDcwXDE0NFx4NmZcMTY3XDE1Nlw1NVwxNTFcMTY0XHg2NVwxNTVceDIyXHgyMFx4NjhceDcyXHg2NVx4NjZcNzVcNDJcNTdcMTQ1XHg2NFwxNTFceDc0XDU1XHg3Mlx4NzVceDYyXHg3Mlx4NjlcMTQzXDU3IiAuICRyb3ctPmlkIC4gIlw0Mlx4MjBcMTY0XHg2MVx4NzJcMTQ3XDE0NVwxNjRcNzVceDIyXHg1ZlwxNDJceDZjXDE0MVx4NmVceDZiXHgyMlw3Nlx4NDVceDY0XHg2OVwxNjRceDIwXHg1Mlx4NzVceDYyXDE2Mlx4NjlceDYzXHgzY1x4MmZcMTQxXDc2XHhhXHg5XHg5XHg5XHg5XDExXDExXHg5XHgzY1wxNDFceDIwXDE0M1x4NmNceDYxXHg3M1wxNjNcNzVceDIyXHg2NFwxNjJceDZmXDE2MFx4NjRceDZmXDE2N1x4NmVceDJkXHg2OVx4NzRceDY1XHg2ZFw0MFwxNjJceDc1XHg2MlwxNjJceDY5XHg2M1wxMDFceDcyXHg2M1wxNTBcMTUxXDE2Nlx4NjVceDIyXDQwXHg2NFwxNDFceDc0XHg2MVw1NVx4NjlcMTQ0XDc1XDQyIiAuICRyb3ctPmlkIC4gIlw0Mlx4MjBceDIwXHg2OFwxNjJceDY1XHg2Nlx4M2RcNDJcNDNcNDJceDNlXHg0MVx4NzJcMTQzXHg2OFx4NjlceDc2XHg2NVx4MjBcMTIyXDE2NVx4NjJceDcyXHg2OVwxNDNcNzRceDJmXDE0MVx4M2VceGFcMTFcMTFceDlcMTFceDlcMTFceDNjXDU3XDE0NFx4NjlceDc2XHgzZVx4YVwxMVwxMVwxMVx4OVx4OVx4M2NcNTdceDY0XDE1MVwxNjZcNzYiOyByZXR1cm4gJGJ0bjsgfSktPnJhd0NvbHVtbnMoYXJyYXkoIlwxNDFcMTQzXHg3NFwxNTFceDZmXHg2ZSIpKS0+bWFrZSh0cnVlKTsgfSBwdWJsaWMgZnVuY3Rpb24gQ2xhc3NBY2NvdW50RGVsZXRlQWN0aW9uKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGlkID0gJHJlcXVlc3QtPlVzZXJJRDsgQ2xhc3Nlczo6d2hlcmUoIlwxNTFceDY0IiwgJGlkKS0+ZGVsZXRlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTQxXDE2MFwxNjBceDcyXHg2Zlx4NzZceDY1XDE0NCIgPT4gIlwxMDNcMTU0XDE0MVwxNjNceDczXDQwXDE1MFx4NjFcMTYzXHgyMFwxNDJcMTQ1XDE0NVwxNTZceDIwXDE0NFx4NjVcMTU0XDE0NVwxNjRceDY1XHg2NFw0MFwxNjNceDc1XHg2M1wxNDNcMTQ1XHg3M1x4NzNceDY2XHg3NVx4NmNcMTU0XHg3OVw1NiIpKTsgfSBwdWJsaWMgZnVuY3Rpb24gVW5hc3NpZ25SdWJyaWMoUmVxdWVzdCAkcmVxdWVzdCkgeyAkaWQgPSAkcmVxdWVzdC0+VXNlcklEOyAkcmVzdWx0ID0gQ2xhc3Nlczo6d2hlcmUoIlx4NjlcMTQ0IiwgJGlkKS0+dXBkYXRlKGFycmF5KCJceDcyXDE2NVx4NjJcMTYyXHg2OVx4NjNcMTM3XHg2MVx4NzNceDczXDE1MVwxNDdceDZlXHg2NVx4NjQiID0+IG51bGwpKTsgaWYgKCRyZXN1bHQpIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NzVcMTU2XDE0MVwxNjNcMTYzXDE1MVx4NjdcMTU2XDE0NVwxNDQiID0+ICJcMTIyXDE2NVwxNDJcMTYyXDE1MVwxNDNceDIwXDE1MFx4NjFceDczXDQwXHg2Mlx4NjVcMTQ1XHg2ZVx4MjBcMTYyXHg2NVx4NmRceDZmXHg3NlwxNDVceDY0XHgyMFwxNjNcMTY1XHg2M1wxNDNceDY1XHg3M1x4NzNcMTQ2XDE2NVwxNTRceDZjXHg3OVx4MmUiKSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gQ2xhc3NFZGl0YnRuRmV0Y2goUmVxdWVzdCAkcmVxdWVzdCkgeyAkZGF0YSA9IENsYXNzZXM6OmZpbmQoJHJlcXVlc3QtPkN1cGRhdGVidXR0b24pOyAkd2Vla19kYXlzID0gREI6OnRhYmxlKCJcMTY3XHg2NVx4NjVceDZiXHg1Zlx4NjRcMTQxXDE3MVwxNjMiKS0+d2hlcmUoIlx4NjNcMTU0XHg2MVx4NzNceDczXDEzN1x4NjlceDY0IiwgJGRhdGEtPnNjaGVkdWxlX2lkKS0+Z2V0KCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDQzXDE1NFx4NjFcMTYzXHg3M1wxMDRcMTQxXDE2NFx4NjEiID0+ICRkYXRhLCAiXHg1N1wxNDVceDY1XDE1M1x4NDRcMTQxXHg3OVwxNjNcMTM3XHg2NFwxNDFcMTY0XDE0MSIgPT4gJHdlZWtfZGF5cykpOyB9IHB1YmxpYyBmdW5jdGlvbiBmZXRjaENsYXNzKCkgeyAkZGF0YSA9IERCOjp0YWJsZSgiXHg2M1wxNTRcMTQxXHg3M1wxNjNceDY1XHg3MyIpLT5nZXQoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDNceDZjXDE0MVx4NzNcMTYzXHg0NFwxNDFceDc0XHg2MSIgPT4gJGRhdGEpKTsgfSBwdWJsaWMgZnVuY3Rpb24gRWRpdENsYXNzRGF0YShSZXF1ZXN0ICRyZXF1ZXN0KSB7ICR2YWxpZGF0ZWQgPSBWYWxpZGF0b3I6Om1ha2UoJHJlcXVlc3QtPmFsbCgpLCBhcnJheSgiXDE0M1x4NmNcMTQxXHg3M1x4NzNcMTU2XHg2MVwxNTVcMTQ1IiA9PiAiXDE2Mlx4NjVcMTYxXHg3NVwxNTFceDcyXHg2NVx4NjQiLCAiXDE0M1wxNTRcMTQxXHg3M1wxNjNcMTUxXDE1Nlx4NjZcMTU3IiA9PiAiXHg3MlwxNDVceDcxXHg3NVx4NjlcMTYyXHg2NVx4NjQiLCAiXHg2M1wxNTRcMTQxXHg3M1wxNjNcMTExXDEwNCIgPT4gIlwxNjJceDY1XHg3MVwxNjVceDY5XHg3Mlx4NjVcMTQ0IiksIGFycmF5KCJceDYzXHg2Y1wxNDFcMTYzXDE2M1wxNTZceDYxXHg2ZFwxNDVceDJlXHg3Mlx4NjVcMTYxXDE2NVwxNTFcMTYyXDE0NVx4NjQiID0+ICJcMTI0XHg2OFx4NjVcNDBcMTAzXHg2Y1wxNDFceDczXDE2M1x4MjBceDRlXDE0MVwxNTVceDY1XDQwXHg2NlwxNTFcMTQ1XHg2Y1x4NjRcNDBcMTUxXHg3M1w0MFwxNjJceDY1XHg3MVwxNjVceDY5XDE2Mlx4NjVceDY0IiwgIlwxNDNcMTU0XHg2MVwxNjNcMTYzXDE1MVwxNTZcMTQ2XHg2Zlx4MmVceDcyXDE0NVwxNjFceDc1XHg2OVx4NzJcMTQ1XDE0NCIgPT4gIlwxMjRceDY4XDE0NVw0MFx4NDNcMTU0XDE0MVx4NzNceDczXDQwXDExMVx4NmVceDY2XHg2Zlx4MjBceDY2XDE1MVwxNDVcMTU0XHg2NFx4MjBceDY5XHg3M1w0MFwxNjJceDY1XHg3MVx4NzVcMTUxXDE2Mlx4NjVceDY0IiwgIlx4NzBceDY5XHg2M1w1Nlx4NzJcMTQ1XHg3MVx4NzVceDY5XDE2MlwxNDVceDY0IiA9PiAiXDEyNFwxNTBcMTQ1XDQwXHg1MFwxNTFceDYzXDE2NFwxNjVceDcyXDE0NVx4MjBcMTQ2XHg2OVx4NjVcMTU0XDE0NFx4MjBcMTUxXDE2M1x4MjBcMTYyXHg2NVx4NzFcMTY1XHg2OVwxNjJceDY1XHg2NCIsICJceDcwXHg2OVwxNDNcNTZcMTU1XHg2OVwxNTVceDY1XHg3MyIgPT4gIlx4NTRcMTUwXHg2NVw0MFx4NDNcMTU0XDE0MVwxNjNceDczXHgyMFx4NTBcMTUxXDE0M1wxNjRcMTY1XHg3MlwxNDVcNDBcMTU1XDE2NVx4NzNcMTY0XHgyMFx4NjJceDY1XHgyMFx4NjFceDIwXDE0Nlx4NjlcMTU0XDE0NVx4MjBcMTU3XHg2Nlx4MjBceDc0XDE3MVwxNjBceDY1XDcyXDQwXHg2YVwxNjBceDY1XHg2N1w1NFw0MFx4NjdceDY5XHg2Nlx4MmNceDIwXHg3MFwxNTZcMTQ3XHgyY1w0MFx4NGFceDUwXHg0NVx4NDdcNTRceDIwXHg0N1x4NDlcMTA2XDU0XHgyMFx4NTBcMTE2XDEwN1w1NiIpKTsgaWYgKCR2YWxpZGF0ZWQtPmZhaWxzKCkpIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlx4NjVcMTYyXDE2Mlx4NmZcMTYyXHg3MyIgPT4gJHZhbGlkYXRlZC0+ZXJyb3JzKCktPmZpcnN0KCkpKTsgfSBlbHNlIHsgaWYgKCRyZXF1ZXN0LT5tID09ICcnKSB7ICRkYXlfY2hlY2sgPSBEQjo6dGFibGUoIlwxNjdceDY1XHg2NVwxNTNceDVmXHg2NFwxNDFcMTcxXHg3MyIpLT53aGVyZSgiXHg2M1x4NmNceDYxXHg3M1x4NzNcMTM3XDE1MVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJcMTQ0XHg2MVx4NzkiLCAiXDExNVx4NmZcMTU2XHg2NFx4NjFcMTcxIiktPmZpcnN0KCk7IGlmICgkZGF5X2NoZWNrKSB7IERCOjp0YWJsZSgiXDE2N1x4NjVceDY1XDE1M1wxMzdcMTQ0XHg2MVx4NzlceDczIiktPndoZXJlKCJcMTQzXHg2Y1wxNDFcMTYzXDE2M1x4NWZceDY5XHg2NCIsICRyZXF1ZXN0LT5jbGFzc0lEKS0+d2hlcmUoIlwxNDRceDYxXDE3MSIsICJceDRkXDE1N1wxNTZceDY0XHg2MVwxNzEiKS0+ZGVsZXRlKCk7IH0gJG0gPSAiXDE0NlwxNDFcMTU0XDE2M1wxNDUiOyB9IGVsc2UgeyAkbSA9ICRyZXF1ZXN0LT5tOyB9IGlmICgkcmVxdWVzdC0+dCA9PSAnJykgeyAkZGF5X2NoZWNrID0gREI6OnRhYmxlKCJcMTY3XDE0NVx4NjVceDZiXHg1ZlwxNDRceDYxXHg3OVwxNjMiKS0+d2hlcmUoIlwxNDNcMTU0XDE0MVx4NzNcMTYzXDEzN1wxNTFcMTQ0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXHg2NFx4NjFceDc5IiwgIlwxMjRceDc1XDE0NVwxNjNcMTQ0XDE0MVx4NzkiKS0+Zmlyc3QoKTsgaWYgKCRkYXlfY2hlY2spIHsgREI6OnRhYmxlKCJcMTY3XDE0NVx4NjVcMTUzXDEzN1x4NjRceDYxXHg3OVwxNjMiKS0+d2hlcmUoIlx4NjNcMTU0XHg2MVx4NzNcMTYzXHg1Zlx4NjlceDY0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXHg2NFx4NjFcMTcxIiwgIlx4NTRcMTY1XHg2NVx4NzNceDY0XDE0MVx4NzkiKS0+ZGVsZXRlKCk7IH0gJHQgPSAiXHg2Nlx4NjFcMTU0XDE2M1wxNDUiOyB9IGVsc2UgeyAkdCA9ICRyZXF1ZXN0LT50OyB9IGlmICgkcmVxdWVzdC0+dyA9PSAnJykgeyAkZGF5X2NoZWNrID0gREI6OnRhYmxlKCJceDc3XHg2NVx4NjVceDZiXHg1Zlx4NjRcMTQxXHg3OVx4NzMiKS0+d2hlcmUoIlwxNDNceDZjXHg2MVx4NzNceDczXDEzN1x4NjlcMTQ0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXHg2NFx4NjFcMTcxIiwgIlwxMjdcMTQ1XDE0NFwxNTZcMTQ1XDE2M1x4NjRceDYxXHg3OSIpLT5maXJzdCgpOyBpZiAoJGRheV9jaGVjaykgeyBEQjo6dGFibGUoIlx4NzdcMTQ1XHg2NVx4NmJcMTM3XHg2NFwxNDFceDc5XHg3MyIpLT53aGVyZSgiXHg2M1wxNTRceDYxXHg3M1wxNjNceDVmXHg2OVwxNDQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJceDY0XDE0MVx4NzkiLCAiXHg1N1wxNDVceDY0XDE1Nlx4NjVcMTYzXDE0NFwxNDFcMTcxIiktPmRlbGV0ZSgpOyB9ICR3ID0gIlwxNDZceDYxXDE1NFwxNjNceDY1IjsgfSBlbHNlIHsgJHcgPSAkcmVxdWVzdC0+dzsgfSBpZiAoJHJlcXVlc3QtPnRoID09ICcnKSB7ICRkYXlfY2hlY2sgPSBEQjo6dGFibGUoIlwxNjdceDY1XDE0NVwxNTNceDVmXDE0NFwxNDFceDc5XDE2MyIpLT53aGVyZSgiXDE0M1x4NmNceDYxXHg3M1wxNjNcMTM3XHg2OVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJceDY0XDE0MVx4NzkiLCAiXHg1NFwxNTBcMTY1XDE2Mlx4NzNcMTQ0XHg2MVwxNzEiKS0+Zmlyc3QoKTsgaWYgKCRkYXlfY2hlY2spIHsgREI6OnRhYmxlKCJcMTY3XDE0NVwxNDVcMTUzXHg1ZlwxNDRcMTQxXHg3OVwxNjMiKS0+d2hlcmUoIlx4NjNcMTU0XDE0MVwxNjNceDczXDEzN1wxNTFceDY0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXDE0NFx4NjFcMTcxIiwgIlx4NTRcMTUwXDE2NVx4NzJceDczXDE0NFx4NjFceDc5IiktPmRlbGV0ZSgpOyB9ICR0aCA9ICJceDY2XDE0MVx4NmNcMTYzXDE0NSI7IH0gZWxzZSB7ICR0aCA9ICRyZXF1ZXN0LT50aDsgfSBpZiAoJHJlcXVlc3QtPmYgPT0gJycpIHsgJGRheV9jaGVjayA9IERCOjp0YWJsZSgiXHg3N1wxNDVcMTQ1XDE1M1wxMzdceDY0XDE0MVwxNzFceDczIiktPndoZXJlKCJcMTQzXDE1NFwxNDFcMTYzXHg3M1wxMzdceDY5XDE0NCIsICRyZXF1ZXN0LT5jbGFzc0lEKS0+d2hlcmUoIlwxNDRcMTQxXDE3MSIsICJcMTA2XDE2MlwxNTFcMTQ0XHg2MVx4NzkiKS0+Zmlyc3QoKTsgaWYgKCRkYXlfY2hlY2spIHsgREI6OnRhYmxlKCJcMTY3XDE0NVx4NjVcMTUzXHg1Zlx4NjRceDYxXHg3OVwxNjMiKS0+d2hlcmUoIlwxNDNceDZjXDE0MVwxNjNceDczXHg1ZlwxNTFceDY0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXDE0NFwxNDFceDc5IiwgIlx4NDZcMTYyXDE1MVwxNDRceDYxXDE3MSIpLT5kZWxldGUoKTsgfSAkZiA9ICJcMTQ2XHg2MVx4NmNcMTYzXHg2NSI7IH0gZWxzZSB7ICRmID0gJHJlcXVlc3QtPmY7IH0gaWYgKCRyZXF1ZXN0LT5zYXQgPT0gJycpIHsgJGRheV9jaGVjayA9IERCOjp0YWJsZSgiXHg3N1x4NjVcMTQ1XDE1M1wxMzdcMTQ0XDE0MVwxNzFceDczIiktPndoZXJlKCJceDYzXDE1NFwxNDFceDczXHg3M1wxMzdcMTUxXHg2NCIsICRyZXF1ZXN0LT5jbGFzc0lEKS0+d2hlcmUoIlwxNDRcMTQxXDE3MSIsICJcMTIzXHg2MVx4NzRceDc1XHg3MlwxNDRceDYxXHg3OSIpLT5maXJzdCgpOyBpZiAoJGRheV9jaGVjaykgeyBEQjo6dGFibGUoIlwxNjdcMTQ1XDE0NVwxNTNceDVmXHg2NFwxNDFceDc5XHg3MyIpLT53aGVyZSgiXDE0M1wxNTRceDYxXHg3M1x4NzNcMTM3XDE1MVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJcMTQ0XDE0MVwxNzEiLCAiXDEyM1wxNDFcMTY0XHg3NVwxNjJceDY0XHg2MVx4NzkiKS0+ZGVsZXRlKCk7IH0gJHNhdCA9ICJceDY2XHg2MVx4NmNceDczXDE0NSI7IH0gZWxzZSB7ICRzYXQgPSAkcmVxdWVzdC0+c2F0OyB9IGlmICgkcmVxdWVzdC0+cyA9PSAnJykgeyAkZGF5X2NoZWNrID0gREI6OnRhYmxlKCJceDc3XHg2NVx4NjVceDZiXHg1ZlwxNDRcMTQxXHg3OVwxNjMiKS0+d2hlcmUoIlwxNDNceDZjXHg2MVx4NzNcMTYzXDEzN1wxNTFceDY0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXHg2NFwxNDFceDc5IiwgIlx4NTNcMTY1XHg2ZVwxNDRceDYxXHg3OSIpLT5maXJzdCgpOyBpZiAoJGRheV9jaGVjaykgeyBEQjo6dGFibGUoIlx4NzdceDY1XHg2NVwxNTNcMTM3XHg2NFwxNDFceDc5XDE2MyIpLT53aGVyZSgiXHg2M1wxNTRcMTQxXDE2M1wxNjNceDVmXHg2OVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJceDY0XDE0MVwxNzEiLCAiXDEyM1x4NzVcMTU2XHg2NFx4NjFcMTcxIiktPmRlbGV0ZSgpOyB9ICRzID0gIlwxNDZcMTQxXHg2Y1x4NzNceDY1IjsgfSBlbHNlIHsgJHMgPSAkcmVxdWVzdC0+czsgfSAkcmVmX2lkID0gJHJlcXVlc3QtPmNsYXNzSUQ7ICRjbGFzc19pZF9mZXRjaCA9IERCOjp0YWJsZSgiXDE0M1wxNTRcMTQxXHg3M1x4NzNceDY1XDE2MyIpLT53aGVyZSgiXHg3M1wxNDNcMTUwXHg2NVx4NjRceDc1XHg2Y1x4NjVceDVmXHg2OVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPmZpcnN0KCk7ICRlZGl0Q2xhc3MgPSBDbGFzc2VzOjpmaW5kKCRjbGFzc19pZF9mZXRjaC0+aWQpOyAkZWRpdENsYXNzLT5jbGFzc25hbWUgPSAkcmVxdWVzdC0+Y2xhc3NuYW1lOyAkZWRpdENsYXNzLT5jbGFzc2luZm8gPSAkcmVxdWVzdC0+Y2xhc3NpbmZvOyAkZWRpdENsYXNzLT51cGRhdGVkX2J5ID0gU2Vzc2lvbjo6Z2V0KCJcMTU2XHg2MVwxNTVcMTQ1Iik7ICRlZGl0Q2xhc3MtPm0gPSAkbTsgJGVkaXRDbGFzcy0+dCA9ICR0OyAkZWRpdENsYXNzLT53ID0gJHc7ICRlZGl0Q2xhc3MtPnRoID0gJHRoOyAkZWRpdENsYXNzLT5mID0gJGY7ICRlZGl0Q2xhc3MtPnNhdCA9ICRzYXQ7ICRlZGl0Q2xhc3MtPnMgPSAkczsgJGVkaXRDbGFzcy0+c3RhcnQgPSAkcmVxdWVzdC0+c3RhcnQ7ICRlZGl0Q2xhc3MtPmVuZCA9ICRyZXF1ZXN0LT5lbmQ7ICRlZGl0Q2xhc3MtPnNhdmUoKTsgaWYgKCRyZXF1ZXN0LT5tICE9ICcnKSB7ICRkYXlfY2hlY2sgPSBEQjo6dGFibGUoIlx4NzdceDY1XHg2NVwxNTNcMTM3XHg2NFwxNDFcMTcxXHg3MyIpLT53aGVyZSgiXDE0M1x4NmNcMTQxXDE2M1x4NzNcMTM3XDE1MVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJceDY0XDE0MVwxNzEiLCAiXDExNVwxNTdcMTU2XHg2NFwxNDFceDc5IiktPmZpcnN0KCk7IGlmICghJGRheV9jaGVjaykgeyAkTmV3U2NoZWR1bGUgPSBuZXcgd2Vla0RheXMoKTsgJE5ld1NjaGVkdWxlLT5jbGFzc19pZCA9ICRyZWZfaWQ7ICROZXdTY2hlZHVsZS0+ZGF5ID0gIlwxMTVcMTU3XDE1NlwxNDRceDYxXDE3MSI7ICROZXdTY2hlZHVsZS0+c3RhcnQgPSAkcmVxdWVzdC0+c3RhcnQ7ICROZXdTY2hlZHVsZS0+ZW5kID0gJHJlcXVlc3QtPmVuZDsgJE5ld1NjaGVkdWxlLT5zYXZlKCk7IH0gfSBpZiAoJHJlcXVlc3QtPnQgIT0gJycpIHsgJGRheV9jaGVjayA9IERCOjp0YWJsZSgiXDE2N1wxNDVceDY1XDE1M1x4NWZceDY0XDE0MVx4NzlcMTYzIiktPndoZXJlKCJcMTQzXHg2Y1x4NjFcMTYzXDE2M1wxMzdceDY5XDE0NCIsICRyZXF1ZXN0LT5jbGFzc0lEKS0+d2hlcmUoIlwxNDRceDYxXDE3MSIsICJcMTI0XDE2NVx4NjVceDczXHg2NFx4NjFcMTcxIiktPmZpcnN0KCk7IGlmICghJGRheV9jaGVjaykgeyAkTmV3U2NoZWR1bGUgPSBuZXcgd2Vla0RheXMoKTsgJE5ld1NjaGVkdWxlLT5jbGFzc19pZCA9ICRyZWZfaWQ7ICROZXdTY2hlZHVsZS0+ZGF5ID0gIlx4NTRcMTY1XDE0NVx4NzNcMTQ0XDE0MVx4NzkiOyAkTmV3U2NoZWR1bGUtPnN0YXJ0ID0gJHJlcXVlc3QtPnN0YXJ0OyAkTmV3U2NoZWR1bGUtPmVuZCA9ICRyZXF1ZXN0LT5lbmQ7ICROZXdTY2hlZHVsZS0+c2F2ZSgpOyB9IH0gaWYgKCRyZXF1ZXN0LT53ICE9ICcnKSB7ICRkYXlfY2hlY2sgPSBEQjo6dGFibGUoIlwxNjdceDY1XDE0NVwxNTNceDVmXHg2NFx4NjFcMTcxXHg3MyIpLT53aGVyZSgiXDE0M1wxNTRceDYxXHg3M1wxNjNcMTM3XDE1MVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJceDY0XDE0MVwxNzEiLCAiXHg1N1x4NjVceDY0XHg2ZVx4NjVcMTYzXHg2NFx4NjFcMTcxIiktPmZpcnN0KCk7IGlmICghJGRheV9jaGVjaykgeyAkTmV3U2NoZWR1bGUgPSBuZXcgd2Vla0RheXMoKTsgJE5ld1NjaGVkdWxlLT5jbGFzc19pZCA9ICRyZWZfaWQ7ICROZXdTY2hlZHVsZS0+ZGF5ID0gIlwxMjdceDY1XDE0NFwxNTZcMTQ1XHg3M1x4NjRceDYxXHg3OSI7ICROZXdTY2hlZHVsZS0+c3RhcnQgPSAkcmVxdWVzdC0+c3RhcnQ7ICROZXdTY2hlZHVsZS0+ZW5kID0gJHJlcXVlc3QtPmVuZDsgJE5ld1NjaGVkdWxlLT5zYXZlKCk7IH0gfSBpZiAoJHJlcXVlc3QtPnRoICE9ICcnKSB7ICRkYXlfY2hlY2sgPSBEQjo6dGFibGUoIlx4NzdcMTQ1XHg2NVwxNTNcMTM3XDE0NFwxNDFcMTcxXDE2MyIpLT53aGVyZSgiXHg2M1wxNTRcMTQxXDE2M1x4NzNceDVmXHg2OVwxNDQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJceDY0XHg2MVx4NzkiLCAiXDEyNFwxNTBceDc1XHg3Mlx4NzNceDY0XHg2MVx4NzkiKS0+Zmlyc3QoKTsgaWYgKCEkZGF5X2NoZWNrKSB7ICROZXdTY2hlZHVsZSA9IG5ldyB3ZWVrRGF5cygpOyAkTmV3U2NoZWR1bGUtPmNsYXNzX2lkID0gJHJlZl9pZDsgJE5ld1NjaGVkdWxlLT5kYXkgPSAiXDEyNFx4NjhcMTY1XDE2MlwxNjNceDY0XHg2MVwxNzEiOyAkTmV3U2NoZWR1bGUtPnN0YXJ0ID0gJHJlcXVlc3QtPnN0YXJ0OyAkTmV3U2NoZWR1bGUtPmVuZCA9ICRyZXF1ZXN0LT5lbmQ7ICROZXdTY2hlZHVsZS0+c2F2ZSgpOyB9IH0gaWYgKCRyZXF1ZXN0LT5mICE9ICcnKSB7ICRkYXlfY2hlY2sgPSBEQjo6dGFibGUoIlwxNjdceDY1XDE0NVwxNTNcMTM3XHg2NFwxNDFcMTcxXHg3MyIpLT53aGVyZSgiXHg2M1x4NmNceDYxXDE2M1x4NzNcMTM3XDE1MVx4NjQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPndoZXJlKCJceDY0XDE0MVwxNzEiLCAiXDEwNlwxNjJceDY5XHg2NFx4NjFcMTcxIiktPmZpcnN0KCk7IGlmICghJGRheV9jaGVjaykgeyAkTmV3U2NoZWR1bGUgPSBuZXcgd2Vla0RheXMoKTsgJE5ld1NjaGVkdWxlLT5jbGFzc19pZCA9ICRyZWZfaWQ7ICROZXdTY2hlZHVsZS0+ZGF5ID0gIlwxMDZcMTYyXHg2OVwxNDRcMTQxXDE3MSI7ICROZXdTY2hlZHVsZS0+c3RhcnQgPSAkcmVxdWVzdC0+c3RhcnQ7ICROZXdTY2hlZHVsZS0+ZW5kID0gJHJlcXVlc3QtPmVuZDsgJE5ld1NjaGVkdWxlLT5zYXZlKCk7IH0gfSBpZiAoJHJlcXVlc3QtPnNhdCAhPSAnJykgeyAkZGF5X2NoZWNrID0gREI6OnRhYmxlKCJcMTY3XHg2NVwxNDVceDZiXDEzN1x4NjRcMTQxXHg3OVwxNjMiKS0+d2hlcmUoIlwxNDNcMTU0XDE0MVwxNjNcMTYzXDEzN1x4NjlcMTQ0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXDE0NFx4NjFcMTcxIiwgIlwxMjNceDYxXDE2NFwxNjVcMTYyXHg2NFx4NjFceDc5IiktPmZpcnN0KCk7IGlmICghJGRheV9jaGVjaykgeyAkTmV3U2NoZWR1bGUgPSBuZXcgd2Vla0RheXMoKTsgJE5ld1NjaGVkdWxlLT5jbGFzc19pZCA9ICRyZWZfaWQ7ICROZXdTY2hlZHVsZS0+ZGF5ID0gIlwxMjNcMTQxXDE2NFwxNjVcMTYyXDE0NFx4NjFcMTcxIjsgJE5ld1NjaGVkdWxlLT5zdGFydCA9ICRyZXF1ZXN0LT5zdGFydDsgJE5ld1NjaGVkdWxlLT5lbmQgPSAkcmVxdWVzdC0+ZW5kOyAkTmV3U2NoZWR1bGUtPnNhdmUoKTsgfSB9IGlmICgkcmVxdWVzdC0+cyAhPSAnJykgeyAkZGF5X2NoZWNrID0gREI6OnRhYmxlKCJcMTY3XDE0NVx4NjVceDZiXDEzN1x4NjRcMTQxXDE3MVx4NzMiKS0+d2hlcmUoIlwxNDNcMTU0XDE0MVwxNjNceDczXHg1Zlx4NjlceDY0IiwgJHJlcXVlc3QtPmNsYXNzSUQpLT53aGVyZSgiXHg2NFx4NjFceDc5IiwgIlx4NTNceDc1XDE1NlwxNDRcMTQxXHg3OSIpLT5maXJzdCgpOyBpZiAoISRkYXlfY2hlY2spIHsgJE5ld1NjaGVkdWxlID0gbmV3IHdlZWtEYXlzKCk7ICROZXdTY2hlZHVsZS0+Y2xhc3NfaWQgPSAkcmVmX2lkOyAkTmV3U2NoZWR1bGUtPmRheSA9ICJcMTIzXDE2NVx4NmVcMTQ0XDE0MVx4NzkiOyAkTmV3U2NoZWR1bGUtPnN0YXJ0ID0gJHJlcXVlc3QtPnN0YXJ0OyAkTmV3U2NoZWR1bGUtPmVuZCA9ICRyZXF1ZXN0LT5lbmQ7ICROZXdTY2hlZHVsZS0+c2F2ZSgpOyB9IH0gJGFsbF9kYXlfY2hlY2sgPSBEQjo6dGFibGUoIlwxNjdcMTQ1XHg2NVwxNTNceDVmXDE0NFwxNDFcMTcxXDE2MyIpLT53aGVyZSgiXDE0M1wxNTRcMTQxXDE2M1wxNjNceDVmXDE1MVwxNDQiLCAkcmVxdWVzdC0+Y2xhc3NJRCktPmdldCgpOyBmb3JlYWNoICgkYWxsX2RheV9jaGVjayBhcyAkZGF0YSkgeyAkdXBkYXRlVGltZSA9IHdlZWtEYXlzOjpmaW5kKCRkYXRhLT5pZCk7ICR1cGRhdGVUaW1lLT5zdGFydCA9ICRyZXF1ZXN0LT5zdGFydDsgJHVwZGF0ZVRpbWUtPmVuZCA9ICRyZXF1ZXN0LT5lbmQ7ICR1cGRhdGVUaW1lLT5zYXZlKCk7IH0gcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNTFcMTU2XDE2M1wxNDVceDcyXDE2NFwxNDVcMTQ0IiA9PiAiXDEwM1wxNTRcMTQxXHg3M1wxNjNcNDBcMTA0XDE0MVwxNjRceDYxXHgyMFx4NjhcMTQxXHg3M1x4MjBceDYyXHg2NVx4NjVceDZlXHgyMFx4NzVceDcwXHg2NFx4NjFceDc0XDE0NVwxNDRceDJlIikpOyB9IH0gcHVibGljIGZ1bmN0aW9uIHN0b3JlKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGZpbGUgPSAkcmVxdWVzdC0+dXBsb2FkOyAkZmlsZU5hbWUgPSAkZmlsZS0+Z2V0Q2xpZW50T3JpZ2luYWxOYW1lKCk7ICROZXdfbmFtZSA9IHRpbWUoKSAuICRmaWxlTmFtZTsgJGRpciA9ICJcMTYzXDE2NFwxNTdcMTYyXDE0MVx4NjdceDY1XHgyZlwxMTBceDZmXHg2ZFx4NjVceDUwXHg2MVx4NjdceDY1XHg1MFx4NjlceDYzXDE2NFx4NzVcMTYyXDE0NVwxNjNceDJmIjsgJGZpbGUtPm1vdmUoJGRpciwgJE5ld19uYW1lKTsgJHVybCA9IGFzc2V0KCJceDczXHg3NFwxNTdcMTYyXDE0MVx4NjdceDY1XDU3XHg0OFwxNTdceDZkXHg2NVx4NTBceDYxXDE0N1wxNDVceDUwXDE1MVx4NjNceDc0XDE2NVwxNjJceDY1XDE2M1x4MmYiIC4gJE5ld19uYW1lKTsgJENrZWRpdG9yRnVuY051bSA9ICRyZXF1ZXN0LT5pbnB1dCgiXHg0M1wxMTNcMTA1XHg2NFwxNTFcMTY0XHg2Zlx4NzJceDQ2XDE2NVx4NmVceDYzXDExNlwxNjVcMTU1Iik7ICRzdGF0dXMgPSAiXDc0XDE2M1wxNDNceDcyXHg2OVwxNjBcMTY0XHgzZVx4NzdceDY5XDE1NlwxNDRceDZmXDE2N1w1NlwxNjBceDYxXHg3Mlx4NjVceDZlXDE2NFx4MmVcMTAzXHg0YlwxMDVcMTA0XHg0OVwxMjRcMTE3XDEyMlx4MmVceDc0XHg2Zlx4NmZcMTU0XDE2M1w1Nlx4NjNcMTQxXDE1NFwxNTRcMTA2XDE2NVx4NmVceDYzXDE2NFwxNTFceDZmXDE1Nlx4MjhcNDd7JENrZWRpdG9yRnVuY051bX1ceDI3XHgyY1w0MFx4Mjd7JHVybH1ceDI3XDU0XHgyMFw0N1x4NDZceDY5XDE1NFwxNDVceDIwXHg2OFx4NjFceDczXHgyMFx4NjJceDY1XDE0NVwxNTZceDIwXDE2NVwxNjBceDZjXDE1N1wxNDFceDY0XDE0NVwxNDRceDJlXDQ3XDUxXDc0XHgyZlwxNjNceDYzXHg3Mlx4NjlceDcwXHg3NFx4M2UiOyBlY2hvICRzdGF0dXM7IH0gcHVibGljIGZ1bmN0aW9uIEhvbWVQYWdlVXBkYXRlKFJlcXVlc3QgJHJlcXVlc3QpIHsgJHZhbGlkYXRlZCA9IFZhbGlkYXRvcjo6bWFrZSgkcmVxdWVzdC0+YWxsKCksIGFycmF5KCJceDQ4XDE1N1x4NmRceDY1XHg0NVx4NjRcMTUxXHg3NFx4NmZceDcyIiA9PiAiXDE2MlwxNDVcMTYxXDE2NVx4NjlcMTYyXHg2NVwxNDQiKSwgYXJyYXkoIlwxMTBcMTU3XHg2ZFx4NjVcMTA1XDE0NFx4NjlceDc0XHg2ZlwxNjJceDJlXHg3MlwxNDVcMTYxXHg3NVwxNTFcMTYyXHg2NVwxNDQiID0+ICJcMTI0XHg2OFwxNDVceDIwXDEwNVwxNDRceDY5XDE2NFx4NmZcMTYyXHgyMFx4NjZcMTUxXDE0NVwxNTRceDY0XDQwXHg2OVx4NzNceDIwXHg3MlwxNDVceDcxXHg3NVx4NjlceDcyXDE0NVx4NjQiKSk7IGlmICgkdmFsaWRhdGVkLT5mYWlscygpKSB7IHJldHVybiByZWRpcmVjdCgpLT5iYWNrKCktPndpdGhFcnJvcnMoYXJyYXkoIlx4NjVcMTU1XDE2MFwxNjRceDc5XHg1Zlx4NjVceDcyXDE2MlwxNTdceDcyIiA9PiAkdmFsaWRhdGVkLT5lcnJvcnMoKS0+Zmlyc3QoKSkpOyB9IGVsc2UgeyAkSG9tZUVkaXQgPSBIb21lUGFnZTo6ZmluZCgiXDYxIik7ICRIb21lRWRpdC0+SG9tZUNvbnRlbnQgPSAkcmVxdWVzdC0+SG9tZUVkaXRvcjsgJEhvbWVFZGl0LT5zYXZlKCk7IHJldHVybiByZWRpcmVjdCgpLT5iYWNrKCktPndpdGgoYXJyYXkoIlwxNjNceDc1XHg2M1x4NjNceDY1XDE2M1wxNjMiID0+ICJcMTI0XHg2OFwxNDVcNDBceDQ4XDE1N1x4NmRceDY1XDQwXHg1MFwxNDFceDY3XHg2NVw0MFx4NjhcMTQxXHg3M1x4MjBcMTQyXHg2NVwxNDVcMTU2XDQwXDE2NVwxNjBcMTQ0XDE0MVx4NzRcMTQ1XHg2NFx4MmUiKSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gaW5zZXJ0bmV3Q2xhc3NFeFdpdGhFZGl0b3IoUmVxdWVzdCAkcmVxdWVzdCkgeyAkdmFsaWRhdGVkID0gVmFsaWRhdG9yOjptYWtlKCRyZXF1ZXN0LT5hbGwoKSwgYXJyYXkoIlwxNDVcMTcwXDExNlwxNDFceDZkXDE0NVwxMDVceDY0XDE1MVwxNjRcMTU3XHg3MiIgPT4gIlwxNjJcMTQ1XDE2MVx4NzVceDY5XHg3Mlx4NjVcMTQ0IiwgIlx4NjVceDc4XHg2OVx4NjRceDQ1XDE0NFwxNTFceDc0XHg2ZlwxNjIiID0+ICJceDcyXDE0NVx4NzFceDc1XDE1MVx4NzJcMTQ1XHg2NCIsICJceDQ1XDE3MFx4NDVceDY0XDE1MVx4NzRcMTU3XHg3MiIgPT4gIlx4NzJceDY1XDE2MVx4NzVceDY5XHg3Mlx4NjVcMTQ0IiksIGFycmF5KCJcMTQ1XDE3MFx4NGVcMTQxXDE1NVx4NjVcMTA1XDE0NFx4NjlcMTY0XDE1N1wxNjJcNTZceDcyXHg2NVx4NzFcMTY1XDE1MVx4NzJceDY1XHg2NCIgPT4gIlx4NTRceDY4XHg2NVx4MjBcMTA1XHg3OFwxNjBcMTQ1XDE2MlwxNTFcMTU1XHg2NVwxNTZceDc0XDQwXHg0ZVwxNDFceDZkXHg2NVw0MFwxNDZceDY5XHg2NVwxNTRceDY0XDQwXDE1MVwxNjNcNDBcMTYyXHg2NVwxNjFcMTY1XDE1MVwxNjJceDY1XDE0NCIsICJceDY1XHg3OFwxNTFceDY0XHg0NVwxNDRcMTUxXHg3NFx4NmZceDcyXHgyZVwxNjJceDY1XHg3MVx4NzVceDY5XHg3MlwxNDVceDY0IiA9PiAiXHg0NVwxNjJceDcyXHg2ZlwxNjJceDIwXDEyMlwxNDVcMTU0XHg2Zlx4NjFceDY0XDQwXHg3NFx4NjhceDY1XHgyMFwxNjBcMTQxXDE0N1x4NjUiLCAiXDEwNVx4NzhcMTA1XHg2NFwxNTFceDc0XDE1N1wxNjJceDJlXHg3MlwxNDVcMTYxXDE2NVwxNTFceDcyXDE0NVwxNDQiID0+ICJceDU0XHg2OFwxNDVceDIwXDEwNVx4NzhcMTYwXHg2NVx4NzJceDY5XHg2ZFwxNDVceDZlXDE2NFx4NjBcMTYzXDQwXDEwNVx4NjRceDY5XDE2NFwxNTdceDcyXDQwXDE0NlwxNTFceDY1XHg2Y1wxNDRceDIwXHg2OVx4NzNcNDBcMTYyXHg2NVwxNjFceDc1XDE1MVwxNjJcMTQ1XHg2NCIpKTsgaWYgKCR2YWxpZGF0ZWQtPmZhaWxzKCkpIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDVcMTYyXDE2Mlx4NmZcMTYyXHg3MyIgPT4gJHZhbGlkYXRlZC0+ZXJyb3JzKCktPmZpcnN0KCkpKTsgfSBlbHNlIHsgJG5ld0V4ID0gbmV3IGNsYXNzRXgoKTsgJG5ld0V4LT5jbGFzc19pZCA9ICRyZXF1ZXN0LT5leGlkRWRpdG9yOyAkbmV3RXgtPmV4X25hbWUgPSAkcmVxdWVzdC0+ZXhOYW1lRWRpdG9yOyAkbmV3RXgtPkV4Q3JlYXRlZCA9ICRyZXF1ZXN0LT5FeEVkaXRvcjsgJG5ld0V4LT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY5XHg2ZVwxNjNcMTQ1XHg3Mlx4NzRcMTQ1XHg2NCIgPT4gIlx4NGVceDY1XDE2N1x4MjBcMTA1XDE3MFx4NzBcMTQ1XDE2MlwxNTFceDZkXDE0NVwxNTZcMTY0XDQwXDE1MFx4NjFceDczXHgyMFx4NjJcMTQ1XDE0NVwxNTZcNDBceDczXHg3NVx4NjJceDZkXHg2OVx4NzRceDc0XDE0NVx4NjRcNTYiKSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gVmlld0V4cGVyaW1lbnQoUmVxdWVzdCAkcmVxdWVzdCkgeyAkYXBwc19jaGVjayA9IERCOjp0YWJsZSgiXDE2M1x4NmRceDYxXHg3Mlx4NzRcMTU0XDE0MVx4NjJcMTM3XDE0MVx4NzBceDcwXHg3MyIpLT53aGVyZSgiXDE0M1x4NmNcMTQxXDE2M1x4NzNcMTA1XHg3OFx4NWZceDY5XHg2NCIsICRyZXF1ZXN0LT5JRCktPmdldCgpOyBpZiAoJGFwcHNfY2hlY2stPmlzTm90RW1wdHkoKSkgeyAkZGF0YSA9IERCOjp0YWJsZSgiXDE0M1wxNTRcMTQxXHg3M1x4NzNceDVmXDE0NVx4NzhceDY1XDE2MyIpLT5zZWxlY3QoIlx4NjNcMTU0XDE0MVx4NzNcMTYzXHg1ZlwxNDVcMTcwXHg2NVx4NzNceDJlXDUyIiwgIlx4NzNcMTU1XHg2MVx4NzJcMTY0XDE1NFx4NjFcMTQyXHg1ZlwxNDFcMTYwXHg3MFx4NzNceDJlXDUyIiwgIlx4NjNcMTU0XDE0MVwxNjNceDczXHg1ZlwxNDVcMTcwXHg2NVx4NzNcNTZcMTUxXHg2NFx4MjBceDYxXDE2M1x4MjBceDZjXHg2OVwxNTZceDZiXHg0ZVwxNDFceDZkXDE0NSIpLT5qb2luKCJcMTYzXDE1NVx4NjFceDcyXHg3NFx4NmNceDYxXHg2MlwxMzdceDYxXHg3MFx4NzBceDczIiwgIlx4NjNceDZjXDE0MVx4NzNcMTYzXHg1Zlx4NjVceDc4XDE0NVwxNjNcNTZceDY5XHg2NCIsICJceDNkIiwgIlx4NzNcMTU1XHg2MVwxNjJcMTY0XDE1NFx4NjFcMTQyXHg1ZlwxNDFcMTYwXHg3MFwxNjNcNTZcMTQzXHg2Y1x4NjFcMTYzXHg3M1wxMDVcMTcwXDEzN1x4NjlcMTQ0IiktPndoZXJlKCJcMTQzXHg2Y1x4NjFcMTYzXHg3M1x4NWZceDY1XDE3MFx4NjVcMTYzXHgyZVx4NjNcMTU0XDE0MVx4NzNcMTYzXHg1Zlx4NjlceDY0IiwgJHJlcXVlc3QtPklEKS0+Z2V0KCk7ICRkYXRhX3Njb3JlID0gREI6OnRhYmxlKCJcMTQ1XHg3OFwxNjBcMTQ1XHg3MlwxNTFceDZkXHg2NVx4NmVcMTY0XDEzN1wxNjJceDY1XDE2MFwxNTdcMTYyXDE2NFwxNjMiKS0+d2hlcmUoIlx4NDVceDc4XDE2MFx4NjVceDcyXDE1MVx4NmRcMTQ1XHg2ZVwxNjRceDVmXHg2OVx4NjQiLCAkcmVxdWVzdC0+SUQpLT53aGVyZSgiXDE2NVwxNjNcMTQ1XDE2Mlx4NWZcMTUxXHg2NCIsIFNlc3Npb246OmdldCgiXDE2NVx4NzNceDY1XDE2Mlx4NmVceDYxXDE1NVwxNDUiKSktPmZpcnN0KCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDQ0XHg2MVwxNjRceDYxXDEwNVx4NTgiID0+ICRkYXRhLCAiXHg0NFx4NjFcMTY0XHg2MVwxMzdceDczXHg2M1wxNTdceDcyXDE0NSIgPT4gJGRhdGFfc2NvcmUpKTsgfSBlbHNlIHsgJGRhdGEgPSBEQjo6dGFibGUoIlx4NjNcMTU0XHg2MVx4NzNceDczXDEzN1x4NjVcMTcwXDE0NVwxNjMiKS0+c2VsZWN0KCJceDYzXHg2Y1wxNDFceDczXHg3M1wxMzdcMTQ1XHg3OFx4NjVcMTYzXHgyZVx4MmEiLCAiXDE2M1x4NmRceDYxXHg3MlwxNjRceDZjXHg2MVwxNDJcMTM3XDE0MVwxNjBcMTYwXDE2M1x4MmVceDJhIiwgIlx4NjNceDZjXHg2MVx4NzNceDczXHg1Zlx4NjVceDc4XDE0NVx4NzNcNTZcMTUxXHg2NFx4MjBceDYxXDE2M1w0MFx4NmNcMTUxXDE1NlwxNTNcMTE2XDE0MVx4NmRceDY1IiktPmpvaW4oIlx4NzNcMTU1XDE0MVwxNjJceDc0XHg2Y1wxNDFcMTQyXHg1Zlx4NjFceDcwXDE2MFx4NzMiLCAiXHg2M1x4NmNcMTQxXHg3M1wxNjNceDVmXDE0NVx4NzhcMTQ1XDE2M1w1NlwxNTFcMTQ0IiwgIlw3NSIsICJceDczXDE1NVx4NjFcMTYyXDE2NFwxNTRcMTQxXDE0Mlx4NWZcMTQxXHg3MFx4NzBcMTYzXDU2XHg2M1wxNTRcMTQxXHg3M1wxNjNcMTA1XDE3MFx4NWZcMTUxXHg2NCIpLT53aGVyZSgiXDE0M1x4NmNcMTQxXHg3M1x4NzNcMTM3XDE0NVwxNzBceDY1XDE2M1x4MmVceDYzXDE1NFwxNDFceDczXDE2M1x4NWZceDY5XHg2NCIsICRyZXF1ZXN0LT5JRCktPmdldCgpOyAkZGF0YV9zY29yZSA9IERCOjp0YWJsZSgiXHg2NVwxNzBceDcwXDE0NVx4NzJceDY5XDE1NVx4NjVcMTU2XDE2NFwxMzdceDcyXDE0NVx4NzBcMTU3XHg3Mlx4NzRcMTYzIiktPndoZXJlKCJceDQ1XHg3OFx4NzBceDY1XDE2MlwxNTFcMTU1XHg2NVx4NmVceDc0XDEzN1x4NjlceDY0IiwgJHJlcXVlc3QtPklEKS0+d2hlcmUoIlx4NzVceDczXDE0NVwxNjJceDVmXHg2OVwxNDQiLCBTZXNzaW9uOjpnZXQoIlx4NzVcMTYzXHg2NVx4NzJceDZlXDE0MVwxNTVcMTQ1IikpLT5maXJzdCgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDEwNFx4NjFceDc0XDE0MVx4NDVcMTMwIiA9PiAkZGF0YSwgIlx4NDRceDYxXHg3NFx4NjFceDVmXHg3M1x4NjNceDZmXHg3MlwxNDUiID0+ICRkYXRhX3Njb3JlKSk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gQXBwc0ZldGNoKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGRhdGEgPSBEQjo6dGFibGUoIlwxNDNcMTU0XHg2MVx4NzNceDczXHg1ZlwxNDVceDc4XHg2NVx4NzMiKS0+c2VsZWN0KCJceDYzXDE1NFx4NjFceDczXHg3M1wxMzdcMTQ1XHg3OFwxNDVceDczXDU2XDUyIiwgIlwxNjNcMTU1XDE0MVwxNjJcMTY0XDE1NFwxNDFceDYyXDEzN1x4NjFcMTYwXDE2MFwxNjNcNTZcNTIiLCAiXDE0M1x4NmNceDYxXHg3M1x4NzNcMTM3XHg2NVwxNzBcMTQ1XDE2M1x4MmVcMTUxXHg2NFx4MjBcMTQxXHg3M1x4MjBceDZjXHg2OVx4NmVcMTUzXDExNlwxNDFcMTU1XDE0NSIpLT5sZWZ0Sm9pbigiXHg3M1x4NmRcMTQxXDE2Mlx4NzRceDZjXHg2MVx4NjJceDVmXHg2MVx4NzBcMTYwXDE2MyIsICJcMTQzXDE1NFx4NjFcMTYzXHg3M1x4NWZcMTQ1XDE3MFx4NjVcMTYzXHgyZVx4NjlceDY0IiwgIlx4M2QiLCAiXDE2M1x4NmRcMTQxXHg3MlwxNjRceDZjXHg2MVx4NjJceDVmXDE0MVx4NzBceDcwXDE2M1w1Nlx4NjNceDZjXHg2MVx4NzNcMTYzXDEwNVwxNzBceDVmXDE1MVx4NjQiKS0+d2hlcmUoIlwxNDNcMTU0XHg2MVwxNjNcMTYzXDEzN1x4NjVcMTcwXHg2NVwxNjNcNTZcMTUxXHg2NCIsICRyZXF1ZXN0LT5JRCktPmdldCgpOyByZXR1cm4gRGF0YVRhYmxlczo6b2YoJGRhdGEpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlwxMDVceDc4XHg3MFwxNDVceDcyXDE1MVwxNTVceDY1XDE1NlwxNjRceDRlXDE0MVwxNTVcMTQ1IiwgZnVuY3Rpb24gKCRyb3cpIHsgaWYgKCFlbXB0eSgkcm93LT5leF9maWxlKSkgeyAkYnRuID0gIlw3NFx4NjFcNDBceDc0XDE0MVx4NzJceDY3XHg2NVx4NzRceDNkXHgyMlwxMzdcMTQyXDE1NFwxNDFcMTU2XHg2Ylx4MjJceDIwXHg2OFwxNjJcMTQ1XHg2Nlw3NVw0Mlx4NDNcMTU0XHg2MVwxNjNceDczXHg0NVwxNzBceDJmIiAuICRyb3ctPmV4X2ZpbGUgLiAiXHgyMlw3NiIgLiAkcm93LT5leF9uYW1lIC4gIlw3NFx4MmZceDYxXDc2IjsgcmV0dXJuICRidG47IH0gZWxzZSB7IGlmICghZW1wdHkoJHJvdy0+RXhDcmVhdGVkKSkgeyAkYnRuID0gIlx4M2NcMTQxXDQwXHg3NFx4NjFcMTYyXDE0N1x4NjVcMTY0XDc1XHgyMlx4NWZcMTQyXHg2Y1x4NjFcMTU2XDE1M1x4MjJceDIwXDE1MFx4NzJcMTQ1XHg2Nlw3NVw0Mlx4NjVceDc4XDE2MFwxNDVceDcyXHg2OVx4NmRceDY1XHg2ZVwxNjRcNTciIC4gJHJvdy0+bGlua05hbWUgLiAiXDQyXDc2IiAuICRyb3ctPmV4X25hbWUgLiAiXDc0XDU3XHg2MVw3NiI7IHJldHVybiAkYnRuOyB9IH0gfSktPmFkZENvbHVtbigiXHg0MVwxNjBcMTYwIiwgZnVuY3Rpb24gKCRyb3cpIHsgaWYgKCRyb3ctPmFwcF9uYW1lID09ICJcMTA0XDE1MVx4NjdceDY5XDE2NFx4NjFcMTU0XDQwXDEwM1wxNTFceDcyXHg2M1wxNjVcMTUxXHg3NCIpIHsgJGJ0biA9ICJcNzRceDYxXHgyMFx4NzRceDYxXDE2Mlx4NjdceDY1XHg3NFw3NVx4MjJcMTM3XHg2Mlx4NmNcMTQxXDE1NlwxNTNcNDJceDIwXHg2OFx4NzJcMTQ1XHg2Nlx4M2RcNDJceDJmXHg3M1wxNTFceDZkXHg3NVx4NmNceDYxXHg3NFwxNTdcMTYyXDc3XDE0MVx4NzBcMTYwXHgzZFx4NDRcMTAzXDQyXHgyMFx4NjNcMTU0XDE0MVwxNjNceDczXDc1XDQyXDE0MlwxNjRceDZlXHgyMFwxNDJcMTY0XDE1Nlx4MmRceDY0XHg2MVwxNTZceDY3XHg2NVx4NzJceDIyXDc2IiAuICRyb3ctPmFwcF9uYW1lIC4gIlw3NFx4MmZceDYxXDc2IjsgcmV0dXJuICRidG47IH0gaWYgKCRyb3ctPmFwcF9uYW1lID09ICJcMTA0XDE1MVwxNDdcMTUxXDE2NFx4NjFcMTU0XHgyMFwxMDFceDcyXDE0NFwxNjVceDY5XDE1NlwxNTciKSB7ICRidG4gPSAiXHgzY1wxNDFcNDBceDc0XHg2MVx4NzJceDY3XHg2NVx4NzRceDNkXDQyXHg1ZlwxNDJcMTU0XDE0MVwxNTZcMTUzXDQyXDQwXHg2OFwxNjJceDY1XDE0Nlw3NVx4MjJcNTdcMTYzXHg2OVwxNTVcMTY1XHg2Y1x4NjFceDc0XHg2Zlx4NzJceDNmXDE0MVwxNjBcMTYwXDc1XHg0NFwxMDFcNDJcNDBcMTQzXHg2Y1x4NjFcMTYzXHg3M1x4M2RceDIyXHg2Mlx4NzRceDZlXDQwXDE0Mlx4NzRcMTU2XHgyZFwxNDRceDYxXHg2ZVwxNDdcMTQ1XDE2Mlx4MjJceDNlIiAuICRyb3ctPmFwcF9uYW1lIC4gIlw3NFw1N1wxNDFcNzYiOyByZXR1cm4gJGJ0bjsgfSB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXHg0MVx4NzBcMTYwIiwgIlx4NDVcMTcwXHg3MFx4NjVcMTYyXHg2OVx4NmRceDY1XHg2ZVx4NzRceDRlXHg2MVx4NmRceDY1IikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBpbnNlcnRuZXdFeHBlcmltZW50UmVwb3J0KFJlcXVlc3QgJHJlcXVlc3QpIHsgJGNsYXNzSUQgPSAkcmVxdWVzdC0+Y2xhc3NfaWQ7ICR2YWxpZGF0ZWQgPSBWYWxpZGF0b3I6Om1ha2UoJHJlcXVlc3QtPmFsbCgpLCBhcnJheSgiXDEwNVx4NzhcMTYwXDE0NVx4NzJcMTUxXDE1NVx4NjVcMTU2XHg3NFwxMTFcMTA0IiA9PiAiXHg3MlwxNDVcMTYxXDE2NVx4NjlcMTYyXDE0NVwxNDQiLCAiXHg1Mlx4NjVcMTYwXDE1N1x4NzJceDc0XHg0Nlx4NjlceDZjXHg2NSIgPT4gIlx4NzJceDY1XDE2MVx4NzVceDY5XDE2MlwxNDVceDY0IiwgIlx4NTJceDY1XDE2MFx4NmZcMTYyXDE2NFwxMDZcMTUxXDE1NFx4NjUiID0+ICJcMTYyXHg2NVx4NzFceDc1XHg2OVwxNjJcMTQ1XHg2NFx4N2NcMTU1XDE1MVwxNTVceDY1XHg3M1w3Mlx4NzBceDY0XDE0NiIpLCBhcnJheSgiXHg0NVx4NzhcMTYwXDE0NVx4NzJcMTUxXDE1NVx4NjVcMTU2XDE2NFx4NDlcMTA0XDU2XDE2MlwxNDVceDcxXHg3NVx4NjlcMTYyXHg2NVx4NjQiID0+ICJcMTI0XHg2OFx4NjVcNDBcMTA1XHg3OFx4NzBcMTQ1XDE2MlwxNTFceDZkXDE0NVx4NmVcMTY0XDQwXDExNlx4NjFceDZkXHg2NVx4MjBceDY2XHg2OVwxNDVcMTU0XDE0NFw0MFx4NjlcMTYzXDQwXDE2MlwxNDVcMTYxXDE2NVwxNTFceDcyXDE0NVwxNDQiLCAiXHg2NVwxNzBcMTUxXHg2NFx4MmVcMTYyXHg2NVx4NzFcMTY1XHg2OVwxNjJceDY1XDE0NCIgPT4gIlwxMDVceDcyXHg3MlwxNTdcMTYyXHgyMFx4NTJcMTQ1XHg2Y1wxNTdceDYxXDE0NFx4MjBceDc0XDE1MFx4NjVcNDBcMTYwXHg2MVx4NjdceDY1IiwgIlwxMjJcMTQ1XHg3MFx4NmZceDcyXDE2NFx4NDZceDY5XHg2Y1wxNDVceDJlXHg3MlwxNDVceDcxXHg3NVwxNTFceDcyXDE0NVwxNDQiID0+ICJceDU0XDE1MFwxNDVceDIwXDEwNVwxNzBcMTYwXDE0NVwxNjJceDY5XHg2ZFx4NjVceDZlXDE2NFw0MFwxMjJcMTQ1XHg3MFx4NmZceDcyXDE2NFw0MFwxNDZcMTUxXHg2Y1wxNDVceDIwXHg2Nlx4NjlceDY1XHg2Y1wxNDRcNDBceDY5XHg3M1w0MFwxNjJcMTQ1XDE2MVwxNjVceDY5XDE2Mlx4NjVcMTQ0IiwgIlwxMjJceDY1XDE2MFx4NmZcMTYyXHg3NFx4NDZcMTUxXHg2Y1wxNDVcNTZceDZkXDE1MVx4NmRceDY1XDE2MyIgPT4gIlwxMjRcMTUwXDE0NVw0MFwxMDVcMTcwXHg3MFwxNDVcMTYyXHg2OVwxNTVceDY1XHg2ZVwxNjRceDIwXHg1Mlx4NjVceDcwXDE1N1x4NzJceDc0XDQwXDE0Nlx4NjlcMTU0XDE0NVx4MjBcMTU1XDE2NVwxNjNceDc0XDQwXDE0Mlx4NjVcNDBcMTQxXHgyMFwxMjBceDQ0XHg0Nlw0MFx4NjZceDY5XDE1NFx4NjUiKSk7IGlmICgkdmFsaWRhdGVkLT5mYWlscygpKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTQ1XDE2MlwxNjJceDZmXHg3Mlx4NzMiID0+ICR2YWxpZGF0ZWQtPmVycm9ycygpLT5maXJzdCgpKSk7IH0gZWxzZSB7ICRjaGVja19pZl9sYWJSZXBvcnRfc3VibWl0dGVkID0gREI6OnRhYmxlKCJceDY1XHg3OFx4NzBcMTQ1XDE2Mlx4NjlcMTU1XDE0NVx4NmVcMTY0XHg1ZlwxNjJceDY1XDE2MFx4NmZceDcyXHg3NFx4NzMiKS0+d2hlcmUoIlx4NDVceDc4XDE2MFwxNDVcMTYyXHg2OVwxNTVceDY1XDE1NlwxNjRcMTM3XHg2OVx4NjQiLCAkcmVxdWVzdC0+RXhwZXJpbWVudElEKS0+d2hlcmUoIlwxNjVceDczXDE0NVwxNjJceDVmXHg2OVx4NjQiLCBTZXNzaW9uOjpnZXQoIlx4NzVceDczXDE0NVwxNjJceDZlXDE0MVwxNTVceDY1IikpLT5maXJzdCgpOyBpZiAoJGNoZWNrX2lmX2xhYlJlcG9ydF9zdWJtaXR0ZWQpIHsgaWYgKCRwZGYgPSAkcmVxdWVzdC0+ZmlsZSgiXHg1Mlx4NjVcMTYwXHg2ZlwxNjJcMTY0XHg0Nlx4NjlceDZjXHg2NSIpKSB7ICRmaWxlbmFtZSA9ICRwZGYtPmdldENsaWVudE9yaWdpbmFsTmFtZSgpOyBpZiAoJHBkZi0+bW92ZSgiXDEwNVwxNzBcMTYwXHg2NVx4NzJceDY5XHg2ZFx4NjVcMTU2XDE2NFx4NTJceDY1XHg3MFwxNTdcMTYyXHg3NCIsICRmaWxlbmFtZSkpIHsgREI6OnRhYmxlKCJcMTQ1XHg3OFwxNjBcMTQ1XDE2Mlx4NjlcMTU1XHg2NVwxNTZceDc0XDEzN1wxNjJcMTQ1XDE2MFwxNTdcMTYyXDE2NFwxNjMiKS0+d2hlcmUoIlx4NDVcMTcwXHg3MFx4NjVcMTYyXDE1MVwxNTVceDY1XHg2ZVwxNjRcMTM3XDE1MVx4NjQiLCAkcmVxdWVzdC0+RXhwZXJpbWVudElEKS0+d2hlcmUoIlwxNjVceDczXDE0NVx4NzJcMTM3XHg2OVwxNDQiLCBTZXNzaW9uOjpnZXQoIlwxNjVceDczXDE0NVx4NzJcMTU2XHg2MVwxNTVcMTQ1IikpLT51cGRhdGUoYXJyYXkoIlx4NTJcMTQ1XDE2MFx4NmZcMTYyXHg3NFwxMzdcMTQ2XHg2OVwxNTRcMTQ1IiA9PiAkZmlsZW5hbWUpKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNTFcMTU2XDE2M1x4NjVcMTYyXDE2NFwxNDVceDY0IiA9PiAiXDExNFx4NjFcMTQyXHgyMFx4NTJcMTQ1XHg3MFx4NmZcMTYyXDE2NFx4MjBcMTUwXDE0MVx4NzNcNDBcMTQyXHg2NVx4NjVceDZlXHgyMFwxNjVceDcwXHg2NFx4NjFcMTY0XHg2NVx4NjRcNTYiKSk7IH0gfSB9IGVsc2UgeyBpZiAoJHBkZiA9ICRyZXF1ZXN0LT5maWxlKCJcMTIyXHg2NVx4NzBcMTU3XDE2MlwxNjRceDQ2XDE1MVx4NmNceDY1IikpIHsgJGZpbGVuYW1lID0gJHBkZi0+Z2V0Q2xpZW50T3JpZ2luYWxOYW1lKCk7IGlmICgkcGRmLT5tb3ZlKCJceDQ1XDE3MFwxNjBceDY1XHg3Mlx4NjlceDZkXHg2NVwxNTZceDc0XHg1Mlx4NjVcMTYwXHg2Zlx4NzJcMTY0IiwgJGZpbGVuYW1lKSkgeyAkY2hlY2sgPSBEQjo6dGFibGUoIlwxNDNcMTU0XDE0MVx4NzNcMTYzXHg2NVx4NzMiKS0+c2VsZWN0KCJceDcyXHg3NVwxNDJceDcyXHg2OVwxNDNceDVmXHg2MVx4NzNceDczXHg2OVwxNDdcMTU2XDE0NVwxNDQiKS0+d2hlcmUoIlx4NjlceDY0IiwgJGNsYXNzSUQpLT5nZXQoKTsgJG5ld0V4ID0gbmV3IEV4cGVyaW1lbnRSZXBvcnQoKTsgJG5ld0V4LT5FeHBlcmltZW50X2lkID0gJHJlcXVlc3QtPkV4cGVyaW1lbnRJRDsgJG5ld0V4LT5SZXBvcnRfZmlsZSA9ICRmaWxlbmFtZTsgJG5ld0V4LT51c2VyX2lkID0gU2Vzc2lvbjo6Z2V0KCJceDc1XHg3M1wxNDVcMTYyXDE1NlwxNDFceDZkXHg2NSIpOyAkbmV3RXgtPmNsYXNzX2lkID0gJGNsYXNzSUQ7ICRuZXdFeC0+c2F2ZSgpOyAkYWN0X25hbWUgPSBEQjo6dGFibGUoIlx4NjNcMTU0XHg2MVwxNjNcMTYzXHg1Zlx4NjVceDc4XHg2NVx4NzMiKS0+c2VsZWN0KCJcMTQ1XDE3MFx4NWZceDZlXDE0MVwxNTVcMTQ1IiktPndoZXJlKCJcMTUxXHg2NCIsICRyZXF1ZXN0LT5FeHBlcmltZW50SUQpLT5nZXQoKTsgJHNhdmVHcmFkZSA9IG5ldyBSdWJyaWNHcmFkZXMoKTsgJHNhdmVHcmFkZS0+dV9pZCA9IFNlc3Npb246OmdldCgiXDE2NVwxNjNcMTQ1XDE2MlwxNTZcMTQxXDE1NVwxNDUiKTsgJHNhdmVHcmFkZS0+dG90YWxfc2NvcmUgPSAiXHg0ZVx4MmZceDQxIjsgJHNhdmVHcmFkZS0+cmFuayA9ICJceDRlXDU3XHg0MSI7ICRzYXZlR3JhZGUtPmlkX3J1YnJpYyA9ICRjaGVja1swXS0+cnVicmljX2Fzc2lnbmVkOyAkc2F2ZUdyYWRlLT5mZWVkYmFjayA9ICJceDRlXDU3XHg0MSI7ICRzYXZlR3JhZGUtPmNsYXNzX2lkID0gJGNsYXNzSUQ7ICRzYXZlR3JhZGUtPmFjdF9pZCA9ICRyZXF1ZXN0LT5FeHBlcmltZW50SUQ7ICRzYXZlR3JhZGUtPmFjdF9uYW1lID0gJGFjdF9uYW1lWzBdLT5leF9uYW1lOyAkc2F2ZUdyYWRlLT5yZXBvcnRfZmlsZSA9ICRmaWxlbmFtZTsgJHNhdmVHcmFkZS0+Y3JlYXRlZF9ieSA9ICJceDRlXHgyZlwxMDEiOyAkc2F2ZUdyYWRlLT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTUxXHg2ZVwxNjNceDY1XDE2Mlx4NzRceDY1XHg2NCIgPT4gIlwxMTZcMTQ1XHg3N1x4MjBcMTE0XDE0MVwxNDJcNDBcMTIyXHg2NVx4NzBcMTU3XDE2Mlx4NzRcNDBceDY4XHg2MVx4NzNceDIwXHg2Mlx4NjVcMTQ1XDE1Nlx4MjBcMTYzXDE2NVwxNDJceDZkXHg2OVx4NzRceDc0XHg2NVx4NjRcNTYiKSk7IH0gfSB9IH0gfSBwdWJsaWMgZnVuY3Rpb24gUmVwb3J0c1N1Ym1pdHRlZChSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRjbGFzc0lEID0gQ2xhc3Nlczo6ZmluZChjbGFzc0V4OjpmaW5kKCRyZXF1ZXN0LT5JRCktPmNsYXNzX2lkKS0+aWQ7ICRjaGVjayA9IERCOjp0YWJsZSgiXHg2M1wxNTRcMTQxXDE2M1wxNjNceDY1XDE2MyIpLT5zZWxlY3QoIlwxNjJcMTY1XHg2Mlx4NzJceDY5XHg2M1wxMzdcMTQxXHg3M1x4NzNceDY5XDE0N1wxNTZcMTQ1XHg2NCIpLT53aGVyZSgiXDE1MVx4NjQiLCAkY2xhc3NJRCktPmdldCgpOyAkaGFzUnVicmljID0gREI6OnRhYmxlKCJcMTQzXHg2Y1wxNDFcMTYzXHg3M1wxNDVceDczIiktPnNlbGVjdCgiXHg3Mlx4NzVceDYyXDE2MlwxNTFceDYzXDEzN1x4NjFcMTYzXDE2M1x4NjlcMTQ3XHg2ZVwxNDVceDY0IiktPndoZXJlKCJcMTUxXDE0NCIsICRjbGFzc0lEKS0+d2hlcmVOb3ROdWxsKCJcMTYyXDE2NVx4NjJcMTYyXDE1MVwxNDNcMTM3XHg2MVwxNjNcMTYzXHg2OVwxNDdceDZlXDE0NVx4NjQiKS0+Zmlyc3QoKTsgaWYgKCRoYXNSdWJyaWMpIHsgJGRhdGEgPSBEQjo6dGFibGUoIlx4NzVceDczXHg2NVwxNjJcMTYzIiktPnNlbGVjdCgiXHg3NVwxNjNceDY1XHg3Mlx4NzNcNTZceDJhIiwgIlwxNjJceDc1XDE0MlwxNjJceDY5XDE0M1wxMzdceDY3XDE2Mlx4NjFcMTQ0XHg2NVx4NzNcNTZcNTIiLCAiXDE2NVx4NzNcMTQ1XHg3MlwxNjNceDJlXHg2OVx4NjRcNDBceDYxXDE2M1x4MjBceDU1XDE2M1x4NjVceDcyXHg0OVwxMDQiKS0+am9pbigiXDE2MlwxNjVceDYyXDE2Mlx4NjlcMTQzXDEzN1x4NjdceDcyXDE0MVwxNDRcMTQ1XHg3MyIsICJcMTY1XDE2M1x4NjVceDcyXDE2M1x4MmVcMTUxXHg2NCIsICJcNzUiLCAiXDE2Mlx4NzVcMTQyXDE2MlwxNTFcMTQzXHg1ZlwxNDdceDcyXDE0MVx4NjRcMTQ1XDE2M1x4MmVceDc1XDEzN1wxNTFcMTQ0IiktPndoZXJlKCJceDcyXHg3NVx4NjJceDcyXHg2OVwxNDNcMTM3XHg2N1wxNjJcMTQxXDE0NFx4NjVceDczXDU2XDE0MVx4NjNceDc0XDEzN1wxNTFceDY0IiwgJHJlcXVlc3QtPklEKS0+Z2V0KCk7IHJldHVybiBEYXRhVGFibGVzOjpvZigkZGF0YSktPmFkZEluZGV4Q29sdW1uKCktPmFkZENvbHVtbigiXDE0MVx4NjNceDc0XHg2OVx4NmZcMTU2IiwgZnVuY3Rpb24gKCRyb3cpIHsgJHJ1YnJpY0lEID0gQ2xhc3Nlczo6ZmluZChjbGFzc0V4OjpmaW5kKCRyb3ctPmFjdF9pZCktPmNsYXNzX2lkKS0+cnVicmljX2Fzc2lnbmVkOyAkY2xhc3NJRDEgPSBDbGFzc2VzOjpmaW5kKGNsYXNzRXg6OmZpbmQoJHJvdy0+YWN0X2lkKS0+Y2xhc3NfaWQpLT5pZDsgJHVzZXJJRCA9ICRyb3ctPnVfaWQ7ICRidG4gPSAiXDc0XDE0MVw0MFx4NjhcMTYyXHg2NVx4NjZcNDBceDNkXHgyMFw0Mlx4MmZceDcyXDE2NVx4NjJceDcyXDE1MVwxNDNcNTVceDY3XDE2Mlx4NjFcMTQ0XHg2NVx4MmYiIC4gJHJ1YnJpY0lEIC4gIlx4MmYiIC4gJGNsYXNzSUQxIC4gIlx4MmYiIC4gJHJvdy0+YWN0X2lkIC4gIlw1NyIgLiAkdXNlcklEIC4gIlw0Mlx4MjBcMTY0XDE0MVwxNjJcMTQ3XDE0NVwxNjRceDIwXHgzZFx4MjBceDIyXDEzN1wxNDJceDZjXHg2MVwxNTZcMTUzXDQyXDQwXDE0M1wxNTRcMTQxXHg3M1x4NzNceDNkXHgyMlwxNDJcMTY0XDE1Nlx4MjBceDIwXDE0Mlx4NzRcMTU2XHgyZFx4NzNcMTU1XHgyMlx4MjBceDczXHg3NFwxNzFceDZjXDE0NVw3NVw0MlwxNDJcMTQxXHg2M1x4NmJceDY3XHg3Mlx4NmZcMTY1XHg2ZVwxNDRceDJkXDE0M1x4NmZcMTU0XDE1N1x4NzJceDNhXHgyMFwxNDdceDZmXDE1NFwxNDRcNzNceDIwXDE0M1wxNTdceDZjXDE1N1x4NzJceDNhXDQwXDE2N1x4NjhceDY5XDE2NFx4NjVcNzNceDIyXDc2XDEyMlx4NzVcMTQyXHg3MlwxNTFcMTQzXHgyMFwxMDdcMTYyXHg2MVwxNDRcMTQ1XHgzY1w1N1wxNDFceDNlIjsgcmV0dXJuICRidG47IH0pLT5hZGRDb2x1bW4oIlx4NDZcMTUxXHg2Y1x4NjVcMTIzXDE2NVwxNDJceDZkXDE1MVx4NzRceDc0XHg2NVwxNDQiLCBmdW5jdGlvbiAoJHJvdykgeyAkYnRuID0gIlw3NFx4NjFceDIwXDE2NFwxNDFceDcyXHg2N1wxNDVcMTY0XDc1XHgyMlx4NWZceDYyXDE1NFx4NjFceDZlXDE1M1x4MjJceDIwXHg2OFx4NzJceDY1XHg2Nlw3NVx4MjJcMTA1XDE3MFx4NzBcMTQ1XDE2MlwxNTFceDZkXHg2NVx4NmVcMTY0XHg1Mlx4NjVceDcwXHg2Zlx4NzJceDc0XDU3IiAuICRyb3ctPnJlcG9ydF9maWxlIC4gIlx4MjJcNzZcMTI2XHg2OVwxNDVcMTY3XHgyMFx4NGNcMTAxXHg0Mlx4MjBceDUyXHg2NVx4NzBceDZmXHg3Mlx4NzRcNzRcNTdcMTQxXDc2IjsgcmV0dXJuICRidG47IH0pLT5yYXdDb2x1bW5zKGFycmF5KCJceDYxXHg2M1x4NzRcMTUxXHg2ZlwxNTYiLCAiXHg0NlwxNTFcMTU0XHg2NVx4NTNceDc1XHg2MlwxNTVcMTUxXDE2NFwxNjRcMTQ1XDE0NCIpKS0+bWFrZSh0cnVlKTsgfSBlbHNlIHsgJGRhdGEgPSBEQjo6dGFibGUoIlwxNjVcMTYzXDE0NVwxNjJceDczIiktPnNlbGVjdCgiXHg3NVwxNjNcMTQ1XDE2MlwxNjNceDJlXHgyYSIsICJceDY1XHg3OFx4NzBcMTQ1XHg3MlwxNTFceDZkXHg2NVx4NmVcMTY0XHg1ZlwxNjJcMTQ1XDE2MFwxNTdceDcyXDE2NFwxNjNcNTZceDJhIiwgIlx4NjVcMTcwXHg3MFwxNDVceDcyXHg2OVx4NmRceDY1XDE1NlwxNjRcMTM3XHg3MlwxNDVcMTYwXDE1N1wxNjJcMTY0XHg3M1x4MmVcMTA1XDE3MFwxNjBcMTQ1XDE2MlwxNTFceDZkXHg2NVx4NmVceDc0XDEzN1wxNTFcMTQ0XDQwXHg2MVx4NzNceDIwXHg0NVx4NzhcMTYwXHg2NVx4NzJcMTUxXHg2ZFx4NjVcMTU2XHg3NFx4NDlcMTA0IiwgIlx4NzVcMTYzXDE0NVx4NzJceDczXHgyZVwxNTFcMTQ0XHgyMFwxNDFcMTYzXHgyMFx4NTVceDczXDE0NVwxNjJceDQ5XDEwNCIsICJcMTQ1XDE3MFwxNjBceDY1XDE2MlwxNTFcMTU1XDE0NVwxNTZceDc0XDEzN1x4NzJceDY1XHg3MFwxNTdceDcyXHg3NFwxNjNceDJlXDE1MVwxNDRcNDBceDYxXHg3M1x4MjBceDQ1XHg3OFwxNjBceDY1XHg3MlwxNTFcMTU1XDE0NVx4NmVceDc0XDEzN1wxMTFcMTA0IiktPmpvaW4oIlwxNDVceDc4XDE2MFwxNDVceDcyXDE1MVx4NmRcMTQ1XHg2ZVx4NzRcMTM3XHg3Mlx4NjVcMTYwXHg2ZlwxNjJceDc0XHg3MyIsICJcMTY1XHg3M1x4NjVcMTYyXHg3M1x4MmVcMTUxXHg2NCIsICJceDNkIiwgIlx4NjVcMTcwXHg3MFx4NjVceDcyXHg2OVx4NmRcMTQ1XHg2ZVx4NzRcMTM3XHg3MlwxNDVcMTYwXDE1N1wxNjJceDc0XDE2M1w1NlwxNjVceDczXDE0NVx4NzJcMTM3XDE1MVx4NjQiKS0+d2hlcmUoIlx4NjVcMTcwXHg3MFwxNDVcMTYyXDE1MVwxNTVcMTQ1XDE1NlwxNjRceDVmXDE2MlwxNDVcMTYwXDE1N1x4NzJceDc0XHg3M1w1Nlx4NDVceDc4XHg3MFx4NjVcMTYyXHg2OVx4NmRceDY1XHg2ZVwxNjRcMTM3XDE1MVwxNDQiLCAkcmVxdWVzdC0+SUQpLT5nZXQoKTsgcmV0dXJuIERhdGFUYWJsZXM6Om9mKCRkYXRhKS0+YWRkSW5kZXhDb2x1bW4oKS0+YWRkQ29sdW1uKCJceDYxXHg2M1x4NzRceDY5XHg2Zlx4NmUiLCBmdW5jdGlvbiAoJHJvdykgeyAkYnRuID0gIlx4M2NcMTQyXDE2NVwxNjRcMTY0XHg2ZlwxNTZceDIwXDE0M1wxNTRceDYxXDE2M1wxNjNcNzVcNDJcMTQyXDE2NFwxNTZceDIwXDQwXHg2Mlx4NzRceDZlXHgyZFwxNjNceDZkXDQwXHg0MVx4NjRceDY0XHg0N1x4NzJceDYxXHg2NFwxNDVceDQyXHg3NFx4NmVceDIyXDQwXDE2M1wxNjRceDc5XHg2Y1wxNDVcNzVceDIyXDE0MlwxNDFcMTQzXHg2Ylx4NjdcMTYyXDE1N1x4NzVceDZlXDE0NFx4MmRceDYzXDE1N1wxNTRceDZmXDE2Mlw3Mlw0MFx4NjdcMTU3XHg2Y1wxNDRcNzNcNDBcMTQzXDE1N1wxNTRceDZmXHg3Mlw3Mlx4MjBcMTY3XHg2OFx4NjlceDc0XHg2NVx4M2JcNDBcNDJcNDBcMTQ0XDE0MVx4NzRcMTQxXHgyZFwxNTFceDY0XDc1XDQyIiAuICRyb3ctPkV4cGVyaW1lbnRfSUQgLiAiXHgyMlw3NlwxMDdcMTYyXHg2MVx4NjRcMTQ1XHgzY1x4MmZceDYyXHg3NVx4NzRcMTY0XDE1N1x4NmVceDNlIjsgcmV0dXJuICRidG47IH0pLT5hZGRDb2x1bW4oIlx4NDZcMTUxXDE1NFwxNDVcMTIzXHg3NVwxNDJceDZkXDE1MVwxNjRceDc0XHg2NVx4NjQiLCBmdW5jdGlvbiAoJHJvdykgeyAkYnRuID0gIlw3NFwxNDFcNDBceDc0XHg2MVx4NzJcMTQ3XHg2NVx4NzRcNzVcNDJceDVmXHg2MlwxNTRcMTQxXDE1NlwxNTNcNDJcNDBceDY4XHg3MlwxNDVceDY2XHgzZFw0MlwxMDVceDc4XDE2MFx4NjVcMTYyXHg2OVwxNTVceDY1XHg2ZVx4NzRcMTIyXHg2NVwxNjBceDZmXHg3Mlx4NzRcNTciIC4gJHJvdy0+UmVwb3J0X2ZpbGUgLiAiXDQyXDc2XDEyNlwxNTFcMTQ1XDE2N1x4MjBceDRjXDEwMVwxMDJceDIwXDEyMlx4NjVceDcwXDE1N1wxNjJcMTY0XHgzY1x4MmZcMTQxXDc2IjsgcmV0dXJuICRidG47IH0pLT5yYXdDb2x1bW5zKGFycmF5KCJcMTQxXDE0M1wxNjRceDY5XDE1N1wxNTYiLCAiXDEwNlx4NjlceDZjXDE0NVwxMjNcMTY1XDE0Mlx4NmRceDY5XDE2NFx4NzRceDY1XDE0NCIpKS0+bWFrZSh0cnVlKTsgfSB9IHB1YmxpYyBmdW5jdGlvbiBhRERuZXdHcmFkZVRvRXhwZXJpbWVudChSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRFeHBlcmltZW50X0RhdGEgPSBEQjo6dGFibGUoIlx4NjVcMTcwXDE2MFwxNDVceDcyXDE1MVwxNTVceDY1XDE1NlwxNjRcMTM3XHg3MlwxNDVcMTYwXHg2Zlx4NzJceDc0XHg3MyIpLT53aGVyZSgiXDE1MVx4NjQiLCAkcmVxdWVzdC0+SUQpLT5maXJzdCgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg0NVx4NzhceDcwXDE0NVwxNjJceDY5XHg2ZFx4NjVceDZlXDE2NFx4NWZceDQ5XHg0NFx4NWZcMTA2XHg2NVx4NzRcMTQzXDE1MFx4NjVceDY0IiA9PiAkRXhwZXJpbWVudF9EYXRhKSk7IH0gcHVibGljIGZ1bmN0aW9uIE5ld0dyYWRlKFJlcXVlc3QgJHJlcXVlc3QpIHsgJHZhbGlkYXRlZCA9IFZhbGlkYXRvcjo6bWFrZSgkcmVxdWVzdC0+YWxsKCksIGFycmF5KCJceDQ1XDE3MFwxNjBceDY1XDE2Mlx4NjlceDZkXHg2NVx4NmVceDc0XDEzN1x4NjlcMTQ0XDEzN1x4NjRceDYxXDE2NFwxNDEiID0+ICJcMTYyXDE0NVx4NzFceDc1XDE1MVwxNjJcMTQ1XHg2NCIsICJcMTY1XHg3M1x4NjVceDcyXHg1ZlwxNTFcMTQ0XHg1ZlwxNDdceDcyXDE0MVwxNDRcMTQ1IiA9PiAiXHg3Mlx4NjVcMTYxXDE2NVx4NjlceDcyXDE0NVx4NjQiLCAiXHg2N1x4NzJceDYxXHg2NFwxNDUiID0+ICJcMTYyXDE0NVwxNjFceDc1XHg2OVx4NzJceDY1XDE0NCIpLCBhcnJheSgiXHg3NVx4NzNceDY1XHg3MlwxNTZceDYxXHg2ZFx4NjVcNTZceDcyXDE0NVwxNjFcMTY1XDE1MVx4NzJcMTQ1XHg2NCIgPT4gIlx4NTRcMTUwXDE0NVw0MFx4NDdcMTYyXDE0MVwxNDRceDY1XHgyMFx4NTNceDYzXHg2ZlwxNjVceDcyXDE0NVw0MFwxNDZceDY5XHg2NVwxNTRceDY0XDQwXHg2OVx4NzNcNDBcMTYyXDE0NVwxNjFcMTY1XHg2OVwxNjJcMTQ1XDE0NCIsICJcMTA1XHg3OFwxNjBcMTQ1XHg3MlwxNTFcMTU1XHg2NVwxNTZcMTY0XHg1ZlwxNTFcMTQ0XDEzN1wxNDRcMTQxXHg3NFwxNDFcNTZcMTYyXDE0NVx4NzFceDc1XHg2OVx4NzJceDY1XDE0NCIgPT4gIlx4NTNcMTcxXDE2M1wxNjRceDY1XDE1NVx4MjBceDQ1XDE2MlwxNjJcMTU3XHg3Mlx4MmVceDIwXDEyMFx4NmNceDY1XDE0MVwxNjNcMTQ1XHgyMFx4NzJcMTQ1XHg2Y1x4NmZceDYxXDE0NFx4MjBceDc0XHg2OFx4NjVceDIwXDE2MFwxNDFceDY3XHg2NVx4MjBceDZmXDE2Mlw0MFwxNDNcMTU3XDE1Nlx4NmVcMTY0XHg2MVwxNDNceDc0XHgyMFwxNjNcMTcxXDE2M1x4NzRcMTQ1XDE1NVx4MjBceDYxXHg2NFx4NmRcMTUxXHg2ZVx4NjlceDczXDE2NFwxNjJceDYxXDE2NFwxNTdceDcyXDU2IiwgIlwxNjVceDczXDE0NVx4NzJceDVmXHg2OVwxNDRceDVmXDE0N1wxNjJceDYxXHg2NFwxNDVcNTZcMTYyXDE0NVx4NzFcMTY1XHg2OVwxNjJceDY1XHg2NCIgPT4gIlx4NTNcMTcxXDE2M1wxNjRcMTQ1XHg2ZFx4MjBcMTA1XHg3MlwxNjJcMTU3XDE2Mlw1Nlx4MjBcMTIwXHg2Y1wxNDVceDYxXHg3M1wxNDVceDIwXHg3Mlx4NjVceDZjXDE1N1x4NjFcMTQ0XDQwXHg3NFwxNTBceDY1XHgyMFwxNjBcMTQxXDE0N1x4NjVceDIwXDE1N1x4NzJcNDBcMTQzXDE1N1wxNTZceDZlXHg3NFx4NjFceDYzXHg3NFw0MFwxNjNcMTcxXDE2M1x4NzRcMTQ1XHg2ZFw0MFx4NjFcMTQ0XDE1NVwxNTFcMTU2XDE1MVwxNjNcMTY0XDE2MlwxNDFceDc0XDE1N1wxNjJcNTYiKSk7IGlmICgkdmFsaWRhdGVkLT5mYWlscygpKSB7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY1XDE2MlwxNjJceDZmXHg3Mlx4NzMiID0+ICR2YWxpZGF0ZWQtPmVycm9ycygpLT5maXJzdCgpKSk7IH0gZWxzZSB7ICRjaGVja19ncmFkZSA9IERCOjp0YWJsZSgiXHg2NVwxNzBcMTYwXHg2NVx4NzJceDY5XDE1NVx4NjVcMTU2XDE2NFwxMzdceDcyXHg2NVx4NzBcMTU3XHg3MlwxNjRcMTYzIiktPndoZXJlKCJceDY5XDE0NCIsICRyZXF1ZXN0LT5FeHBlcmltZW50X2lkX28pLT5maXJzdCgpOyBpZiAoJHJlcXVlc3QtPmdyYWRlX2ZlZWRiYWNrID09ICcnKSB7IGlmICgkY2hlY2tfZ3JhZGUtPmZlZWRiYWNrID09ICJcMTE2XHgyZlx4NDEiKSB7ICROZXdfZ3JhZGUgPSBFeHBlcmltZW50UmVwb3J0OjpmaW5kKCRyZXF1ZXN0LT5FeHBlcmltZW50X2lkX28pOyAkTmV3X2dyYWRlLT50b3RhbF9zY29yZSA9ICRyZXF1ZXN0LT5ncmFkZTsgJE5ld19ncmFkZS0+ZmVlZGJhY2sgPSAiXDExNlx4MmZcMTAxIjsgJE5ld19ncmFkZS0+c2F2ZSgpOyAkY2hlY2tfcmVwb3J0ID0gREI6OnRhYmxlKCJcMTQ1XDE3MFwxNjBcMTQ1XDE2Mlx4NjlcMTU1XHg2NVwxNTZceDc0XDEzN1x4NzJcMTQ1XDE2MFx4NmZceDcyXHg3NFwxNjMiKS0+d2hlcmUoIlwxNTFceDY0IiwgJHJlcXVlc3QtPkV4cGVyaW1lbnRfaWRfbyktPmZpcnN0KCk7ICRjaGVja19leHBlcmltZW50ID0gREI6OnRhYmxlKCJcMTQzXHg2Y1x4NjFceDczXHg3M1wxMzdcMTQ1XHg3OFx4NjVceDczIiktPndoZXJlKCJcMTUxXDE0NCIsICRjaGVja19yZXBvcnQtPkV4cGVyaW1lbnRfaWQpLT5maXJzdCgpOyAkbm90aWZ5ID0gbmV3IE5vdGlmaWNhdGlvbnMoKTsgJG5vdGlmeS0+bm90aWZpY2F0aW9uX3RleHQgPSAiXDEzMVwxNTdceDc1XHg3Mlw0MFwxMDdceDcyXDE0MVwxNDRceDY1XHgyMFwxNTdcMTQ2XHgyMHskY2hlY2tfZXhwZXJpbWVudC0+ZXhfbmFtZX1ceDIwXHg2OFx4NjFceDczXDQwXHg2Mlx4NjVcMTQ1XHg2ZVw0MFx4NzVcMTYwXDE0NFwxNDFcMTY0XHg2NVwxNDRcNTZceDIwIjsgJG5vdGlmeS0+dXNlcl9pZF9ub3RpZnkgPSAkY2hlY2tfcmVwb3J0LT51c2VyX2lkOyAkbm90aWZ5LT5zdGF0dXMgPSAiXDE2NVwxNTZcMTYyXDE0NVwxNDFcMTQ0IjsgJG5vdGlmeS0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE1MVwxNTZceDczXHg2NVx4NzJcMTY0XDE0NVx4NjQiID0+ICJceDQ3XHg3MlwxNDFcMTQ0XDE0NVw0MFx4NzNcMTQzXHg2ZlwxNjJceDY1XDQwXHg2OFx4NjFceDczXHgyMFx4NjJceDY1XHg2NVx4NmVcNDBceDc1XHg3MFwxNDRcMTQxXHg3NFx4NjVceDY0XHgyZSIpKTsgfSBlbHNlIHsgJE5ld19ncmFkZSA9IEV4cGVyaW1lbnRSZXBvcnQ6OmZpbmQoJHJlcXVlc3QtPkV4cGVyaW1lbnRfaWRfbyk7ICROZXdfZ3JhZGUtPnRvdGFsX3Njb3JlID0gJHJlcXVlc3QtPmdyYWRlOyAkTmV3X2dyYWRlLT5zYXZlKCk7ICRjaGVja19yZXBvcnQgPSBEQjo6dGFibGUoIlwxNDVcMTcwXHg3MFx4NjVcMTYyXHg2OVx4NmRcMTQ1XDE1Nlx4NzRceDVmXHg3MlwxNDVcMTYwXDE1N1wxNjJcMTY0XDE2MyIpLT53aGVyZSgiXHg2OVwxNDQiLCAkcmVxdWVzdC0+RXhwZXJpbWVudF9pZF9vKS0+Zmlyc3QoKTsgJGNoZWNrX2V4cGVyaW1lbnQgPSBEQjo6dGFibGUoIlx4NjNceDZjXHg2MVx4NzNcMTYzXHg1ZlwxNDVcMTcwXDE0NVwxNjMiKS0+d2hlcmUoIlwxNTFceDY0IiwgJGNoZWNrX3JlcG9ydC0+RXhwZXJpbWVudF9pZCktPmZpcnN0KCk7ICRub3RpZnkgPSBuZXcgTm90aWZpY2F0aW9ucygpOyAkbm90aWZ5LT5ub3RpZmljYXRpb25fdGV4dCA9ICJceDU5XDE1N1wxNjVceDcyXHgyMFwxMDdceDcyXDE0MVwxNDRcMTQ1XHgyMFx4NmZcMTQ2XHgyMHskY2hlY2tfZXhwZXJpbWVudC0+ZXhfbmFtZX1ceDIwXDE1MFwxNDFcMTYzXHgyMFx4NjJcMTQ1XDE0NVwxNTZceDIwXHg3NVwxNjBcMTQ0XHg2MVwxNjRceDY1XHg2NFw1Nlx4MjAiOyAkbm90aWZ5LT51c2VyX2lkX25vdGlmeSA9ICRjaGVja19yZXBvcnQtPnVzZXJfaWQ7ICRub3RpZnktPnN0YXR1cyA9ICJceDc1XDE1NlwxNjJceDY1XHg2MVwxNDQiOyAkbm90aWZ5LT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDY5XDE1Nlx4NzNcMTQ1XHg3MlwxNjRcMTQ1XHg2NCIgPT4gIlwxMDdcMTYyXDE0MVwxNDRcMTQ1XDQwXDE2M1x4NjNceDZmXHg3MlwxNDVcNDBceDY4XHg2MVx4NzNcNDBcMTQyXHg2NVwxNDVcMTU2XDQwXDE2NVx4NzBcMTQ0XHg2MVwxNjRceDY1XDE0NFw1NiIpKTsgfSB9IGVsc2UgeyAkTmV3X2dyYWRlID0gRXhwZXJpbWVudFJlcG9ydDo6ZmluZCgkcmVxdWVzdC0+RXhwZXJpbWVudF9pZF9vKTsgJE5ld19ncmFkZS0+dG90YWxfc2NvcmUgPSAkcmVxdWVzdC0+Z3JhZGU7ICROZXdfZ3JhZGUtPmZlZWRiYWNrID0gJHJlcXVlc3QtPmdyYWRlX2ZlZWRiYWNrOyAkTmV3X2dyYWRlLT5zYXZlKCk7ICRjaGVja19yZXBvcnQgPSBEQjo6dGFibGUoIlx4NjVceDc4XDE2MFwxNDVcMTYyXDE1MVx4NmRceDY1XHg2ZVwxNjRcMTM3XHg3MlwxNDVcMTYwXHg2Zlx4NzJceDc0XDE2MyIpLT53aGVyZSgiXHg2OVx4NjQiLCAkcmVxdWVzdC0+RXhwZXJpbWVudF9pZF9vKS0+Zmlyc3QoKTsgJGNoZWNrX2V4cGVyaW1lbnQgPSBEQjo6dGFibGUoIlx4NjNcMTU0XDE0MVx4NzNceDczXHg1Zlx4NjVcMTcwXDE0NVwxNjMiKS0+d2hlcmUoIlwxNTFceDY0IiwgJGNoZWNrX3JlcG9ydC0+RXhwZXJpbWVudF9pZCktPmZpcnN0KCk7ICRub3RpZnkgPSBuZXcgTm90aWZpY2F0aW9ucygpOyAkbm90aWZ5LT5ub3RpZmljYXRpb25fdGV4dCA9ICJcMTMxXDE1N1wxNjVcMTYyXDQwXDEwN1wxNjJcMTQxXHg2NFwxNDVceDIwXHg2Zlx4NjZcNDB7JGNoZWNrX2V4cGVyaW1lbnQtPmV4X25hbWV9XHgyMFx4NjhcMTQxXDE2M1x4MjBceDYyXDE0NVx4NjVceDZlXDQwXHg3NVx4NzBcMTQ0XDE0MVwxNjRceDY1XDE0NFx4MmVceDIwIjsgJG5vdGlmeS0+dXNlcl9pZF9ub3RpZnkgPSAkY2hlY2tfcmVwb3J0LT51c2VyX2lkOyAkbm90aWZ5LT5zdGF0dXMgPSAiXHg3NVwxNTZceDcyXHg2NVwxNDFcMTQ0IjsgJG5vdGlmeS0+c2F2ZSgpOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXDE1MVwxNTZceDczXHg2NVx4NzJcMTY0XHg2NVx4NjQiID0+ICJcMTA3XHg3MlwxNDFceDY0XHg2NVx4MjBceDczXHg2M1wxNTdcMTYyXDE0NVw0MFx4NjFcMTU2XHg2NFx4MjBcMTA2XDE0NVwxNDVcMTQ0XDE0MlwxNDFcMTQzXDE1M1w0MFwxNTBceDYxXHg3NlwxNDVcNDBcMTQyXDE0NVx4NjVceDZlXDQwXHg3NVx4NzBceDY0XHg2MVwxNjRceDY1XDE0NFx4MmUiKSk7IH0gfSB9IHB1YmxpYyBmdW5jdGlvbiBFeHBlcmltZW50c1ZpZXdEZXRhaWxzKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGNsYXNzX0V4cGVyaW1lbnRzX3ZpZXcgPSBEQjo6dGFibGUoIlwxNDNcMTU0XDE0MVwxNjNcMTYzXDEzN1x4NjVcMTcwXHg2NVx4NzMiKS0+d2hlcmUoIlx4NjNcMTU0XDE0MVwxNjNcMTYzXHg1ZlwxNTFcMTQ0IiwgJHJlcXVlc3QtPmNsYXNzSUQpOyByZXR1cm4gRGF0YVRhYmxlczo6b2YoJGNsYXNzX0V4cGVyaW1lbnRzX3ZpZXcpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlx4NDFcMTQzXHg3NFx4NjlceDZmXDE1NiIsIGZ1bmN0aW9uICgkcm93KSB7ICRidG4gPSAiXDc0XHg2NFwxNTFcMTY2XHgyMFx4NjNceDZjXDE0MVx4NzNceDczXHgzZFx4MjJceDYyXDE2NFwxNTZcNTVcMTQ3XHg3MlwxNTdcMTY1XHg3MFx4MjBcMTQ0XDE2MlwxNTdceDcwXHg2Y1x4NjVcMTQ2XHg3NFx4MjJceDNlXHhhXHgyMFx4MjBceDIwXDQwXHgyMFx4MjBceDIwXHgyMFw0MFw0MFx4MjBceDIwXDQwXHgyMFx4MjBcNDBcNzRcMTQyXHg3NVx4NzRceDc0XDE1N1x4NmVceDIwXHg3NFwxNzFcMTYwXDE0NVx4M2RcNDJceDYyXHg3NVx4NzRcMTY0XDE1N1wxNTZceDIyXDQwXDE0M1x4NmNceDYxXHg3M1x4NzNceDNkXHgyMlwxNDJcMTY0XDE1Nlw0MFwxNDJceDc0XHg2ZVw1NVwxNDRceDYxXHg3MlwxNTNcNDBcMTQ0XHg3Mlx4NmZceDcwXHg2NFx4NmZceDc3XDE1Nlx4MmRceDc0XDE1N1x4NjdcMTQ3XHg2Y1wxNDVceDIyXHgyMFwxNDRceDYxXHg3NFwxNDFceDJkXDE2NFwxNTdceDY3XDE0N1wxNTRceDY1XHgzZFw0MlwxNDRceDcyXDE1N1wxNjBceDY0XHg2Zlx4NzdcMTU2XHgyMlw0MFwxNDFcMTYyXHg2OVwxNDFceDJkXDE1MFwxNDFcMTYzXHg3MFx4NmZcMTYwXHg3NVx4NzBceDNkXDQyXHg3NFx4NzJcMTY1XDE0NVx4MjJcNDBceDYxXDE2MlwxNTFcMTQxXDU1XHg2NVx4NzhcMTYwXHg2MVx4NmVceDY0XDE0NVwxNDRceDNkXDQyXDE0NlwxNDFceDZjXHg3M1wxNDVceDIyXHgzZVwxMlx4MjBcNDBceDIwXHgyMFw0MFw0MFw0MFx4MjBcNDBceDIwXDQwXHgyMFw0MFw0MFx4MjBcNDBceDUzXHg2NVx4NzRcMTY0XDE1MVx4NmVcMTQ3XHg3M1x4YVx4MjBcNDBceDIwXDQwXDQwXHgyMFw0MFw0MFw0MFx4MjBcNDBceDIwXHgyMFw0MFx4MjBcNDBceDNjXDU3XHg2Mlx4NzVceDc0XDE2NFx4NmZceDZlXHgzZVwxMlx4MjBceDIwXDQwXDQwXHgyMFx4MjBcNDBceDIwXDQwXHgyMFw0MFw0MFx4MjBcNDBceDIwXDQwXHgzY1x4NjRceDY5XDE2Nlw0MFwxNDNcMTU0XDE0MVx4NzNceDczXHgzZFx4MjJcMTQ0XDE2MlwxNTdceDcwXDE0NFwxNTdceDc3XHg2ZVw1NVwxNTVceDY1XDE1Nlx4NzVcNDBcMTQ0XDE2MlwxNTdceDcwXDE1NFx4NjVceDY2XDE2NFw0Mlx4M2VceGFcNDBcNDBcNDBceDIwXDQwXDQwXHgyMFx4MjBcNDBcNDBcNDBceDIwXDQwXDQwXDQwXHgyMFw0MFx4MjBcNzRceDYxXHgyMFwxNDNcMTU0XDE0MVx4NzNcMTYzXDc1XDQyXHg2NFx4NzJcMTU3XHg3MFwxNDRcMTU3XDE2N1x4NmVcNTVcMTUxXDE2NFx4NjVcMTU1XHgyMFx4NDFcMTQ0XHg2NFwxMDVcMTcwXHg3MFx4NjVcMTYyXHg2OVwxNTVceDY1XHg2ZVx4NzRcMTAxXDE2MFwxNjBcMTAyXHg3NFx4NmVcNDJcNDBceDY4XDE2Mlx4NjVcMTQ2XDc1XDQyXHgyM1w0Mlw0MFwxNDRcMTQxXDE2NFwxNDFceDJkXDE1MVx4NjRceDNkXHgyMiIgLiAkcm93LT5pZCAuICJcNDJcNzZceDQxXDE0NFx4NjRcNDBceDRlXHg2NVx4NzdceDIwXHg0MVwxNjBceDcwXDc0XDU3XHg2MVx4M2VcMTJcNDBcNDBceDIwXDQwXHgyMFx4MjBceDIwXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBceDIwXHgyMFw3NFwxNDFceDIwXHg2M1x4NmNceDYxXDE2M1x4NzNceDNkXHgyMlx4NjRceDcyXDE1N1x4NzBceDY0XHg2Zlx4NzdcMTU2XDU1XHg2OVwxNjRcMTQ1XDE1NVx4MjBceDQ1XHg3OFx4NzBceDY1XDE2MlwxNTFceDZkXDE0NVx4NmVcMTY0XDEyNlwxNTFceDY1XHg3N1x4NDFcMTYwXHg3MFwxMDJceDc0XDE1Nlw0Mlw0MFx4NjRcMTQxXDE2NFwxNDFcNTVcMTUxXDE0NFx4M2RcNDIiIC4gJHJvdy0+aWQgLiAiXHgyMlx4MjBcMTUwXDE2MlwxNDVceDY2XHgzZFw0Mlw0M1w0Mlx4M2VcMTI2XDE1MVx4NjVcMTY3XDQwXHg0NVwxNzBcMTYwXDE0NVwxNjJceDY5XHg2ZFx4NjVceDZlXHg3NFx4MjBcMTAxXDE2MFx4NzBceDczXDc0XDU3XDE0MVw3Nlx4YVw0MFx4MjBceDIwXDQwXHgyMFw0MFx4MjBceDIwXHgyMFw0MFx4MjBcNDBcNDBcNDBceDIwXHgyMFw0MFw0MFx4M2NceDYxXDQwXDE0M1wxNTRcMTQxXDE2M1x4NzNcNzVceDIyXDE0NFwxNjJcMTU3XHg3MFwxNDRceDZmXDE2N1wxNTZceDJkXHg2OVx4NzRceDY1XHg2ZFw0MFx4NTZceDY5XHg2NVwxNjdcMTA1XDE3MFx4NzBceDY1XDE2MlwxNTFceDZkXDE0NVwxNTZcMTY0XDEyM1wxNjVceDYyXDE1NVx4NjlceDczXDE2M1x4NjlcMTU3XHg2ZVwxNjNceDQyXDE2NFwxNTZceDIyXDQwXHg2NFwxNDFceDc0XHg2MVw1NVx4NjlcMTQ0XHgzZFw0MiIgLiAkcm93LT5pZCAuICJcNDJcNDBcMTUwXHg3MlwxNDVcMTQ2XDc1XDQyXDQzXDQyXDc2XDEyNlx4NjlceDY1XDE2N1w0MFwxMjNceDc1XHg2MlwxNTVceDY5XDE2M1x4NzNcMTUxXDE1N1wxNTZceDczXHgzY1x4MmZcMTQxXDc2XHhhXDQwXDQwXDQwXDQwXHgyMFx4MjBcNDBceDIwXHgyMFw0MFw0MFw0MFx4MjBceDIwXDQwXDQwXHgyMFw0MFw3NFwxNDFceDIwXDE0M1wxNTRceDYxXDE2M1x4NzNceDNkXHgyMlwxNDRcMTYyXDE1N1x4NzBceDY0XDE1N1wxNjdceDZlXHgyZFx4NjlceDc0XHg2NVx4NmRcNDBcMTQ0XDE0NVx4NmNcMTQ1XHg3NFwxNDVcMTA1XHg3OFwxNjBceDY1XDE2MlwxNTFcMTU1XHg2NVx4NmVceDc0XDEwMlwxNjRcMTU2XDQyXHgyMFwxNTBcMTYyXDE0NVx4NjZceDNkXHgyMlx4MjNceDIyXHgyMFwxNDRcMTQxXDE2NFx4NjFceDJkXDE1MVwxNDRceDNkXHgyMiIgLiAkcm93LT5pZCAuICJceDIyXHgzZVx4NDRcMTQ1XHg2Y1wxNDVcMTY0XHg2NVx4MjBceDQ1XDE3MFx4NzBcMTQ1XHg3MlwxNTFceDZkXHg2NVwxNTZcMTY0XDc0XDU3XHg2MVx4M2VcMTJceDIwXHgyMFx4MjBceDIwXHgyMFx4MjBcNDBcNDBceDIwXHgyMFw0MFx4MjBcNDBcNDBcNDBceDIwXDc0XHgyZlx4NjRceDY5XHg3Nlx4M2VcMTJcNDBcNDBcNDBcNDBceDIwXHgyMFw0MFw0MFw0MFx4MjBceDIwXDQwXDQwXHgyMFw3NFx4MmZceDY0XHg2OVwxNjZceDNlIjsgcmV0dXJuICRidG47IH0pLT5hZGRDb2x1bW4oIlx4NDVceDc4XDE2MFwxNDVcMTYyXDE1MVwxNTVcMTQ1XHg2ZVwxNjRcMTE2XHg2MVwxNTVceDY1IiwgZnVuY3Rpb24gKCRyb3cpIHsgaWYgKCRyb3ctPmV4X2ZpbGUgPiAnJykgeyAkYnRuID0gIlw3NFx4NjFcNDBcMTY0XDE0MVx4NzJcMTQ3XDE0NVx4NzRcNzVcNDJceDVmXHg2Mlx4NmNceDYxXDE1NlwxNTNceDIyXDQwXHg2OFx4NzJceDY1XHg2Nlw3NVx4MjJcMTAzXHg2Y1wxNDFceDczXDE2M1wxMDVcMTcwXHgyZiIgLiAkcm93LT5leF9maWxlIC4gIlx4MjJceDNlIiAuICRyb3ctPmV4X25hbWUgLiAiXDc0XHgyZlwxNDFceDNlIjsgcmV0dXJuICRidG47IH0gZWxzZSB7IGlmICgkcm93LT5FeENyZWF0ZWQgPiAnJykgeyAkYnRuID0gIlx4M2NceDYxXDQwXDE2NFx4NjFcMTYyXDE0N1x4NjVcMTY0XDc1XDQyXDEzN1x4NjJceDZjXHg2MVwxNTZceDZiXHgyMlx4MjBceDY4XDE2MlwxNDVceDY2XDc1XDQyXHg2NVwxNzBcMTYwXDE0NVx4NzJceDY5XHg2ZFwxNDVcMTU2XHg3NFw1NyIgLiAkcm93LT5pZCAuICJceDIyXHgzZSIgLiAkcm93LT5leF9uYW1lIC4gIlw3NFx4MmZcMTQxXDc2IjsgcmV0dXJuICRidG47IH0gfSB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXHg0NVwxNzBcMTYwXDE0NVx4NzJcMTUxXDE1NVwxNDVcMTU2XDE2NFx4NGVcMTQxXHg2ZFwxNDUiLCAiXDEwMVx4NjNceDc0XHg2OVx4NmZcMTU2IikpLT5tYWtlKHRydWUpOyB9IHB1YmxpYyBmdW5jdGlvbiBFeHBlcmltZW50RGVsZXRlZChSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRpZCA9ICRyZXF1ZXN0LT5FeHBlcmltZW50SUQ7ICRkZWxldGVkUm93cyA9IGNsYXNzRXg6OndoZXJlKCJceDY5XHg2NCIsICRpZCktPmRlbGV0ZSgpOyBpZiAoJGRlbGV0ZWRSb3dzID4gMCkgeyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg2MVx4NzBceDcwXHg3Mlx4NmZceDc2XHg2NVwxNDQiID0+ICJcMTA1XDE3MFwxNjBcMTQ1XDE2Mlx4NjlcMTU1XDE0NVx4NmVceDc0XHgyMFwxNTBcMTQxXDE2M1x4MjBceDYyXDE0NVwxNDVcMTU2XDQwXHg2NFwxNDVcMTU0XHg2NVwxNjRcMTQ1XDE0NFw0MFx4NzNcMTY1XHg2M1x4NjNcMTQ1XHg3M1wxNjNceDY2XHg3NVx4NmNcMTU0XHg3OVw1NiIpKTsgfSBlbHNlIHsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDFcMTYwXHg3MFx4NzJceDZmXHg3NlwxNDVcMTQ0IiA9PiAiXHg0NVwxNzBceDcwXHg2NVx4NzJceDY5XHg2ZFx4NjVcMTU2XDE2NFx4MjBceDc3XDE1MVx4NzRceDY4XDQwXHg0OVx4NDRceDIweyRpZH1ceDIwXDE1Nlx4NmZceDc0XDQwXHg2Nlx4NmZceDc1XHg2ZVwxNDRceDJlIiksIDQwNCk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gRXhwZXJpbWVudHNBcHBzVmlld0RldGFpbHMoUmVxdWVzdCAkcmVxdWVzdCkgeyAkY2xhc3NfRXhwZXJpbWVudHNfYXBwX3ZpZXcgPSBEQjo6dGFibGUoIlx4NzNceDZkXHg2MVwxNjJceDc0XHg2Y1wxNDFcMTQyXDEzN1wxNDFcMTYwXDE2MFwxNjMiKS0+d2hlcmUoIlwxNDNcMTU0XHg2MVwxNjNcMTYzXHg0NVx4NzhceDVmXDE1MVwxNDQiLCAkcmVxdWVzdC0+ZXhwZXJpbWVudElEKTsgcmV0dXJuIERhdGFUYWJsZXM6Om9mKCRjbGFzc19FeHBlcmltZW50c19hcHBfdmlldyktPmFkZEluZGV4Q29sdW1uKCktPmFkZENvbHVtbigiXHg0MVx4NjNcMTY0XDE1MVwxNTdceDZlIiwgZnVuY3Rpb24gKCRyb3cpIHsgJGJ0biA9ICJceDNjXHg2NFwxNTFceDc2XHgyMFx4NjNceDZjXDE0MVwxNjNceDczXDc1XDQyXHg2MlwxNjRcMTU2XHgyZFwxNDdcMTYyXDE1N1x4NzVceDcwXDQwXHg2NFwxNjJceDZmXHg3MFx4NmNcMTQ1XDE0Nlx4NzRcNDJceDNlXDEyXHgyMFx4MjBceDIwXDQwXDQwXHgyMFw0MFw0MFx4MjBcNDBceDIwXHgyMFx4MjBcNDBceDIwXDQwXHgzY1x4NjJcMTY1XHg3NFx4NzRceDZmXDE1Nlw0MFwxNjRceDc5XHg3MFx4NjVceDNkXDQyXDE0Mlx4NzVceDc0XDE2NFwxNTdceDZlXHgyMlw0MFx4NjNceDZjXHg2MVwxNjNcMTYzXDc1XDQyXDE0Mlx4NzRcMTU2XDQwXHg2MlwxNjRceDZlXHgyZFwxNDRceDYxXHg3Mlx4NmJcNDBceDY0XDE2MlwxNTdcMTYwXHg2NFwxNTdcMTY3XDE1Nlw1NVwxNjRcMTU3XHg2N1x4NjdcMTU0XDE0NVx4MjJcNDBceDY0XHg2MVx4NzRcMTQxXDU1XHg3NFwxNTdceDY3XHg2N1wxNTRcMTQ1XDc1XHgyMlwxNDRcMTYyXDE1N1wxNjBcMTQ0XHg2Zlx4NzdcMTU2XDQyXDQwXHg2MVwxNjJceDY5XDE0MVw1NVx4NjhcMTQxXHg3M1wxNjBcMTU3XHg3MFwxNjVceDcwXHgzZFx4MjJcMTY0XDE2MlwxNjVcMTQ1XDQyXDQwXHg2MVx4NzJceDY5XDE0MVw1NVx4NjVcMTcwXHg3MFwxNDFceDZlXHg2NFx4NjVceDY0XDc1XHgyMlx4NjZcMTQxXDE1NFx4NzNceDY1XHgyMlw3Nlx4YVx4MjBcNDBcNDBcNDBcNDBcNDBceDIwXHgyMFw0MFw0MFx4MjBceDIwXDQwXDQwXHgyMFx4MjBcMTIzXDE0NVx4NzRceDc0XHg2OVx4NmVcMTQ3XDE2M1wxMlw0MFw0MFw0MFw0MFx4MjBcNDBcNDBceDIwXDQwXHgyMFx4MjBcNDBcNDBcNDBceDIwXDQwXHgzY1x4MmZcMTQyXDE2NVwxNjRcMTY0XDE1N1wxNTZcNzZceGFcNDBceDIwXDQwXHgyMFw0MFw0MFx4MjBcNDBceDIwXDQwXDQwXDQwXDQwXHgyMFx4MjBcNDBcNzRceDY0XDE1MVx4NzZceDIwXHg2M1x4NmNceDYxXHg3M1wxNjNceDNkXDQyXHg2NFx4NzJceDZmXDE2MFwxNDRcMTU3XHg3N1wxNTZcNTVceDZkXHg2NVwxNTZceDc1XHgyMFwxNDRcMTYyXHg2Zlx4NzBceDZjXHg2NVwxNDZcMTY0XDQyXDc2XDEyXHgyMFx4MjBcNDBcNDBcNDBcNDBceDIwXDQwXDQwXHgyMFw0MFw0MFw0MFw0MFx4MjBceDIwXDQwXHgyMFw3NFwxNDFcNDBceDYzXHg2Y1wxNDFceDczXDE2M1x4M2RceDIyXDE0NFx4NzJceDZmXHg3MFwxNDRceDZmXHg3N1x4NmVceDJkXHg2OVwxNjRceDY1XHg2ZFx4MjBceDY0XHg2NVwxNTRceDY1XHg3NFx4NjVceDQ1XHg3OFx4NzBceDY1XHg3MlwxNTFcMTU1XHg2NVx4NmVcMTY0XDEwMVx4NzBcMTYwXDEwMlwxNjRcMTU2XHgyMlx4MjBceDY4XHg3Mlx4NjVceDY2XHgzZFx4MjJcNDNcNDJcNDBceDY0XDE0MVwxNjRceDYxXHgyZFx4NjlcMTQ0XDc1XDQyIiAuICRyb3ctPmlkIC4gIlw0Mlx4M2VceDQ0XDE0NVx4NmNceDY1XDE2NFx4NjVcNDBceDQxXDE2MFx4NzBcNzRceDJmXDE0MVw3Nlx4YVw0MFx4MjBcNDBceDIwXDQwXDQwXHgyMFw0MFx4MjBceDIwXHgyMFx4MjBcNDBcNDBcNDBcNDBcNzRceDJmXDE0NFwxNTFcMTY2XDc2XHhhXHgyMFw0MFx4MjBcNDBceDIwXHgyMFx4MjBceDIwXDQwXHgyMFx4MjBcNDBceDIwXHgyMFx4M2NcNTdcMTQ0XDE1MVwxNjZceDNlIjsgcmV0dXJuICRidG47IH0pLT5yYXdDb2x1bW5zKGFycmF5KCJcMTAxXDE0M1x4NzRceDY5XDE1N1x4NmUiKSktPm1ha2UodHJ1ZSk7IH0gcHVibGljIGZ1bmN0aW9uIEV4cGVyaW1lbnRBUFBEZWxldGVkKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGlkID0gJHJlcXVlc3QtPkV4cGVyaW1lbnRBUFBJRDsgU21hcnRsYWJBcHBzOjp3aGVyZSgiXDE1MVwxNDQiLCAkaWQpLT5kZWxldGUoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDFcMTYwXDE2MFwxNjJceDZmXHg3Nlx4NjVceDY0IiA9PiAiXDEwMVwxNjBcMTYwXDE1NFx4NjlceDYzXHg2MVx4NzRceDY5XHg2ZlwxNTZceDIwXDE1MFwxNDFceDczXHgyMFwxNDJceDY1XDE0NVx4NmVcNDBcMTQ0XDE0NVx4NmNceDY1XDE2NFx4NjVceDY0XDQwXHg3M1wxNjVcMTQzXDE0M1x4NjVcMTYzXDE2M1wxNDZcMTY1XHg2Y1wxNTRceDc5XDU2IikpOyB9IHB1YmxpYyBmdW5jdGlvbiBFeHBlcmltZW50SURmZXRjaChSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRkYXRhZXhwZXJpbWVudCA9IERCOjp0YWJsZSgiXDE0M1wxNTRceDYxXHg3M1wxNjNceDVmXHg2NVx4NzhcMTQ1XDE2MyIpLT53aGVyZSgiXDE1MVwxNDQiLCAkcmVxdWVzdC0+RXhwZXJpbWVudElERmV0Y2hlZCktPmZpcnN0KCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTQ0XHg2MVwxNjRcMTQxXDE0NVx4NzhceDcwXHg2NVwxNjJceDY5XDE1NVwxNDVcMTU2XDE2NCIgPT4gJGRhdGFleHBlcmltZW50KSk7IH0gcHVibGljIGZ1bmN0aW9uIHVzZXJjb250cm9sUEMoUmVxdWVzdCAkcmVxdWVzdCkgeyAkZGF0YXVzZXJzID0gREI6OnRhYmxlKCJceDc1XDE2M1wxNDVcMTYyXDE2MyIpLT53aGVyZSgiXDE1MVwxNDQiLCAkcmVxdWVzdC0+dXNlcklEKS0+Zmlyc3QoKTsgcmV0dXJuIHJlc3BvbnNlKCktPmpzb24oYXJyYXkoIlwxNDRcMTQxXDE2NFwxNDFcMTY1XHg3M1x4NjVcMTYyXHg3MyIgPT4gJGRhdGF1c2VycykpOyB9IHB1YmxpYyBmdW5jdGlvbiBBc3NpZ25Db250cm9sUEMoUmVxdWVzdCAkcmVxdWVzdCkgeyAkYXNzaWduUEMgPSBVc2Vyczo6ZmluZCgkcmVxdWVzdC0+dXNlcklEUENBc3NpZ24pOyAkYXNzaWduUEMtPmNvbnRyb2xfUEMgPSAkcmVxdWVzdC0+Y29udHJvbF9QQzsgJGFzc2lnblBDLT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJcMTY1XHg3MFx4NjRcMTQxXHg3NFx4NjVcMTQ0IiA9PiAiXHg0M1x4NmZcMTU2XHg3NFx4NzJcMTU3XDE1NFw0MFx4NTBcMTAzXHgyMFwxNTBceDYxXHg3M1x4MjBceDYyXDE0NVwxNDVceDZlXDQwXHg2MVx4NzNceDczXHg2OVx4NjdcMTU2XHg2NVwxNDRceDIwXDE2M1x4NzVceDYzXDE0M1wxNDVcMTYzXDE2M1wxNDZcMTY1XHg2Y1wxNTRcMTcxXHgyZSIpKTsgfSBwdWJsaWMgZnVuY3Rpb24gc2VhcmNobGFiKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGlucHV0ID0gJHJlcXVlc3QtPmxhYm5hbWU7ICRDbGFzc0RhdGEgPSBDbGFzc2VzOjp3aGVyZSgiXHg2M1wxNTRceDYxXHg3M1wxNjNcMTU2XDE0MVwxNTVcMTQ1IiwgIlx4NGNceDQ5XHg0Ylx4NDUiLCAiXHgyNXskaW5wdXR9XHgyNSIpLT5nZXQoKTsgcmV0dXJuIERhdGFUYWJsZXM6Om9mKCRDbGFzc0RhdGEpLT5hZGRJbmRleENvbHVtbigpLT5hZGRDb2x1bW4oIlx4NTNceDYzXDE1MFx4NjVcMTQ0XDE2NVx4NmNceDY1IiwgZnVuY3Rpb24gKCRyb3cpIHsgJGNsYXNzX3RpbWUgPSBEQjo6dGFibGUoIlwxNjdceDY1XHg2NVwxNTNceDVmXDE0NFx4NjFceDc5XHg3MyIpLT53aGVyZSgiXHg2M1x4NmNceDYxXDE2M1x4NzNcMTM3XDE1MVwxNDQiLCAkcm93LT5zY2hlZHVsZV9pZCktPmdldCgpOyBmb3JlYWNoICgkY2xhc3NfdGltZSBhcyAkdGltZURhdGEpIHsgJGRhdGFQYXNzZWRbXSA9ICcnIC4gJHRpbWVEYXRhLT5kYXkgLiAiXHgyMCIgLiAkdGltZURhdGEtPnN0YXJ0IC4gIlx4MjBcNTVceDIwIiAuICR0aW1lRGF0YS0+ZW5kIC4gIlw0MCI7IH0gaWYgKCRkYXRhUGFzc2VkKSB7IHJldHVybiAkZGF0YVBhc3NlZDsgfSB9KS0+cmF3Q29sdW1ucyhhcnJheSgiXDEyM1wxNDNceDY4XHg2NVx4NjRcMTY1XDE1NFx4NjUiKSktPm1ha2UodHJ1ZSk7IH0gcHVibGljIGZ1bmN0aW9uIHVwZGF0ZVByb2ZpbGUoUmVxdWVzdCAkcmVxdWVzdCwgJGlkKSB7ICR1c2VyID0gVXNlcnM6OmZpbmRPckZhaWwoJGlkKTsgaWYgKCFlbXB0eSgkcmVxdWVzdC0+aW5wdXQoIlwxNjBceDYxXDE2M1wxNjNceDc3XHg2ZlwxNjJceDY0IikpKSB7ICR1c2VyLT5wYXNzd29yZCA9IEhhc2g6Om1ha2UoJHJlcXVlc3QtPmlucHV0KCJceDcwXHg2MVwxNjNcMTYzXDE2N1x4NmZcMTYyXHg2NCIpKTsgJHVzZXItPnBhc3Nfc3RyaW5nID0gJHJlcXVlc3QtPmlucHV0KCJcMTYwXHg2MVwxNjNceDczXHg3N1x4NmZceDcyXHg2NCIpOyB9ICR1c2VyLT5zYXZlKCk7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDcwXHg3Mlx4NmZcMTQ2XHg2OVwxNTRceDY1XHg1NVx4NzBcMTQ0XDE0MVx4NzRcMTQ1XDE0NCIgPT4gIlx4NDFcMTQzXHg2M1x4NmZceDc1XHg2ZVwxNjRcNDBcMTUwXHg2MVwxNjNceDIwXDE0MlwxNDVcMTQ1XDE1Nlw0MFx4NzVcMTYwXDE0NFwxNDFceDc0XHg2NVx4NjRcNDBceDczXDE2NVx4NjNceDYzXHg2NVwxNjNcMTYzXDE0NlwxNjVceDZjXDE1NFwxNzFcNDEiKSk7IH0gfSA=')); ?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 11ea237ed562e2ed05d23098211cb732 |
Eval Count | 1 |
Decode Time | 331 ms |