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 $_F=__FILE__;$_C1353562110='Pz48P2RlZAokb2p5SCA9IHFsUXZqREgocWxRdmpESChfXzNaVmlfXykp..

Decoded Output download

?><?php
$base = dirname(dirname('index.php'));

if (!function_exists("app_class_autoloader")) {
    include($base . "/lib/app_top.php");
}
if (!isset($_SESSION[SESSION_VAR_NAME]['user_id'])) {
    header("location: ../error_401.php");
    exit();
} else {
    //ini_set("display_errors", 1);
    $Page = new page($db);
    $taskAccessRight = $Page->accesspermissions('513', $_SESSION[SESSION_VAR_NAME]['role']);
    $no_taskAccessRight = count($taskAccessRight);
    $access_type = array();
    foreach ($taskAccessRight as $p_ar) {
        array_push($access_type, $p_ar['type']);
    }

    if (!empty($no_taskAccessRight) && $no_taskAccessRight > 0) {

        if (in_array('3', $access_type)) {

            $_SESSION[SESSION_VAR_NAME]['wf_view_type'] = '2';

            $WBuilder = new workflow_builder($db);
            $Workflow = new workflow($db);
            $WRole = new workflow_role($db);
            $Project = new project($db);
            $IMASTER = new index_master($db);
            $User = new user($db);
            $Tasklist = new task_list($db);

            $Template = new template($db);
            $WRule = new workflow_rule($db);
            $dept_id = $_SESSION[SESSION_VAR_NAME]['dept_id'];
            //print_r($_REQUEST);
            $wim_id = $_REQUEST['wim_id'];
            $im_rid = $_REQUEST['im_rid'];
            $im_id = $_REQUEST['im_id'];
            $imf_id = $_REQUEST['imf_id'];
            $bid = $_REQUEST['bid'];
            $pid = $_REQUEST['pid'];
            $clk_bvid = $_REQUEST['bvid'];
            $im_builder_details = base64_encode($im_id.'@'.$im_rid.'@'.$bid);

            $_SESSION['im_bid'] = $bid;
            $_SESSION['im_bvid'] = $_REQUEST['bvid'];

            //print_r($_REQUEST);



            $index_field_details = $IMASTER->getIndexFieldForExcel_ByIMId($im_id);

            $IMASTER->setRecordId($im_rid);
            $index_value_details = $IMASTER->getIndexValue_ByRecordSetId($im_id);
            $select_field = array();
            for ($x = 0; $x < count($index_field_details); $x++) {
                if ($index_field_details[$x]['field_type'] == 'Select Menu') {
                    array_push($select_field, $index_field_details[$x]['field_name_table']);
                }
            }
            $index_master_fields = $IMASTER->getIndexFieldName_ByIMId($im_id);

            $query_fields = array();
            $query_values = array();


            for ($x = 0; $x < count($index_field_details); $x++) {
                $d_field_name_table = $index_field_details[$x]['field_name_table'];

                if ($index_field_details[$x]['field_type'] == 'Select Menu') {
                    $details = $IMASTER->getFieldExtend_ById($index_value_details[0][$d_field_name_table]);
                    if (!empty($details)) {
                        $field_value = $details[0]['id'];
                    } else {
                        $field_value = $index_value_details[0][$d_field_name_table];
                    }

                    array_push($query_values, $field_value);
                } else {
                    $field_value = $index_value_details[0][$d_field_name_table];
                    array_push($query_values, $field_value);
                }

                array_push($query_fields, $d_field_name_table);

                if ($im_fid == $index_field_details[$x]['id']) {
                    $sel_imf_name = $index_field_details[$x]['field_name'];
                    $sel_imf_value = $field_value;
                }
            }



            $a_step_details = $Workflow->get_InprocessSteps_WIM_ByBid($pid, $bid, $im_id, $im_rid);
            $a_step_arr = array();
            $a_steptype_arr = array();
            foreach ($a_step_details as $a_step) {
                $a_bvalue_details = $WBuilder->get_WBuilderValue_Id($a_step['a_builder_value_id']);
                array_unshift($a_step_arr, $a_step['a_builder_value_id']);
                array_unshift($a_steptype_arr, $a_bvalue_details[0]['step_type']);
            }
            $a_step_join = join(',', $a_step_arr);
            //echo $_REQUEST['bvid'];
            if (!empty($_REQUEST['bvid'])) {
                $bvid = $_REQUEST['bvid'];
                $_SESSION[SESSION_VAR_NAME]['bvid' . $bid] = $bvid;
            } else {
                $bvid = $_SESSION[SESSION_VAR_NAME]['bvid' . $bid];
            }
//$last_status=$Workflow->get_WIMLast_status($bid,$im_rid,$_REQUEST['bvid']);
// echo $bid . "#" . $im_id . "#" . $im_rid . "#" . $wim_id."#".$_REQUEST['bvid']."#";
            /* $last_status_info="";
              $last_status_info= $last_status[0]['status'];
              $request_status_str_last="";
              echo $last_status_info;
              echo "<br>";
              if (empty($last_status_info)) {
              $request_status_str_last = 'Pending';
              } else if ($last_status_info == '1') {
              $request_status_str_last = 'Approved';
              } else if ($last_status_info == '2') {
              $request_status_str_last = 'Escalate';
              } else if ($last_status_info == '3') {
              $request_status_str_last = 'Rejected';
              } else if ($last_status_info == '4') {
              $request_status_str_last = 'End as approval';
              } else if ($last_status_info == '5') {
              $request_status_str_last = 'End as rejected';
              } else if ($last_status_info == '6') {
              $request_status_str_last = 'Hold';
              } else if ($last_status_info == '7') {
              $request_status_str_last = 'Referred (Consult) - Inprocess';
              } else if ($last_status_info == '8') {
              $request_status_str_last = 'Referred (Consult) - Closed';
              } else if ($last_status_info == '9') {
              $request_status_str_last = 'Force Closed';
              } else if ($last_status_info == '10') {
              $request_status_str_last = 'Approve => User';
              } else if ($last_status_info == '11') {
              $request_status_str_last = 'Approved with forward';
              } else if ($last_status_info == '12') {
              $request_status_str_last = 'Rejected with forward';
              } else if ($last_status_info == '13') {
              $request_status_str_last = 'Rejected with backward';
              } else if ($last_status_info == '14') {
              $request_status_str_last = 'Skiped';
              } else if ($last_status_info == '16') {
              $request_status_str_last = 'Delegate';
              } else if ($last_status_info == '17') {
              $request_status_str_last = 'Flexiflow';
              } else if ($last_status_info == '18') {
              $request_status_str_last = 'Assigned to user';
              } else if ($last_status_info == '19') {
              $request_status_str_last = 'Round Robin';
              } else if ($last_status_info == '20') {
              $request_status_str_last = 'Lateral Flow - Inprocess';
              } else if ($last_status_info == '21') {
              $request_status_str_last = 'Lateral Flow - Closed';
              }
              echo $request_status_str_last;
              echo "||";
              exit;
             */
            $lateral_flow_steps = $WBuilder->get_workflow_im_Lusers($pid, $bid, $bvid, $im_id, $im_rid);
            $lateral_flow_steps_inprocess = $WBuilder->get_workflow_im_Lusers_status($pid, $bid, $bvid, $im_id, $im_rid, '20');

            $lateral_inprocess_users = array_column($lateral_flow_steps_inprocess, "user_id");
            #=========================================
            #       FLEXI FLOW
            #=========================================

            $WBuilder->setProjectId($pid);
            $WBuilder->setBuilderId($bid);
            $WBuilder->setRecordSetId($im_rid);
            $flexiflow_steps = $WBuilder->get_Workflow_IM_Flex();
            $ff_step_arr = array();
            foreach ($flexiflow_steps as $ff_step) {
                array_push($ff_step_arr, $ff_step['builder_value_id']);
            }


            $next_parallel_steps = $WBuilder->get_WBuilderValue_Next_BId_Parallel($bid, $bvid);

            //array_pop($next_parallel_steps);
            //print_r($next_parallel_steps);


            if ($a_step_details[0]['step_type'] == 1 || $a_step_details[0]['step_type'] == 0) {
                $WBuilder->process_steps = array();
                $next_sequential_step = $WBuilder->get_WBuilderValue_Next_BId_Sequential($bid, $bvid);
                $next_squential_step = end($next_sequential_step);
                //echo $next_squential_step;

                $get_ff_batch_steps = $WBuilder->get_FF_range($bid, $bvid, $next_squential_step, $im_rid);
                $no_ff_batch_steps = count($get_ff_batch_steps);
                if (empty($no_ff_batch_steps)) {
                    if (count($next_parallel_steps) > 0) {
                        $allow_flexiflow = 1;
                    } else {
                        $allow_flexiflow = 0;
                    }
                } else {
                    $allow_flexiflow = 0;
                }
            } else {
                $allow_flexiflow = 0;
            }
            //echo $allow_flexiflow;
            #=========================================
            #       END - FLEXI FLOW
            #=========================================
            //=======================================
            //   CHECK PARALLEL STEP ALREADY RUNNING
            //=======================================
            $is_steptype_parallel = 0;
            $is_steptype_sequential = 0;
            $x = 0;
            foreach ($a_steptype_arr as $a_steptype) {
                //echo $bvid.' '.$a_step_arr[$x].'/';        
                if ($a_steptype == 2) {
                    $is_steptype_parallel += 1;
                }

                if ($a_steptype == 1) {
                    if ($is_steptype_parallel >= 1) {
                        $parallel_step_running = 1;
                    }
                    $is_steptype_sequential += 1;
                }

                if ($bvid == $a_step_arr[$x]) {
                    break;
                }
                $x++;
            }

//=======================================
// END CHECK PARALLEL STEP ALREADY RUNNING
//=======================================

            if (empty($bvid)) {
                echo '<div class="alert"><button type="button" class="close" data-dismiss="alert"></button><i class="icon-exclamation-sign"></i><strong>Warning!</strong> Select work-flow step!.</div>';
            } else {
                $Global_Settings = new global_settings($db);
                $Approved1 = $Global_Settings->get_application_sizeLimit_detail_byId(4);
                $Unapproved1 = $Global_Settings->get_application_sizeLimit_detail_byId(5);
                $Rejected1 = $Global_Settings->get_application_sizeLimit_detail_byId(6);
                $document_annotation_status = $Global_Settings->get_module_info_byId(34);
//echo $bvid;
                $_SESSION[SESSION_VAR_NAME]['bvid' . $bid] = $bvid;


                $builder_details = $WBuilder->get_WBuilder_Id($bid);
                $wmanager_info = $User->getUserName_ById($builder_details[0]['workflow_manager']);
                $wmanager_name = $wmanager_info[0]['fname'] . ' ' . $wmanager_info[0]['mname'] . ' ' . $wmanager_info[0]['lname'];

                $wim_details = $Workflow->getWIM_ByID($wim_id);
                //print_r($_REQUEST);
//print_r($wim_details);
                //$pid = $wim_details[0]['project_id'];
                //$im_id = $wim_details[0]['im_id'];
                //$imf_id = $wim_details[0]['imf_id'];
                //$im_rid = $wim_details[0]['record_set_id'];

                $check_next_builder_details = $WBuilder->get_WBuilderValue_Next_BId($bid, $bvid);

                if (empty($check_next_builder_details)) {
                    $is_last_step = 1;
                } else {
                    $is_last_step = 0;
                }

                $index_master_details = $IMASTER->getIndexMaster_ById($im_id);
                $template_name = $index_master_details[0]['index_master'];
                $index_field_details = $IMASTER->getIndexFieldUser($im_id, $_SESSION[SESSION_VAR_NAME]['role']);
                $Template->setProject_Id($pid);
                $template_details = $Template->getTemplateByName($template_name);
//print_r($template_details);

                $IMASTER->setRecordId($im_rid);
                $index_value_details = $IMASTER->getIndexValue_ByRecordSetId($im_id);
                $im_field_info = $IMASTER->getIndexField_ById($imf_id);

//print_r($imf_id);


                $a_builder_value_id = $a_step_join;

                $project_details = $Project->getProject_ById($pid);
                $bvalue_details = $WBuilder->get_WBuilderValue_Id($bvid);

                $builder_value_rroles = $WBuilder->get_workflow_builder_Rroles_ByBvid($bvid);

                $builder_value_rrole_arr = array();
                foreach ($builder_value_rroles as $builder_value_rrole) {
                    array_push($builder_value_rrole_arr, $builder_value_rrole['role_id']);
                }

                $builder_value_lroles = $WBuilder->get_workflow_builder_Lroles_ByBvid($bvid);

                $builder_value_lrole_arr = array();
                foreach ($builder_value_lroles as $builder_value_lrole) {
                    array_push($builder_value_lrole_arr, $builder_value_lrole['role_id']);
                }

                $builder_value_droles = $WBuilder->get_workflow_builder_Droles_ByBvid($bvid);


                #=========================================
                #       FLEXI FLOW
                #=========================================

                $WBuilder->setProjectId($pid);
                $WBuilder->setBuilderId($bid);
                $WBuilder->setRecordSetId($im_rid);
                $flexiflow_steps = $WBuilder->get_Workflow_IM_Flex();
                $ff_step_arr = array();
                foreach ($flexiflow_steps as $ff_step) {
                    array_push($ff_step_arr, $ff_step['builder_value_id']);
                }

                $WBuilder->process_steps = array();
                $next_parallel_steps = $WBuilder->get_WBuilderValue_Next_BId_Parallel($bid, $bvid);

                //array_pop($next_parallel_steps);
                //print_r($next_parallel_steps);


                if ($bvalue_details[0]['step_type'] == 1 || empty($bvalue_details[0]['step_type'])) {
                    $WBuilder->process_steps = array();
                    $next_sequential_step = $WBuilder->get_WBuilderValue_Next_BId_Sequential($bid, $bvid);
                    $next_squential_step = end($next_sequential_step);
                    //echo $next_squential_step;

                    $get_ff_batch_steps = $WBuilder->get_FF_range($bid, $bvid, $next_squential_step, $im_rid);
                    $no_ff_batch_steps = count($get_ff_batch_steps);
                    if (empty($no_ff_batch_steps)) {
                        if (count($next_parallel_steps) > 0) {
                            $processed_ff_batch_steps = $WBuilder->Check_Processed_Steps($bid, $bvid, $next_squential_step, $im_rid);
                            $no_processed_ff_batch_steps = count($processed_ff_batch_steps);
                            if (empty($no_processed_ff_batch_steps)) {
                                $allow_flexiflow = 1;
                            } else {
                                $allow_flexiflow = 0;
                            }
                        } else {
                            $allow_flexiflow = 0;
                        }
                    } else {
                        $allow_flexiflow = 0;
                    }
                } else {
                    $allow_flexiflow = 0;
                }
                //echo $allow_flexiflow;
                #=========================================
                #       END - FLEXI FLOW
                #=========================================


                $builder_value_drole_arr = array();
                foreach ($builder_value_droles as $builder_value_drole) {
                    array_push($builder_value_drole_arr, $builder_value_drole['role_id']);
                }

//echo $wim_id;
//print_r($bvalue_details[0]['step_name']);
                /// $rule_info = $WRule->get_Rule_ID($rule_id);
                //$formula_details = $WRule->get_formula_byRule($rule_id);
                //$no_formulas = count($formula_details);
                $previous_bvalue_details = $WBuilder->get_WBuilderValue_Previous_BId($bid, $bvid);

                $first_bvalue_details = $WBuilder->get_WBuilderValue_First_BId($bid);

                if ($first_bvalue_details[0]['id'] == $bvalue_details[0]['id']) {
                    $first_step = 1;
                } else {
                    $first_step = 0;
                }

                if (count($previous_bvalue_details) >= 1) {
                    $prev_step_status_details = $Workflow->get_WIMStatus_LatestBvIdRID($previous_bvalue_details[0]['id'], $bid, $im_rid);
                }
                $latest_status_details = $Workflow->get_WIMStatus_LatestBvIdRID($bvid, $bid, $im_rid);


                $onprocess_status_details = $Workflow->get_WIMStatus_OnprocessRID($bvid, $wim_id, $im_rid);



                $workflowstep_details = $Workflow->get_WBuilderValue_ByBID($bid);
                $no_step_details = count($workflowstep_details);

                $bvid_all = array_column($workflowstep_details, 'id');


                $c_bvid_position = array_search($bvid, $bvid_all);


                $tasklist_info = $WBuilder->getBuilderTask_ByValueId($bvid);
                $no_tasklist_info = count($tasklist_info);



                $role_master_id = $bvalue_details[0]['role_master_id'];


                $rule_id = $bvalue_details[0]['rule_id'];


                //$rule_id = $wim_details[0]['a_rule'];
                //print_r($bvalue_details);

                /*

                  $log_json = '{"events": [';
                  $logs_list = $Workflow->getWorkflow_Logs_ByReffId('WF index-master', $wim_id, $bid, $im_rid);
                  $no_logs_list = count($logs_list);

                  for ($i = 0; $i < $no_logs_list; $i++) {
                  if ($i + 1 < $no_logs_list) {
                  $comma = ',';
                  } else {
                  $comma = '';
                  }
                  $created_at = $logs_list[$i]['created_at'];
                  $log_json .= '{
                  "start_date": {
                  "month": "' . date("n", strtotime($created_at)) . '",
                  "day": "' . date("j", strtotime($created_at)) . '",
                  "year": "' . date("Y", strtotime($created_at)) . '",
                  "hour": "' . date("G", strtotime($created_at)) . '",
                  "minute": "' . date("i", strtotime($created_at)) . '",
                  "second": "' . date("s", strtotime($created_at)) . '"
                  },
                  "text": {
                  "headline": "' . $logs_list[$i]['sub_module'] . $logs_list[$i]['trigger_process'] . '"

                  },

                  "group": "' . $logs_list[$i]['sub_module'] . '"
                  }';

                  $log_json .= $comma;
                  }
                  $log_json .= ']}';
                  $logs_json_file = '../documents/tmp/wf_im_' . $im_rid . '.json';
                  file_put_contents($logs_json_file, $log_json); */

                $role_master_id = $wim_details[0]['a_role_master_id'];
                if ($bvalue_details[0]['role_master_id'] == -1) {
                    $rule_info = $WRule->get_Rule_ID($rule_id);
                    //print_r();

                    $formula_details = $WRule->get_formula_byRule($rule_id);
                    $no_formulas = count($formula_details);
                } else if ($bvalue_details[0]['role_master_id'] == -2) {
                    $rule_info = $WRule->get_advanced_rule_byID($rule_id);
                    //print_r();

                    $formula_details = $WRule->get_rule_advanced_formulas_byRuleID($rule_id);
                    $no_formulas = count($formula_details);
                }

                $a_role_master_id = $wim_details[0]['a_role_master_id'];

                $index_field_details = $IMASTER->getIndexFieldUser($im_id, $_SESSION[SESSION_VAR_NAME]['role']);
                $index_master_field_value = $IMASTER->getMasterValue_ByID($im_id, $im_rid);
                $select_field = array();
                for ($i = 0; $i < count($index_field_details); $i++) {
                    if ($index_field_details[$i]['field_type'] == 'Select Menu' || $index_field_details[$i]['field_type'] == 'Checkbox' || $index_field_details[$i]['field_type'] == 'Radio') {
                        array_push($select_field, $index_field_details[$i]['field_name_table']);
                    }
                }
                $index_master_fields = $IMASTER->getIndexFieldName_ByIMId($im_id);
                $field_details = array();
                if (empty($select_field)) {

                    for ($i = 0; $i < count($index_master_fields); $i++) {
//array_push($field_details,array($index_master_fields[$i]['field_name_table']=>$index_master_field_value[0][$index_master_fields[$i]['field_name_table']]));
                        array_push($field_details, array(0 => $index_master_fields[$i]['field_name_table'], 1 => $index_master_field_value[0][$index_master_fields[$i]['field_name_table']]));
                    }
                } else {
                    for ($i = 0; $i < count($index_master_fields); $i++) {


                        if (in_array($index_field_details[$i]['field_name_table'], $select_field)) {
                            $select_value = $IMASTER->getFieldExtend_ById($index_master_field_value[0][$index_master_fields[$i]['field_name_table']]);
// echo '***'.$index_master_field_value[0][$index_master_fields[$i]['field_name_table']];
// print_r($select_value);
                            array_push($field_details, array(0 => $index_master_fields[$i]['field_name_table'], 1 => $select_value[0]['field_value']));
                        } else {
                            array_push($field_details, array(0 => $index_master_fields[$i]['field_name_table'], 1 => $index_master_field_value[0][$index_master_fields[$i]['field_name_table']]));
                        }
                    }
                }
//print_r($role_master_id);
                $field_details = json_encode($field_details);

                $a_bid_value = $wim_details[0]['a_builder_value_id'];

                if ($wim_details[0]['a_builder_value_id'] == $bvid) {
                    $step_role_id = $a_role_master_id;
                } else {
                    $step_role_id = $bvalue_details[0]['role_master_id'];
                }
                //$step_role_id = $a_role_master_id;
                /* if ($step_role_id == -1) {
                  //$rule_info = $WRule->get_Rule_ID($step_info[0]['rule_id']);
                  $formula_details = $WRule->get_formula_byRule($bvalue_details[0]['rule_id']);
                  $step_role_id = $formula_details[0]['role_master_id'];
                  } */

                $WRole->setRoleMasterId($step_role_id);
                $role_usergroups = $WRole->get_Assigned_Usergroup();

                foreach ($role_usergroups as $role_usergroup) {
                    if ($role_usergroup['role_type'] == 1) {
                        $primary_usergroup_info = $User->getUserGroup_byId($role_usergroup['user_group_id']);
                        $primary_usergroup = $primary_usergroup_info[0]['name'];
                        $primary_usergroup_id = $primary_usergroup_info[0]['id'];

                        $available_primary_users = $Workflow->getDM_AvailableUser_ByRole($pid, $primary_usergroup_id);

                        $unavailable_primary_users = $Workflow->getDM_UnavailableUser_ByRole($pid, $primary_usergroup_id);
                    } else if ($role_usergroup['role_type'] == 0) {
                        $secondary_usergroup_info = $User->getUserGroup_byId($role_usergroup['user_group_id']);
                        $secondary_usergroup = $secondary_usergroup_info[0]['name'];
                        $secondary_usergroup_id = $secondary_usergroup_info[0]['id'];

                        $available_secondary_users = $Workflow->getDM_AvailableUser_ByRole($pid, $secondary_usergroup_id);
                        $unavailable_secondary_users = $Workflow->getDM_UnavailableUser_ByRole($pid, $secondary_usergroup_id);
                    } else if ($role_usergroup['role_type'] == -1) {
                        $is_hierarchy = 1;
                        $field_id = $role_usergroup['user_group_id'];

                        $IMaster = new index_master($db);
                        $field_details = $IMaster->getIndexField_ById($field_id);
                        $field_name = $field_details[0]['field_name'];
                        $im_value_details = $IMaster->getMasterField_name($im_id, $im_rid, 'im_field_' . $field_id);
                        $field_value = $im_value_details[0]['im_field_' . $field_id];

                        $primary_usergroup_info = $User->getUserGroup_byname($field_value);

                        $primary_usergroup = $primary_usergroup_info[0]['name'];
                        $primary_usergroup_id = $primary_usergroup_info[0]['id'];

                        $available_primary_users = $Workflow->getUsers_UserGroupHierarchy($primary_usergroup_id);


                        //$unavailable_primary_users1 = $Workflow->getDM_UnavailableUser_ByRole($pid, $primary_usergroup_id1);
                    } else if ($role_usergroup['role_type'] == -2) {
                        $is_hierarchy = 1;
                        $field_id = $role_usergroup['user_group_id'];

                        $IMaster = new index_master($db);
                        $field_details = $IMaster->getIndexField_ById($field_id);
                        $field_name = $field_details[0]['field_name'];
                        $im_value_details = $IMaster->getMasterField_name($im_id, $im_rid, 'im_field_' . $field_id);
                        $field_value = $im_value_details[0]['im_field_' . $field_id];

                        $secondary_usergroup_info = $User->getUserGroup_byname($field_value);
                        $secondary_usergroup = $secondary_usergroup_info[0]['name'];
                        $secondary_usergroup_id = $secondary_usergroup_info[0]['id'];

                        $available_secondary_users = $Workflow->getUsers_UserGroupHierarchy($secondary_usergroup_id);
                        //$unavailable_secondary_users1 = $Workflow->getDM_UnavailableUser_ByRole($pid, $secondary_usergroup_id1);
                    }
                }

                if ($_SESSION[SESSION_VAR_NAME]['role'] == 1 || $_SESSION[SESSION_VAR_NAME]['user_id'] == 1) {

                    if (count($available_primary_users) > 0) {
                        $primary_delegate = 0;
                    } else if (count($available_secondary_users) > 0) {
                        $primary_delegate = 1;
                    } else if (count($available_secondary_users) <= 0 && count($available_primary_users) <= 0) {

                        $primary_delegate = 1;
                        $secondary_delegate = 1;
                    }

                    if ($wim_details[0]['a_status'] == 15) {
                        $step_access = 0;
                    } else {
                        $step_access = 1;
                    }
                } else {
//if (count($available_primary_users) > count($unavailable_primary_users)) {
                    if (count($available_primary_users) > 0) {
//print_r(array_column($available_primary_users, 'id'));
//echo $_SESSION[SESSION_VAR_NAME]['user_id'];
                        if (empty($is_hierarchy)) {
                            $primary_id_arr = array_column($available_primary_users, 'id');
                        } else {
                            $primary_id_arr = array_column($available_primary_users, 'user_id');
                        }
                        $key = array_search($_SESSION[SESSION_VAR_NAME]['user_id'], $primary_id_arr);

//echo '/'.$key;
                        if (is_numeric($key)) {
                            $step_access = 1;
                        } else {
                            $step_access = 0;
                        }
                        //$primary_delegate = 0;
//echo '/'.$step_access;
//} else if (count($available_secondary_users) > count($unavailable_secondary_users)) {
                    } else if (count($available_secondary_users) > 0) {
                        $primary_delegate = 1;
                        $secondary_id_arr = array_column($available_secondary_users, 'id');

                        $key = array_search($_SESSION[SESSION_VAR_NAME]['user_id'], $secondary_id_arr);
                        if (is_numeric($key)) {
                            $step_access = 1;
                        } else {
                            $step_access = 0;
                        }
                    } else if (count($available_secondary_users) <= 0 && count($available_primary_users) <= 0) {

                        $primary_delegate = 1;
                        $secondary_delegate = 1;
                        if ($_SESSION[SESSION_VAR_NAME]['user_id'] == $builder_details[0]['workflow_manager']) {
                            $step_access = 1;
                        } else {
                            $step_access = 0;
                        }
                    }
                }
                //echo $step_access;
//print_r($wim_details);
                $wim_rrole_users = $WBuilder->get_workflow_im_Aroles_ByBvidRId($im_id, $im_rid, $bvid);
                //print_r($wim_rrole_users);
                $wim_rrole_users_list = array_column($wim_rrole_users, 'user_id');

                if ($_SESSION[SESSION_VAR_NAME]['role'] == 1 || $_SESSION[SESSION_VAR_NAME]['user_id'] == 1) {

                    if (count($available_primary_users) > 0) {
                        $primary_delegate = 0;
                    } else if (count($available_secondary_users) > 0) {
                        $primary_delegate = 1;
                    } else if (count($available_secondary_users) <= 0 && count($available_primary_users) <= 0) {

                        $primary_delegate = 1;
                        $secondary_delegate = 1;
                    }

                    if ($wim_details[0]['a_status'] == 0) { //Pending
                        if ($bvalue_details[0]['processed_user'] == 1) {
                            //$first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);
                            $already_processed_user_info = $Workflow->get_WIMStatus_LatestUGroupRID($wim_details[0]['builder_id'], $wim_details[0]['record_set_id'], $wim_details[0]['a_user_group']);
                            if (!empty($already_processed_user_info[0]['created_by'])) {
                                $c_already_processed_user = 1;
                            }
                        }
                    }
                    if ($wim_details[0]['a_status'] == '7') { //Reffer
                        if ($bvalue_details[0]['processed_user'] == 1) {
                            $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);

                            if (!empty($first_arole_info[0]['user_id'])) {
                                $c_user_referred = 0;
                            }
                        }
                    }

                    $step_access = 1;
                } elseif ($_SESSION[SESSION_VAR_NAME]['user_id'] == $builder_details[0]['workflow_manager']) {
                    if ($wim_details[0]['a_status'] == 0) { //Pending
                        if ($bvalue_details[0]['processed_user'] == 1) {
                            //$first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);
                            $already_processed_user_info = $Workflow->get_WIMStatus_LatestUGroupRID($wim_details[0]['builder_id'], $wim_details[0]['record_set_id'], $wim_details[0]['a_user_group']);
                            if (!empty($already_processed_user_info[0]['created_by'])) {
                                $c_already_processed_user = 1;
                            }
                        }
                    }
                    if ($wim_details[0]['a_status'] == '7') { //Reffer
                        if ($bvalue_details[0]['processed_user'] == 1) {
                            $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);

                            if (!empty($first_arole_info[0]['user_id'])) {
                                $c_user_referred = 0;
                            }
                        }
                    }

                    $step_access = 1;
                } else {

                    if (count($available_primary_users) > 0) {

                        if (empty($is_hierarchy)) {
                            $primary_id_arr = array_column($available_primary_users, 'id');
                        } else {
                            $primary_id_arr = array_column($available_primary_users, 'user_id');
                        }
                        $key = array_search($_SESSION[SESSION_VAR_NAME]['user_id'], $primary_id_arr);

                        if (is_numeric($key)) {
                            $step_access = 1;
                        } else {
                            $step_access = 0;
                        }
                    } else if (count($available_secondary_users) > 0) {
                        $primary_delegate = 1;
                        $secondary_id_arr = array_column($available_secondary_users, 'id');

                        $key = array_search($_SESSION[SESSION_VAR_NAME]['user_id'], $secondary_id_arr);
                        if (is_numeric($key)) {
                            $step_access = 1;
                        } else {
                            $step_access = 0;
                        }
                    } else if (count($available_secondary_users) <= 0 && count($available_primary_users) <= 0) {

                        $primary_delegate = 1;
                        $secondary_delegate = 1;
                        if ($_SESSION[SESSION_VAR_NAME]['user_id'] == $builder_details[0]['workflow_manager']) {
                            $step_access = 1;
                        } else {
                            $step_access = 0;
                        }
                    }


                    if ($c_user_referred == '1' && $wim_details[0]['a_status'] == '8') {
                        $step_access = 0;
                    }

//echo $step_access;
//echo count($wim_rrole_users);
//echo $_SESSION[SESSION_VAR_NAME]['user_id'];
//print_r($wim_rrole_users_list);
                    //print_r($wim_rrole_users);
                    if (count($wim_rrole_users) > 0) {
                        if (in_array($_SESSION[SESSION_VAR_NAME]['user_id'], $wim_rrole_users_list)) {

                            if ($wim_details[0]['a_status'] == '7') { //Reffer
                                if ($_SESSION[SESSION_VAR_NAME]['role'] == $wim_details[0]['a_user_group'] || ($builder_details[0]['workflow_type'] == 2 )) {

                                    if ($bvalue_details[0]['processed_user'] == 1) {

                                        $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);

                                        if ($builder_details[0]['workflow_type'] == 2) {
                                            $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst_UserBase($im_id, $im_rid, $bvid, $_SESSION[SESSION_VAR_NAME]['user_id']);
                                        }

                                        if ($first_arole_info[0]['user_id'] == $_SESSION[SESSION_VAR_NAME]['user_id']) {
                                            $c_user_referred = 0;
                                            $c_approve_to_user = 0;
                                            $c_delegated_to_user = 0;
                                            $step_access = 1;
                                        } else {
                                            $c_user_referred = 1;
                                            $c_approve_to_user = 0;
                                            $c_delegated_to_user = 0;
                                            $step_access = 1;
                                        }
                                    } else {
                                        // $c_user_referred = 0;
                                        // $c_approve_to_user = 0;
                                        // $c_delegated_to_user = 0;
                                        // $step_access = 1;

                                        $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);

                                        if ($builder_details[0]['workflow_type'] == 2) {
                                            $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst_UserBase($im_id, $im_rid, $bvid, $_SESSION[SESSION_VAR_NAME]['user_id']);
                                        }

                                        if ($first_arole_info[0]['user_id'] == $_SESSION[SESSION_VAR_NAME]['user_id']) {
                                            $c_user_referred = 0;
                                            $c_approve_to_user = 0;
                                            $c_delegated_to_user = 0;
                                            $step_access = 1;
                                        } else {
                                            $c_user_referred = 1;
                                            $c_approve_to_user = 0;
                                            $c_delegated_to_user = 0;
                                            $step_access = 1;
                                        }
                                    }
                                } else {
                                    $c_user_referred = 1;
                                    $c_approve_to_user = 0;
                                    $c_delegated_to_user = 0;
                                    $step_access = 1;
                                }
                            } elseif ($prev_step_status_details[0]['status'] == '10') { //Approve=>User
                                $c_approve_to_user = 1;
                                $c_user_referred = 0;
                                $c_delegated_to_user = 0;
                                $step_access = 1;
                            } elseif ($wim_details[0]['a_status'] == '16') { //Delegate
                                $c_approve_to_user = 0;
                                $c_delegated_to_user = 1;
                                $c_user_referred = 0;
                                $step_access = 1;
                            } elseif ($wim_details[0]['a_status'] == '18') { //Assigned to user
                                $c_approve_to_user = 0;
                                $c_delegated_to_user = 0;
                                $c_user_referred = 0;
                                $c_assigned_to_user = 1;
                                $step_access = 1;
                            } elseif ($wim_details[0]['a_status'] == 0) { //Pending
                                if ($bvalue_details[0]['processed_user'] == 1) {

                                    if ($first_step == 1) {
                                        $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);
                                        $already_processed_user_id = $first_arole_info[0]['user_id'];
                                    } else {
                                        $already_processed_user_info = $Workflow->get_WIMStatus_LatestUGroupRID($wim_details[0]['builder_id'], $wim_details[0]['record_set_id'], $wim_details[0]['a_user_group']);
                                        $already_processed_user_id = $already_processed_user_info[0]['created_by'];
                                    }

                                    if ($already_processed_user_id == $_SESSION[SESSION_VAR_NAME]['user_id']) {
                                        $c_already_processed_user = 1;
                                        $c_user_referred = 0;
                                        $c_approve_to_user = 0;
                                        $c_delegated_to_user = 0;
                                        $step_access = 1;
                                    } else {
                                        $c_already_processed_user = 1;
                                        if ($builder_details[0]['workflow_type'] == 2) {
                                            $c_user_referred = 0;
                                        } else {
                                            $c_user_referred = 1;
                                        }
                                        $c_approve_to_user = 0;
                                        $c_delegated_to_user = 0;
                                        $step_access = 0;
                                    }
                                } else {
                                    $c_already_processed_user = 0;
                                    $c_approve_to_user = 0;
                                    $c_delegated_to_user = 0;
                                    $c_user_referred = 0;
                                    $step_access = 1;
                                }
                            } elseif (empty($wim_details[0]['a_status'])) { //Reverse Rejected
                                $c_approve_to_user = 0;
                                $c_delegated_to_user = 0;
                                $c_user_referred = 0;
                                $step_access = 1;
                            }
                        } else if (!in_array($_SESSION[SESSION_VAR_NAME]['user_id'], $wim_rrole_users_list)) {

                            if ($prev_step_status_details[0]['status'] == '10') { //Approve=>User
                                if ($_SESSION[SESSION_VAR_NAME]['role'] == 1 || $_SESSION[SESSION_VAR_NAME]['role'] == 2 || $builder_details[0]['workflow_manager'] == $_SESSION[SESSION_VAR_NAME]['user_id']) {
                                    $c_approve_to_user = 1;
                                    $c_user_referred = 0;
                                    $step_access = 1;
                                } else {
                                    $c_approve_to_user = 1;
                                    $c_user_referred = 0;
                                    $step_access = 0;
                                }
                            } else if ($wim_details[0]['a_status'] == '16') { //Delegate
                                if ($_SESSION[SESSION_VAR_NAME]['role'] == 1 || $_SESSION[SESSION_VAR_NAME]['role'] == 2 || $builder_details[0]['workflow_manager'] == $_SESSION[SESSION_VAR_NAME]['user_id']) {
                                    $c_delegated_to_user = 1;
                                    $c_approve_to_user = 0;
                                    $c_user_referred = 0;
                                    $step_access = 0;
                                } else {

                                    $c_delegated_to_user = 1;
                                    $c_approve_to_user = 0;
                                    $c_user_referred = 0;
                                    $step_access = 1;
                                }
                            } else if ($wim_details[0]['a_status'] == '7') { //Referred
                                if ($_SESSION[SESSION_VAR_NAME]['role'] == $wim_details[0]['a_user_group']) {
                                    $c_delegated_to_user = 0;
                                    $c_approve_to_user = 0;
                                    $c_user_referred = 0;
                                    $step_access = 1;
                                } else {

                                    $c_delegated_to_user = 0;
                                    $c_approve_to_user = 0;
                                    $c_user_referred = 0;
                                    $step_access = 0;
                                }
                            } else if ($wim_details[0]['a_status'] == 0) { //Pending
                                //echo $bvalue_details[0]['processed_user'].'#';
                                if ($bvalue_details[0]['processed_user'] == 1) {

                                    if ($first_step == 1) {
                                        $first_arole_info = $WBuilder->get_workflow_im_Aroles_ByPBvidRId_OffsetFirst($im_id, $im_rid, $bvid);
                                        $already_processed_user_id = $first_arole_info[0]['user_id'];
                                    } else {
                                        $already_processed_user_info = $Workflow->get_WIMStatus_LatestUGroupRID($wim_details[0]['builder_id'], $wim_details[0]['record_set_id'], $wim_details[0]['a_user_group']);
                                        $already_processed_user_id = $already_processed_user_info[0]['created_by'];
                                    }
                                    //echo "@".$wim_id.'@'.$already_processed_user_id .'=='. $_SESSION[SESSION_VAR_NAME]['user_id'];
                                    if ($already_processed_user_id == $_SESSION[SESSION_VAR_NAME]['user_id']) {
                                        $c_already_processed_user = 1;
                                        $c_user_referred = 0;
                                        $c_approve_to_user = 0;
                                        $c_delegated_to_user = 0;
                                        $step_access = 1;
                                        if ($builder_details[0]['workflow_type'] == 2) {
                                            $step_access = 0;
                                        }
                                    } else {
                                        $c_already_processed_user = 1;
                                        $c_user_referred = 0;
                                        $c_approve_to_user = 0;
                                        $c_delegated_to_user = 0;
                                        $step_access = 0;
                                    }
                                } else {
                                    $c_already_processed_user = 0;
                                    $c_approve_to_user = 0;
                                    $c_delegated_to_user = 0;
                                    $c_user_referred = 0;
                                    $step_access = 0;
                                }
                            } else {

                                $step_access = 0;
                                $c_user_referred = 0;
                                $c_approve_to_user = 0;
                                $c_delegated_to_user = 0;
                            }
                        } else {
                            $c_user_referred = 0;
                            $c_approve_to_user = 0;
                            $c_delegated_to_user = 0;
                        }
                    } else {
                        $c_user_referred = 0;
                        $c_approve_to_user = 0;
                        $c_delegated_to_user = 0;
                    }
                }

                //echo $c_user_referred;
                //echo 'D'.$step_access;
                //=================================
                //      Routing
                //=================================

                $WBuilder->setProjectId($pid);
                $WBuilder->setBuilderId($bid);
                $WBuilder->setBuilderValueId($bvid);
                $WBuilder->setTriggerType('a_f');
                $af_route_info = $WBuilder->get_workflow_builder_routing();
                $af_trigger_step_arr = array_column($af_route_info, 'trigger_step');

                $WBuilder->setTriggerType('r_f');
                $rf_route_info = $WBuilder->get_workflow_builder_routing();
                $rf_trigger_step_arr = array_column($rf_route_info, 'trigger_step');

                $WBuilder->setTriggerType('r_b');
                $rb_route_info = $WBuilder->get_workflow_builder_routing();
                $rb_trigger_step_arr = array_column($rb_route_info, 'trigger_step');


                //=================================
                //      Dynamic Forms
                //=================================
                $WBuilder->setProjectId($pid);
                $WBuilder->setBuilderId($bid);
                $WBuilder->setBuilderValueId($bvid);
                //$WBuilder->setWimId($wim_id);
                //$WBuilder->setRecordSetId($im_rid);

                $step_dynamic_forms = $WBuilder->get_WBuilder_dform_Bvid();
                $no_step_dynamic_forms = count($step_dynamic_forms);

                $previous_dynamic_forms = $WBuilder->get_WBuilder_dform_previous();
                $no_previous_dynamic_forms = count($previous_dynamic_forms);


                //=================================>>
                ###      Static Forms
                //=================================>>
                $WBuilder->setProjectId($pid);
                $WBuilder->setBuilderId($bid);
                $WBuilder->setBuilderValueId($bvid);

                $step_static_forms = $WBuilder->get_WBuilder_sform_Bvid();
                $no_step_static_forms = count($step_static_forms);

                $previous_static_forms = $WBuilder->get_WBuilder_sform_previous();
                $no_previous_static_forms = count($previous_static_forms);


                $IMASTER->setProjectId($pid);
                $master_info = $IMASTER->getIndexMasterByName('ENFA');
                if ($index_master_details[0]['id'] == $master_info[0]['id']) {
                    $ENFA = new enfa($db);
                    $enfa_details = $ENFA->getEnfadetails_ByRId($im_rid);
                    $bidder_details = $ENFA->getBidderDetails_ByEnfaId($enfa_details[0]['id'], $im_rid);
                }
                ?>
                <!DOCTYPE html>
                <html>
                    <head>
                        <meta charset="utf-8">
                        <meta charset="ISO-8859-1" content-Type="text/html">
                        <title>dMACQ - DMS</title>
                        <meta name="viewport" content="width=device-width, initial-scale=1.0">  
                        <meta name="description" content="dMACQ">
                        <meta name="author" content="Sri Krishnan">

                        <meta http-Equiv="Cache-Control" Content="no-cache" />
                        <meta http-Equiv="Pragma" Content="no-cache" />
                        <meta http-Equiv="Expires" Content="0" />

                        <!-- styles -->
                        <link href="../resources/css/bootstrap.css" rel="stylesheet">
                        <link href="../resources/css/jquery.gritter.css" rel="stylesheet">
                        <link href="../resources/css/bootstrap-responsive.css" rel="stylesheet">
                        <link rel="stylesheet" href="../resources/css/font-awesome.css">
                        <link rel="stylesheet" href="../resources/font-awesome/css/font-awesome.min.css">
                        <!-----sanjay css------->
             <link href="../resources/css/dmacq.css" rel="stylesheet">
            <!-----Sanjay-------->
                        <!--[if IE 7]>
                        <link rel="stylesheet" href="../resources/css/font-awesome-ie7.min.css">
                        <![endif]-->
                        <link href="../resources/css/tablecloth.css" rel="stylesheet">
                        <link href="../resources/css/chosen.css" rel="stylesheet">
                        <link href="../resources/css/styles.css" rel="stylesheet">
                        <link href="../resources/css/fullcalendar.css" rel="stylesheet">
                        <link href="../resources/css/file_manager.css" rel="stylesheet">
                        <link href="../resources/css/jquery.css" rel="stylesheet">
                        <link rel="stylesheet" type="text/css" href="../resources/css/tipped.css"/>
                        <link href="../resources/css/sweet-alert.css" rel="stylesheet">
                        <!--[if IE 7]>
                        <link rel="stylesheet" type="text/css" href="../resources/css/ie/ie7.css" />
                        <![endif]-->
                        <!--[if IE 8]>
                        <link rel="stylesheet" type="text/css" href="../resources/css/ie/ie8.css" />
                        <![endif]-->
                        <!--[if IE 9]>
                        <link rel="stylesheet" type="text/css" href="../resources/css/ie/ie9.css" />
                        <![endif]-->

                        <!--fav and touch icons -->
                        <link rel="shortcut icon" href="../resources/ico/favicon.ico">
                        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../resources/ico/apple-touch-icon-144-precomposed.png">
                        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../resources/ico/apple-touch-icon-114-precomposed.png">
                        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../resources/ico/apple-touch-icon-72-precomposed.png">
                        <link rel="apple-touch-icon-precomposed" href="../resources/ico/apple-touch-icon-57-precomposed.png">
                        <!--============ javascript ===========-->
                        <script src="../resources/js/jquery.js"></script>
                        <script src="../resources/js/jquery-ui-1.10.1.custom.min.js"></script>
                        <script src="../resources/js/bootstrap.js"></script>
                        <script src="../resources/js/bootbox.js"></script>
                        <script src="../resources/js/jquery.sparkline.js"></script>
                        <script type="text/javascript" src="../resources/js/sha256.js"></script>
                        <script type="text/javascript" src="../resources/js/jquery.jcryption.3.1.0.js"></script>

                        <script src="../resources/js/jquery.validate.js"></script>
                        <script src="../resources/js/jquery.metadata.js"></script>

                        <script src="../resources/js/bootstrap-fileupload.js"></script>
                        <script src="../resources/js/accordion.nav.js"></script>
                        <script src="../resources/js/jquery.tagsinput.js"></script>
                        <script src="../resources/js/chosen.jquery.js"></script>
                        <script src="../resources/js/bootstrap-colorpicker.js"></script>
                        <script src="../resources/js/bootstrap-datetimepicker.min.js"></script>
                        <script src="../resources/js/date.js"></script>
                        <script src="../resources/js/daterangepicker.js"></script>

                        <script src="../resources/js/jquery.metadata.js"></script>
                        <script src="../resources/js/jquery.tablesorter.min.js"></script>
                        <script src="../resources/js/jquery.tablecloth.js"></script>

                        <script src="../resources/js/jquery.flot.js"></script>
                        <script src="../resources/js/jquery.flot.selection.js"></script>
                        <script src="../resources/js/excanvas.js"></script>
                        <script src="../resources/js/jquery.flot.pie.js"></script>
                        <script src="../resources/js/jquery.flot.stack.js"></script>
                        <script src="../resources/js/jquery.flot.time.js"></script>
                        <script src="../resources/js/jquery.flot.tooltip.js"></script>
                        <script src="../resources/js/jquery.flot.resize.js"></script>

                        <script src="../resources/js/jquery.collapsible.js"></script>

                        <script src="../resources/js/jquery.gritter.js"></script>
                        <script src="../resources/js/tiny_mce/jquery.tinymce.js"></script>


                        <script src="../resources/js/custom.js"></script>
                        <script src="../resources/js/respond.min.js"></script>
                        <script src="../resources/js/ios-orientationchange-fix.js"></script>
                        <script src="../resources/js/ajax_common_request.js"></script>


                        <script src="../resources/js/responsive-tables.js"></script>
                        <script src="../resources/js/jquery.tablecloth.js"></script>
                        <script src="../resources/js/jquery.dataTables.js"></script>
                        <script src="../resources/js/ZeroClipboard.js"></script>
                        <script src="../resources/js/dataTables.bootstrap.js"></script>
                        <script src="../resources/js/TableTools.js"></script>
                        <script src="../resources/js/fullcalendar.min.js"></script>
                        <script src="../resources/js/typeahead.js"></script>

                        <link rel="stylesheet" href="../resources/css/select.dataTables.min.css" />
                        <script type="text/javascript" href="../resources/js/dataTables.select.min.js"></script>



                        <link rel="stylesheet" href="../resources/css/bootstrap-switch.css" />
                        <script src="../resources/js/bootstrap-switch.js"></script>


                        <link href="../resources/css/bootstrap-multiselect.css" rel="stylesheet">           
                        <script src="../resources/js/bootstrap-multiselect.js"></script>
                        <script type="text/javascript" src="../resources/js/spinners.min.js"></script>
                        <script type="text/javascript" src="../resources/js/tipped.js"></script>
                        <script type="text/javascript" src="../resources/js/jquery.cookie.js"></script>
                        <script type="text/javascript" src="../resources/js/jquery.login.js"></script>
                        <script type="text/javascript" src="../resources/js/stepy.jquery.js"></script>
                        <link rel="stylesheet"  src="../resources/plugins/jstree/dist/themes/default/style_tree.css" />
                        <script  type="text/javascript" href="../resources/plugins/jstree/dist/jstree.min.js"></script>

                        <link href="../resources/plugins/bootstrap-switch/docs/css/highlight.css" rel="stylesheet">
                        <link href="../resources/plugins/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.css" rel="stylesheet">

                        <script src="../resources/plugins/bootstrap-switch/docs/js/highlight.js"></script>
                        <script src="../resources/plugins/bootstrap-switch/dist/js/bootstrap-switch.js"></script>
                        <script src = "../resources/plugins/bootstrap-switch/docs/js/main.js" ></script>
                        <script src="../resources/plugins/Highcharts/js/highcharts.js"></script>
                        <script src="../resources/plugins/Highcharts/js/modules/drilldown.js"></script>
                        <link rel="stylesheet" href="../resources/plugins/jsPanel-3.4.1/source/jquery.jspanel.css"/>
                        <script type="text/javascript" src="../resources/plugins/jsPanel-3.4.1/source/jquery.jspanel.min.js"></script>


                        <link href="../resources/css/lby-main.css" rel="stylesheet" type="text/css" media="screen" charset="utf-8" >
                        <link href="../resources/css/jquery-labelauty.css" rel="stylesheet" type="text/css" media="screen" charset="utf-8" >
                        <script src="../resources/js/jquery-labelauty.js"></script>

                        <link href="../resources/plugins/icheck/skins/square/red.css" rel="stylesheet">
                        <link href="../resources/plugins/icheck/skins/square/green.css" rel="stylesheet">
                        <link href="../resources/plugins/icheck/skins/square/blue.css" rel="stylesheet">
                        <link href="../resources/plugins/icheck/skins/flat/red.css" rel="stylesheet">
                        <link href="../resources/plugins/icheck/skins/flat/green.css" rel="stylesheet">
                        <script src="../resources/plugins/icheck/icheck.js?v=1.0.2"></script>
                        <style type="text/css">
                            .jsPanel-title h1, h2, h3 {
                                line-height: 20px;
                            }
                        </style>
                        <link rel="stylesheet" href="../resources/css/token-input-facebook.css" type="text/css" />
                        <script type="text/javascript" src="../resources/js/jquery.tokeninput.js"></script>
                        
                        <script src="../resources/plugins/fineuploader-3.7.1/pako.js"></script>

                        <style>

                            .tt-dropdown-menu {
                                width: 100%;
                                margin-top: 2px;
                                padding: 5px 0;
                                background-color: #fff;
                                border: 1px solid #ccc;
                                border: 1px solid rgba(0,0,0,.2);
                                *border-right-width: 2px;
                                *border-bottom-width: 2px;
                                -webkit-border-radius: 6px;
                                -moz-border-radius: 6px;
                                border-radius: 6px;
                                -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
                                -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
                                box-shadow: 0 5px 10px rgba(0,0,0,.2);
                                -webkit-background-clip: padding-box;
                                -moz-background-clip: padding;
                                background-clip: padding-box;
                            }

                            .tt-suggestion {
                                display: block;
                                padding: 3px 20px;
                            }

                            .tt-suggestion.tt-is-under-cursor {
                                color: #fff;
                                background-color: #0081c2;
                                background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
                                background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
                                background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
                                background-image: -o-linear-gradient(top, #0088cc, #0077b3);
                                background-image: linear-gradient(to bottom, #0088cc, #0077b3);
                                background-repeat: repeat-x;
                                filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0)
                            }

                            .tt-suggestion.tt-is-under-cursor a {
                                color: #fff;
                            }

                            .tt-suggestion p {
                                margin: 0;
                            }
                            .tt-hint{
                                width: 470px;
                            }

                            .buttonblink{

                                background-color: #c09853;
                                border: 2px solid;
                                font-size: 11px;
                                color: #fff;
                                border-radius: 5px;
                                margin-top: -2px;
                            }
                            .bootbox {
                                    border: #000 2px solid;
                                }

                        </style>
                         <script src="../resources/js/bootbox_V6.0.0.js"></script>
                        <script nonce="<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>">
                            $(document).ready(function () {

                                  $(".buttonblink").on("click", function(event) {
                                      $('#modal_status_dashboard').modal('toggle');
    /*bootbox.confirm({
          closeButton: false,
            message: "Do check that all the documents uploaded by you are indexed before Sign-Off?",
            buttons: {
                cancel: {
                    label: "Cancel",
                    className: "btn-default"
                },
                confirm: {
                    label: "confirm",
                    className: "btn-success "
                }
            },
            callback: function(result) {
                if (result) {
                 $('#modal_status_dashboard').modal('toggle');
                } 
            }
        });*/
  });



                                //  $(document).on("click", ".buttonblink", function (e) {
                                //     e.stopPropagation();
                                //     e.stopImmediatePropagation();

                                //     var cfrm = bootbox.confirm("Do check that all the documents uploaded by you are indexed before Sign-Off?", function (result) {
                                //         if (result) {
                                //            $('#modal_status_dashboard').modal('toggle');
                                //         }
                                //     });

                                // });


                                $(document).on('click', '.btn_vendor_edit_form', function () {
                                    var ref = $(this).closest('a').prop('rel');
                                    parent.window.location = ref;
                                });

                                $("#selectall").click(function () {
                                    $('.case').prop('checked', this.checked);
                                });
                                $(".case").click(function () {
                                    if ($(".case").length == $(".case:checked").length) {
                                        $("#selectall").prop("checked", "checked");
                                    } else {
                                        $("#selectall").prop("checked", false);
                                    }
                                });
                                var mypanel = 'no_pan';
                                $(".to-labelauty").labelauty({same_width: true});
                                $(".to-labelauty-icon").labelauty({label: false});
                                $(".chzn-select").chosen();
                                $(".chzn-select-deselect").chosen({
                                    allow_single_deselect: true
                                });
                                $('.check_f').iCheck({
                                    checkboxClass: 'icheckbox_square-red',
                                    radioClass: 'iradio_square-red',
                                    increaseArea: '20%'
                                });
                                $('.check_statuschk').iCheck({
                                    checkboxClass: 'icheckbox_square-blue',
                                    radioClass: 'iradio_square-blue',
                                    increaseArea: '20%'
                                });

                                $('.radio_r_opt').iCheck({
                                    checkboxClass: 'icheckbox_square-red',
                                    radioClass: 'iradio_square-red',
                                    increaseArea: '20%'
                                });
                                //=====================================
                                //      Task List
                                //=====================================


                                $(document).on("click", ".a_new_task_comment", function (e) {
                                    var bvid = $("#bvid").prop("value");
                                    var task_id = $(this).prop("id").split('_')[0];
                                    var task_child_id = $(this).prop("id").split('_')[1];
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    if ($(this).hasClass('disable_add') == true) {
                                        var disable_add = '1';
                                    } else {
                                        var disable_add = '0';
                                    }

                                    var footer_popup_primary = [
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-primary btn-sm btn_add_task_comment",
                                            btntext: " Add",
                                            callback: function (event) {
                                                if (disable_add == '0') {
                                                    event.stopPropagation();
                                                    var task_id = $("#task_id").prop("value");
                                                    var task_child_id = $("#task_child_id").prop("value");
                                                    var url = '../workflow/workflow_im_task_commentadd.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>';
                                                    $.ajax({
                                                        method: "POST",
                                                        url: url,
                                                        data: $("#form_task_comment").serialize()
                                                    }).done(function (msg) {
                                                        $.gritter.add({
                                                            title: 'Message!',
                                                            text: msg
                                                        });
                                                        ajax_common_request('../workflow/workflow_im_task_commentlist_ajax.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&task_id=' + task_id + '&task_child_id=' + task_child_id, 'div_task_comments_list');
                                                    });
                                                }

                                            }

                                        },
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-danger btn-sm",
                                            btntext: " Close",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                event.data.close();
                                            }
                                        }
                                    ];
                                    var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';
                                    if (mypanel != "no_pan")
                                    {
                                        mypanel.close();
                                    }
                                    mypanel = $.jsPanel({
                                        contentSize: {width: 750, height: 380},
                                        headerTitle: ' Task Comments',
                                        theme: 'danger',
                                        contentAjax: {
                                            url: '../workflow/workflow_im_task_commentlist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&task_id=' + task_id + '&task_child_id=' + task_child_id + '&disable_add=' + disable_add,
                                            autoload: true
                                        },
                                        footerToolbar: footer_popup_primary
                                    });
                                });
                                $(document).on("ifClicked", ".class_task_child_value", function (e) {

                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    var task_id = $(this).prop("value").split(':')[0];
                                    var child_id = $(this).prop("value").split(':')[1];
                                    var input_type = $(this).prop("type");
                                    var b_task_id = $(this).attr("itemref").split(':')[0];
                                    var bvid = $(this).attr("itemref").split(':')[1];
                                    if ($(this).prop("checked") == true) {
                                        var action = 'remove';
                                    } else {
                                        var action = 'add';
                                    }

                                    if ($(this).hasClass("class_task_child_na") == true) {
                                        var btn_type = 'na';
                                    } else {
                                        var btn_type = 'val';
                                    }

                                    var rand = new Date().getTime();
                                    var url = '../workflow/wim_edit_taskchild.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&wim_id=<?php echo $wim_id; ?>&bvid=' + bvid + '&rand=' + rand + '&btn_type=' + btn_type;
                                    $.ajax({
                                        method: "GET",
                                        url: url,
                                        data: {task_id: task_id, b_task_id: b_task_id, input_type: input_type, action: action, child_id: child_id}
                                    }).done(function (msg) {
                                        $.gritter.add({
                                            title: 'Message!',
                                            text: msg
                                        });
                                    });
                                });
                                //=====================================
                                //      Responsible User List
                                //=====================================

                                $(document).on("click", ".btn_users_list", function (e) {
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    var itemref = $(this).attr('itemref');
                                    var itemtype = $(this).attr('itemtype');

                                    var footer_popup_primary = [
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-danger btn-sm",
                                            btntext: " Close",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                event.data.close();
                                            }
                                        }
                                    ];
                                    if (mypanel != "no_pan")
                                    {
                                        mypanel.close();
                                    }
                                    var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';
                                    mypanel = $.jsPanel({
                                        contentSize: {width: 850, height: 300},
                                        headerTitle: '  Users List - User Group',
                                        theme: 'Tomato',
                                        contentAjax: {
                                            url: '../workflow/a_role_user_list.php?a_builder_value_id=<?php echo $clk_bvid; ?>&rule_id=<?php echo $rule_id; ?>&role_master_id=<?php echo $role_master_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&sel_gid=' + itemref + '&role_usertype=' + itemtype,
                                            autoload: true
                                        },
                                        contentOverflow: 'scroll',
                                        footerToolbar: footer_popup_primary
                                    });
                                });
                                $(document).on("click", '.chat_send_btn', function () {
                                    basic_form_submit('../workflow/workflow_im_commentlist_split.php?c_action=add&a_builder_value_id=<?php echo $a_builder_value_id; ?>&rand=<?php echo rand(999, 999999); ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_chat_comments_list', 'form_chat');
                                });
                                $('a[href="#comments-post"]').click(function () {
                                    ajax_common_request('../workflow/workflow_im_commentlist_split.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&rand=<?php echo rand(999, 999999); ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_chat_comments_list');
                                });

                                $('a[href="#query-section-post"]').click(function () {
                                    ajax_common_request('../workflow/workflow_im_querylist_split.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&rand=<?php echo rand(999, 999999); ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_chat_query_list');
                                });

                                $(document).on("click", '.query_send_btn', function () {
                                    var query_comment = $('#query_comment').val();
                                   // alert(query_comment);
                                    basic_form_submit('../workflow/workflow_im_querylist_split.php?c_action=add&a_builder_value_id=<?php echo $a_builder_value_id; ?>&rand=<?php echo rand(999, 999999); ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>'+ '&query_comment=' + query_comment, 'div_chat_query_list', '');
                                });

                                $('a[href="#workflow_logs"]').click(function () {
                                    //ajax_common_request('../workflow/workflow_im_loglist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&im_id=<?php echo $im_id; ?>&wim_id=<?php echo $wim_id; ?>', 'div_logs_list');
                                });
                                //ajax_common_request('../workflow/workflow_im_attachlist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&im_id=<?php echo $im_id; ?>&step_access=<?php echo $step_access ?>&a_step_join=<?php echo $a_step_join; ?>', 'div_attachments');
                                //ajax_common_request('../workflow/workflow_im_maillist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_mails');
                                //============================================                        
                                //              MAILS
                                //============================================


                                $(document).on("click", ".a_new_mails", function (e) {
                                    var bvid = $("#bvid").prop("value");
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    var footer_popup_primary = [
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-primary btn-sm",
                                            btntext: " Send",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                var url = '../workflow/workflow_im_mailadd.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>';
                                                $.ajax({
                                                    method: "POST",
                                                    url: url,
                                                    data: $("#form_mails").serialize()
                                                }).done(function (msg) {
                                                    $.gritter.add({
                                                        title: 'Message!',
                                                        text: msg
                                                    });
                                                    event.data.close();
                                                    ajax_common_request('../workflow/workflow_im_maillist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_mails');
                                                });
                                            }
                                        },
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-danger btn-sm",
                                            btntext: " Close",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                event.data.close();
                                            }
                                        }
                                    ];
                                    var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';
                                    if (mypanel != "no_pan")
                                    {
                                        mypanel.close();
                                    }
                                    mypanel = $.jsPanel({
                                        contentSize: {width: 750, height: 450},
                                        headerTitle: ' Compose Mail',
                                        theme: 'Olive',
                                        contentAjax: {
                                            url: '../workflow/workflow_im_mailform.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>',
                                            autoload: true
                                        },
                                        footerToolbar: footer_popup_primary
                                    });
                                });
                                $(document).on("click", ".btn_mails_remove", function (e) {
                                    var bvid = $("#bvid").prop("value");
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    var id = $(this).attr("itemref");
                                    var url = '../workflow/workflow_im_maildelete.php';
                                    $.ajax({
                                        method: "POST",
                                        url: url,
                                        data: {id: id, im_rid: <?php echo $im_rid; ?>, a_builder_value_id: "<?php echo $a_builder_value_id; ?>"}
                                    }).done(function (msg) {
                                        $.gritter.add({
                                            title: 'Message!',
                                            text: msg
                                        });
                                        ajax_common_request('../workflow/workflow_im_maillist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_mails');
                                    });
                                });
                                $(document).on("click", ".btn_mails_view", function (e) {
                                    var bvid = $("#bvid").prop("value");
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    var id = $(this).attr("itemref");
                                    var footer_popup_primary = [
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-danger btn-sm",
                                            btntext: " Close",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                event.data.close();
                                            }
                                        }
                                    ];
                                    var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';
                                    if (mypanel != "no_pan")
                                    {
                                        mypanel.close();
                                    }
                                    mypanel = $.jsPanel({
                                        contentSize: {width: 550, height: 450},
                                        headerTitle: ' Mail Information',
                                        autoposition: false,
                                        position: 'right-bottom',
                                        theme: 'Sienna',
                                        contentAjax: {
                                            url: '../workflow/workflow_im_mailview.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&id=' + id,
                                            autoload: true
                                        },
                                        contentOverflow: 'scroll',
                                        footerToolbar: footer_popup_primary
                                    });
                                });
                                //===================================================
                                //          DOC-SET / ATTACHMENTS
                                //===================================================

                                $(document).on('click', '.btn-attach-delete', function () {
                                    var val = $(this).prop('id');
                                    var cfrm = bootbox.confirm("Are you sure?", function (result) {
                                        if (result) {
                                            var pid = "<?php echo $pid; ?>";
                                            ajax_common_request('../dms/dms_delete.php?id=' + val + '&pid=' + pid, '');
                                        }
                                    });
                                });

                                //var myTab1_active = $("ul#myTab1 li.active a").attr('href');
                                //if (myTab1_active == "#tab-docset") {
                                //$(document).on('click', '#myTab1 ul li a[href="#tab-files"]', function (e) {
                                $('a[href="#tab-files"]').click(function () {

                                    var table = $('#doc_set_datatable').dataTable({
                                        "bDestroy": true,
                                        "bProcessing": true,
                                        "bServerSide": true,
                                        "iDisplayLength": 5,
                                        "aLengthMenu": [[5, 10, 50], [5, 10, 50]],
                                        "bPaginate": true,
                                        "bFilter": false,
                                        "bSort": false,
                                        //"sScrollY": "100px",
                                        "FixedHeader": true,
                                        "sAjaxSource": '../workflow/work_flow_edit_data.php?bid=<?php echo $bid; ?>&wim_id=<?php echo $wim_id; ?>&im_rid=<?php echo $im_rid; ?>&bvid=<?php echo $bvid; ?>&im_id=<?php echo $im_id; ?>&step_access=<?php echo $step_access ?>&a_builder_value_id=<?php echo $a_bid_value; ?>',
                                        "aaSorting": [[0, "desc"]],
                                        "aoColumnDefs": [
                                            {
                                                "aTargets": [0],
                                                "bSortable": false,
                                            }, {
                                                "aTargets": [3],
                                                "bSortable": false,
                                            }
                                        ],
                                        "fnServerData": function (sSource, aoData, fnCallback) {
                                            $.getJSON(sSource, aoData, function (json) {
                                                /* Do whatever additional processing you want on the callback, then tell DataTables */
                                                fnCallback(json);
                                                //alert(JSON.stringify(json));

                                            });
                                        },
                                        "fnServerParams": function (aoData) {
                                            aoData.push({"name": "index_master_value", "value": "<?php echo $index_value_details[0]['id']; ?>"});
                                            aoData.push({"name": "pid", "value": "<?php echo $pid; ?>"});
                                            aoData.push({"name": "index_master_id", "value": "<?php echo $im_id; ?>"});
                                        }
                                    });
                                });
                                //}

                                $('a[href="#tab-docset-missing"]').click(function () {
                                    ajax_common_request('../workflow/workflow_im_doc_set_list.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'docset-missing');
                                });

                                $(document).on("click", ".a_new_attachment", function (e) {
                                    var bvid = $("#bvid").prop("value");
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    var footer_popup_primary = [
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-primary btn-sm",
                                            btntext: " Upload",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                var url = '../workflow/workflow_im_attachupload.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&im_id=<?php echo $im_id; ?>';
                                                $.ajax({
                                                    method: "POST",
                                                    url: url,
                                                    cache: false,
                                                    data: $("#form_attachment").serialize(),
                                                    beforeSend: function (xhr) {
                                                        //$(".PopupPanel_wf").show();
                                                        $.gritter.add({
                                                            title: 'Please wait. Process started..!!',
                                                            text: " "
                                                        });
                                                    }
                                                }).done(function (msg) {
                                                    $('.gritter-item-wrapper').remove();
                                                    //$(".PopupPanel_wf").hide();
                                                    //$("#td_task_child_values_" + id).html(msg);
                                                    $.gritter.add({
                                                        // (string | mandatory) the heading of the notification
                                                        title: 'Message!',
                                                        // (string | mandatory) the text inside the notification
                                                        text: msg
                                                    });
                                                    event.data.close();
                                                    ajax_common_request('../workflow/workflow_im_attachlist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&im_id=<?php echo $im_id; ?>&step_access=<?php echo $step_access ?>', 'div_attachments');
                                                    ajax_common_request('../workflow/workflow_im_doc_set_list.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'docset-missing');
                                                    //jQuery('#data-table').dataTable().fnDraw(true);
                                                    //alert('sdff');
                                                    jQuery('#doc_set_datatable').dataTable().fnDraw(true);
                                                });
                                            }
                                        },
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-danger btn-sm",
                                            btntext: " Close",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                event.data.close();
                                            }
                                        }
                                    ];
                                    if (mypanel != "no_pan") {
                                        mypanel.close();
                                    }
                                    var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';
                                    mypanel = $.jsPanel({
                                        contentSize: {width: 750, height: 300},
                                        //headerControls: {controls: "closeonly"},

                                        headerTitle: ' Upload Attachment File',
                                        contentOverflow: 'Scroll',
                                        //resizable: "disabled",
                                        //content:        stuff,
                                        theme: 'Olive',
                                        contentAjax: {
                                            url: '../workflow/workflow_im_attachform.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&im_id=<?php echo $im_id; ?>',
                                            autoload: true
                                        },
                                        footerToolbar: footer_popup_primary
                                    });
                                });
								 
								$("#div_file_preview_click").click(function () {
									 
									 $('#div_file_info').hide();
									$('#div_file_preview').show();
									
								});
								
								$("#div_file_info_click").click(function () {
									
									$('#div_file_preview').hide();
									$('#div_file_info').show();
									
								});
								
								
                                $(document).on("click", '.btn_file_preview', function () {
								
								
								   $('#div_file_preview').show();
									$('#div_file_info').hide();

                                    var id_arr = $(this).prop('id').split('_');
                                    var pid = id_arr[1];
                                    var doc_id = id_arr[2];
                                    var rand = Math.random();
                                    var link_type = id_arr[0];
                                    var im_builder_details = "<?php echo $im_builder_details; ?>";
                                    if (link_type == 'file') {
                                        ajax_common_request('../workflow/workflow_file_preview.php?rand=' + rand + '&pid=' + pid + '&im_builder_details=' + im_builder_details + '&id=' + doc_id, 'div_file_preview');
										
                                        ajax_common_request('../workflow/workflow_file_info.php?rand=' + rand + '&pid=' + pid + '&id=' + doc_id, 'div_file_info');
										$('#file_preview').modal('show');
                                    } else if (link_type == 'attach') {

                                        ajax_common_request('../workflow/workflow_file_preview.php?rand=' + rand + '&pid=' + pid + '&im_builder_details=' + im_builder_details + '&id=' + doc_id, 'div_file_preview');
                                        ajax_common_request('../workflow/workflow_file_info.php?rand=' + rand + '&pid=' + pid + '&id=' + doc_id, 'div_file_info');
										$('#file_preview').modal('show');
                                    }
                                });
                                $(document).on("click", '.btn_file_preview1', function () {

                                    var id_arr = $(this).prop('id').split('_');
                                    var pid = id_arr[1];
                                    var doc_id = id_arr[2];
                                    var rand = Math.random();
                                    var link_type = id_arr[0];
                                    var im_builder_details = "<?php echo $im_builder_details; ?>";
                                    if (link_type == 'files') {
                                        ajax_common_request('../workflow/workflow_file_preview.php?rand=' + rand + '&p_vt=<?php echo encrypt_url('advanced', APP_ENCRYPTION_SALT); ?>&pid=' + pid + '&im_builder_details=' + im_builder_details + '&id=' + doc_id, 'div_file_preview');
                                        ajax_common_request('../workflow/workflow_file_info.php?rand=' + rand + '&pid=' + pid + '&id=' + doc_id, 'div_file_info');
										$('#file_preview').modal('show');
                                    } else if (link_type == 'attach') {

                                        ajax_common_request('../workflow/workflow_file_preview.php?rand=' + rand + '&p_vt=<?php echo encrypt_url('advanced', APP_ENCRYPTION_SALT); ?>&pid=' + pid + '&im_builder_details=' + im_builder_details + '&id=' + doc_id, 'div_file_preview');
                                        ajax_common_request('../workflow/workflow_file_info.php?rand=' + rand + '&pid=' + pid + '&id=' + doc_id, 'div_file_info');
										$('#file_preview').modal('show');
                                    }
                                });

                                $(document).on('click', '.btn-file-delete', function () {
                                    var val = $(this).prop('id');
                                    var cfrm = bootbox.confirm("Are you sure?", function (result) {
                                        if (result) {
                                            var pid = "<?php echo $project_details[0]['id']; ?>";
                                            ajax_common_request('../dms/dms_delete.php?id=' + val + '&pid=' + pid, '');
                                        }
                                    });
                                });

                                //Each Document Comment Starts Here
                                $(document).on("click", '.btn_comments_preview', function () {
                                    var doc_id_arr = $(this).prop('id').split('_');
                                    var pid = doc_id_arr[1];
                                    var docid = doc_id_arr[2];
                                    $("#commdoc_id").val(docid);
                                    ajax_common_request('../workflow/workflow_im_doc_commentlist_split.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&rand=<?php echo rand(999, 999999); ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&commdoc_id=' + docid, 'div_chat_comments_result');
                                    $("#modal_comments_post").modal("toggle");
                                });

                                $(document).on("click", '.chat_comm_send_btn', function () {
                                    basic_form_submit('../workflow/workflow_im_doc_commentlist_split.php?c_action=add&a_builder_value_id=<?php echo $a_builder_value_id; ?>&rand=<?php echo rand(999, 999999); ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_chat_comments_result', 'comm_form_chat');
                                });

                                $('.img_close_modal_update_comments_form').on('click', function () {
                                    location.reload();
                                });
                                //Each Document Comment Ends Here

                                $(document).on("click", ".class_popup_ruleinfo", function (e) {
                                    var rule_id = $(this).prop("id");
                                    var rand = Math.random();

                                    var url = 'workflow/workflow_rule_info.php?rand=' + rand + '&rule_id=' + rule_id + '&pid=<?php echo $pid; ?>';
                                    var title = "<i class='fa fa-wpforms'></i>  Rule Info";
                                    var position = "right-center";
                                    var p_theme = 'DodgerBlue';
                                    var p_width = 670;
                                    var p_height = 540;

                                    window.parent.open_jspanel(url, title, position, p_theme, p_width, p_height);

                                    /*
                                     var arr = [
                                     {
                                     item: '<button class="..." type="button"><span class="..."></span> Close</button>',
                                     event: 'click',
                                     callback: function () {
                                     fb_panel.close()
                                     }
                                     }
                                     ];
                                     var fb_panel = $.jsPanel({
                                     contentOverflow: 'scroll',
                                     headerTitle: 'Rule Info',
                                     theme: 'DodgerBlue',
                                     toolbarFooter: arr,
                                     contentSize: {width: 670, height: 540},
                                     contentAjax: {
                                     url: '../workflow/workflow_rule_info.php?rand=' + rand + '&rule_id=' + rule_id + '&pid=<?php echo $pid; ?>',
                                     autoload: true,
                                     autoresize: true,
                                     autoreposition: true
                                     }
                                     });*/
                                });

                                $(document).on("click", ".class_file_popup", function (e) {

                                    var id_arr = $(this).prop('id').split('_');
                                    var pid = id_arr[1];
                                    var doc_id = id_arr[2];
                                    var rand = Math.random();
                                    var link_type = id_arr[0];
                                    var im_builder_details = "<?php echo $im_builder_details; ?>";
                                    $.jsPanel({
                                        contentOverflow: 'scroll',
                                        headerTitle: 'File Preview',
                                        theme: 'DodgerBlue',
                                        contentSize: {width: 470, height: 340},
                                        contentAjax: {
                                            url: '../workflow/workflow_file_preview.php?rand=' + rand + '&pid=' + pid + '&im_builder_details=' + im_builder_details + '&id=' + doc_id,
                                            autoload: true,
                                            autoresize: true,
                                            autoreposition: true
                                        },
                                    });
									
                                });
                                //=================================================
                                //              STATUS
                                //=================================================

                                $("#div_roll_back").hide();
                                $("#div_approve_forward").hide();
                                $("#div_reject_forward").hide();
                                $("#div_reject_backward").hide();

                                $("#div_reject_options").hide();

                                $(".check_statuschk").on("ifChecked", function (e) {
                                    var sel_status = $('input[name=status]:checked').val();
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    //var sel_status = $(this).prop("value");
                                    //alert(sel_status);
                                    console.log('value:', $(this).prop("value"));
                                    if (sel_status == '11') {
                                        $("#div_approve_forward").show();
                                        $("#div_reject_forward").hide();
                                        $("#div_reject_backward").hide();
                                        $("#div_roll_back").hide();
                                        $("#div_userlist_rroles").hide();
                                        $("#div_nextstep_userlist_rroles").hide();
                                        $("#div_flexi_flow").hide();
                                        $("#div_reject_options").hide();
                                    } else if (sel_status == '3') {

                                        $("#div_approve_forward").hide();
                                        $("#div_reject_forward").hide();
                                        $("#div_reject_backward").hide();
                                        //$("#div_roll_back").show();
                                        $("#div_userlist_rroles").hide();
                                        $("#div_nextstep_userlist_rroles").hide();
                                        $("#div_flexi_flow").hide();

                                        $("#div_reject_options").show();

                                        var reject_opt = $("#reject_opt").prop("value");
                                        //var reject_opt_wr = $("#reject_opt_wr").prop("value");
                                        //var reject_opt_user = $("#reject_opt_user").prop("value");
                                        if (reject_opt == '1') {

                                            ajax_common_request("../workflow/wim_reject_options.php?p_type=n&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>", 'div_reject_options');
                                        }


                                    } else if (sel_status == '12') {
                                        $("#div_approve_forward").hide();
                                        $("#div_reject_forward").show();
                                        $("#div_reject_backward").hide();
                                        //$("#div_roll_back").show();
                                        $("#div_userlist_rroles").hide();
                                        $("#div_nextstep_userlist_rroles").hide();
                                        $("#div_flexi_flow").hide();
                                        $("#div_reject_options").hide();
                                    } else if (sel_status == '13') {
                                        $("#div_approve_forward").hide();
                                        $("#div_reject_forward").hide();
                                        $("#div_reject_backward").show();
                                        //$("#div_roll_back").show();
                                        $("#div_userlist_rroles").hide();
                                        $("#div_nextstep_userlist_rroles").hide();
                                        $("#div_flexi_flow").hide();

                                        $("#div_reject_options").show();

                                        var rejectb_opt = $("#rejectb_opt").prop("value");
                                        //var rejectb_opt_wr = $("#rejectb_opt_wr").prop("value");
                                        //var rejectb_opt_user = $("#rejectb_opt_user").prop("value");

                                        if (rejectb_opt == '1') {

                                            ajax_common_request("../workflow/wim_reject_options.php?p_type=b&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>", 'div_reject_options');
                                        }

                                    } else if (sel_status == '10') {
                                        $("#div_approve_forward").hide();
                                        $("#div_reject_forward").hide();
                                        $("#div_reject_backward").hide();
                                        $("#div_nextstep_userlist_rroles").show();
                                        //$("#div_roll_back").hide();
                                        $("#div_userlist_rroles").hide();
                                        $("#div_flexi_flow").hide();
                                        $("#div_reject_options").hide();

                                        $("#div_userlist_droles").hide();
                                        $("#div_userlist_lroles").hide();
                                    } else if (sel_status == '17') {
                                        $("#div_approve_forward").hide();
                                        $("#div_reject_forward").hide();
                                        $("#div_reject_backward").hide();
                                        $("#div_nextstep_userlist_rroles").hide();
                                        //$("#div_roll_back").hide();
                                        $("#div_userlist_rroles").hide();
                                        $("#div_flexi_flow").show();
                                        $("#div_reject_options").hide();
                                    } else {
                                        $("#div_approve_forward").hide();
                                        $("#div_reject_forward").hide();
                                        $("#div_reject_backward").hide();
                                        //$("#div_roll_back").hide();
                                        $("#div_nextstep_userlist_rroles").hide();
                                        $("#div_flexi_flow").hide();
                                        $("#div_reject_options").hide();

                                        if (sel_status == '7') {
                                            $("#div_approve_forward").hide();
                                            $("#div_reject_forward").hide();
                                            $("#div_reject_backward").hide();
                                            //$("#div_roll_back").hide();
                                            $("#div_nextstep_userlist_rroles").hide();
                                            $("#div_flexi_flow").hide();
                                            $("#div_reject_options").hide();
                                            $("#div_userlist_rroles").show();
                                        } else {
                                            $("#div_userlist_rroles").hide();
                                        }


                                        if (sel_status == '16') {
                                            $("#div_approve_forward").hide();
                                            $("#div_reject_forward").hide();
                                            $("#div_reject_backward").hide();
                                            //$("#div_roll_back").hide();
                                            $("#div_nextstep_userlist_rroles").hide();
                                            $("#div_flexi_flow").hide();
                                            $("#div_reject_options").hide();
                                            $("#div_userlist_droles").show();
                                        } else {
                                            $("#div_userlist_droles").hide();
                                        }

                                        if (sel_status == '20') {

                                            $("#div_approve_forward").hide();
                                            $("#div_reject_forward").hide();
                                            $("#div_reject_backward").hide();
                                            //$("#div_roll_back").hide();                                            
                                            $("#div_nextstep_userlist_rroles").hide();
                                            $("#div_flexi_flow").hide();
                                            $("#div_reject_options").hide();
                                            $("#div_userlist_rroles").hide();

                                            $("#div_userlist_lroles").show();
                                        } else {
                                            $("#div_userlist_lroles").hide();
                                        }

                                        $("#div_reject_options").hide();



                                    }
                                }).trigger("ifChecked");


                                $(document).on("click", ".label_nextuserlist", function () {
                                    ajax_common_request("wim_next_step_userlist.php?pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>", "div_nextuser_list");
                                });

                                $(document).on("click", ".btn_sel_next_userlist", function () {

                                    //var next_user_id = $("input[name=next_user_id]:checked").val();
                                    var next_user_id_arr = $("input[name='next_user_id[]']:checked").map(function () {
                                        return $(this).val();
                                    }).get();
                                    if (next_user_id_arr.length > 0) {

                                        var next_user_ids = next_user_id_arr.join();
                                        ajax_common_request("wim_next_step_userlist_sel.php?pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&next_user_id=" + next_user_ids, "div_nextuser_list_sel");
                                    } else {
                                        $.gritter.add({
                                            title: 'Notification!',
                                            text: " Choose user account"
                                        });
                                    }

                                });
                                $(document).on("change", "#ap_user_bvid", function () {
                                    var sel_bvid = $(this).prop("value");
                                    ajax_common_request("wim_next_step_userlist.php?pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&f_bvid=" + sel_bvid, "div_nextuser_list");
                                });
                                $("#btn_colse_status").click(function () {
                                    $('#modal_status_dashboard').modal('toggle');
                                    var wf_view_type = $('#wf_view_type').val();
                                    if (wf_view_type == 1) {
                                        $("#div_tab_page").hide();
                                        $("#div_split_page").show();
                                        $("#div_step_info").html("");
                                        $("#div_step_info", parent.document).attr('src', 'workflow/wim_editform_split.php?bid=<?php echo $bid; ?>&wim_id=<?php echo $wim_id; ?>&im_rid=<?php echo $im_rid; ?>&im_id=<?php echo $im_id; ?>&imf_id=<?php echo $imf_id; ?>&pid=<?php echo $pid; ?>&bvid=<?php echo $bvid; ?>');
                                    } else {

                                        $("#div_split_page").hide();
                                        $("#div_tab_page").show();
                                        $("#div_step_info").html("");
                                        $("#iframe_tab_page", parent.document).attr('src', 'workflow/wim_editform_tab.php?bid=<?php echo $bid; ?>&wim_id=<?php echo $wim_id; ?>&im_rid=<?php echo $im_rid; ?>&im_id=<?php echo $im_id; ?>&imf_id=<?php echo $imf_id; ?>&pid=<?php echo $pid; ?>&bvid=<?php echo $bvid; ?>');
                                    }
                                });

                                $('#next_step_user_settings_data-table').dataTable({
                                    "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
                                });

                                $('#ref_userlist_data-table').dataTable({
                                    "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
                                    "aoColumnDefs": [
                                        {"bSortable": false, "aTargets": [0]}
                                    ]
                                });

                                $('#lateral_userlist_data-table').dataTable({
                                    "scrollY": "200px",
                                    "scrollCollapse": true,
                                    "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
                                    "aoColumnDefs": [
                                        {"bSortable": false, "aTargets": [0]}
                                    ]
                                });

                                $(document).on('change', ".lateral_case", function () {
                                    var sel_val = $(this).prop("value");
                                    //alert(sel_val);
                                    //var result_data = combine_cron_file_title(sel_val);

                                    if ($(this).prop('checked') == true) {
                                        $("#update_status_form").prepend('<input type="hidden" id="lrole_user_id' + sel_val + '" name="lrole_user_id[]" value="' + sel_val + '">');
                                        //$(".div_sel_file_combine").append(result_data);
                                    } else {
                                        $('#lrole_user_id' + sel_val).remove();
                                        //$('#span_sel_file_combine_' + sel_val).remove();
                                    }
                                });
                                $(document).on('change', ".refferal_cls", function () {
                                    var sel_val = $(this).prop("value");

                                    if ($(this).prop('checked') == true) {
                                        $("#update_status_form").prepend('<input type="hidden" id="rrole_user_id2' + sel_val + '" name="rrole_user_id2[]" value="' + sel_val + '">');
                                        //$(".div_sel_file_combine").append(result_data);
                                    } else {
                                        $('#rrole_user_id2' + sel_val).remove();
                                        //$('#span_sel_file_combine_' + sel_val).remove();
                                    }
                                });

                                //===============================================
                                //          LOGS
                                //===============================================

                                //var ref_this = $("#myTab4 ul.tabs li a.active");
                                var currentTabId = $("ul#myTab2 li.active");
                                if (currentTabId.prop("id") == "li_lateral_flow") {

                                    ajax_common_request('../workflow/workflow_im_lateral_bar.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&im_id=<?php echo $im_id; ?>&wim_id=<?php echo $wim_id; ?>', 'div_lateral_flow');
                                } else if (currentTabId.prop("id") == "li_status_logs") {

                                    ajax_common_request('../workflow/wim_status_log.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_status_logs_list');
                                    $("#li_lateral_flow").removeClass("active");
                                    $("#div_tab_lateral_flow").removeClass("active");
                                } else {

                                    $("#li_lateral_flow").removeClass("active");
                                    $("#div_tab_lateral_flow").removeClass("active");
                                }

                                $(document).on('click', '#li_status_logs', function (e) {
                                    //$("#div_tab_lateral_flow").removeClass("active");
                                    ajax_common_request('../workflow/wim_status_log.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_status_logs_list');
                                });
                                $(document).on('click', '#show_list', function (e) {
                                    //$("#div_tab_lateral_flow").removeClass("active");
                                    ajax_common_request('../workflow/wim_link_details.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&im_id=<?php echo $im_id; ?>', 'div_workflow_linking_list');
                                });

                                $(document).on('click', '#li_workflow_logs', function (e) {
                                    $("#div_tab_lateral_flow").removeClass("active");
                                    ajax_common_request('../workflow/workflow_im_loglist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&im_id=<?php echo $im_id; ?>&wim_id=<?php echo $wim_id; ?>', 'div_logs_list');
                                });

                                $(document).on('click', '#li_lateral_flow', function (e) {
                                    ajax_common_request('../workflow/workflow_im_lateral_bar.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&im_id=<?php echo $im_id; ?>&wim_id=<?php echo $wim_id; ?>', 'div_lateral_flow');
                                });



                                /*$(document).on("click", "#btn_link_workflow_log", function() {
                                 $('#modal_log_dashboard').modal('show'); //alert(bid);
                                 ajax_common_request('../workflow/wim_status_log.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_status_log');
                                 });*/

                                $("#btn_close_log").click(function () {
                                    $('#modal_log_dashboard').modal('toggle');
                                });
                                //===============================================
                                //              REPORT
                                //===============================================

                                $("#form_report_export").click(function () {
                                    //window.open('../enfa/enfa_mail_content.php?format=pdf&mid=<?php echo encrypt_url($im_id, APP_ENCRYPTION_SALT); ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&im_rid=<?php echo $im_rid; ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&enfa_id=<?php echo encrypt_url($enfa_details[0]['id'], APP_ENCRYPTION_SALT); ?>');
                                    window.open('../workflow/form_report_export.php?format=pdf&mid=<?php echo encrypt_url($im_id, APP_ENCRYPTION_SALT); ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>&im_rid=<?php echo $im_rid; ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>');
                                });
                                //================================================
                                //              EDIT STATUS
                                //===============================================

                                $("#update_status_form").validate({

                                    rules: {
                                        comment: {
                                            required: true,
                                            minlength: 2
                                        }
                                    },
                                    messages: {
                                        comment: {
                                            required: "Please enter a comment",
                                            minlength: "Your comment must consist of at least 2 characters"
                                        }
                                    },
                                    submitHandler: function (form) {

                                        var mandatory_docset = $('input[name="mandatory_docset"]').prop("value");
                                        var mandatory_docset_arr = mandatory_docset.split(",");
                                        var mandatory_docset_arr_new = mandatory_docset_arr.filter(function (v) {
                                            return v !== ''
                                        });
                                        var sel_status = $('input[name=status]:checked').val();

                                        if (sel_status) {
                                            if (sel_status == 10) {

                                                var ap_user_bvid = $("#ap_user_bvid").prop("value");
                                                var next_user_id_arr = $("input[name^='sel_next_userid_<?php echo $bvid; ?>']").map(function () {
                                                    return $(this).val();
                                                }).get();
                                                if ((ap_user_bvid == '' || ap_user_bvid == null) || (next_user_id_arr.length == 0 || next_user_id_arr.length == null)) {
                                                    var allow_submit = false;
                                                    var msg_noti = "Choose user for approve to user!";
                                                } else {
                                                    var allow_submit = true;
                                                }
                                            } else if (sel_status == 20) {

                                                var sele_lflow_user_id_sort = document.getElementsByName('lflow_user_id_sort[]');
                                                var sel_lflow_user_id = sele_lflow_user_id_sort.length;

                                                if (sel_lflow_user_id == 0 || sel_lflow_user_id == null) {
                                                    var allow_submit = false;
                                                    var msg_noti = "Please click on the select after Chooseing user !";
                                                } else {
                                                    var allow_submit = true;
                                                }

                                                //return false;
                                            } else if (sel_status == 13) {

                                                var r_b_bvid = $("select[name='r_b_bvid']").prop("value");
                                                if (r_b_bvid == '' || r_b_bvid == null) {
                                                    var allow_submit = false;
                                                    var msg_noti = "Choose backward step!";
                                                } else {
                                                    var allow_submit = true;
                                                }
                                            } else if (sel_status == 12) {


                                                var r_f_bvid = $("select[name='r_f_bvid']").prop("value");
                                                if (r_f_bvid == '' || r_f_bvid == null) {
                                                    var allow_submit = false;
                                                    var msg_noti = "Choose forward step!";
                                                } else {
                                                    var allow_submit = true;
                                                }
                                            } else if (sel_status == 11) {

                                                var a_f_bvid = $("select[name='a_f_bvid']").prop("value");

                                                if (a_f_bvid == '' || a_f_bvid == null) {
                                                    var allow_submit = false;
                                                    var msg_noti = "Choose forward step!";
                                                } else {
                                                    var allow_submit = true;
                                                }
                                            } else if (sel_status == 7) {

                                                var rrole_user_id_arr = $("input[name='rrole_user_id[]']:checked").map(function () {
                                                    //alert(rrole_user_id_arr);
                                                    return $(this).val();
                                                }).get();
                                                if (rrole_user_id_arr.length == 0 || rrole_user_id_arr.length == null) {
                                                    //alert(rrole_user_id_arr);
                                                    var allow_submit = false;
                                                    var msg_noti = "Choose user for refferal!";
                                                } else {
                                                    var allow_submit = true;
                                                }
                                            } else if (sel_status == 16) {

                                                var drole_user_id_arr = $("input[name='drole_user_id[]']:checked").map(function () {
                                                    return $(this).val();
                                                }).get();
                                                if (drole_user_id_arr.length == 0 || drole_user_id_arr.length == null) {
                                                    var allow_submit = false;
                                                    var msg_noti = "Choose user for delegate!";
                                                } else {
                                                    var allow_submit = true;
                                                }
                                            } else {
                                                var allow_submit = true;
                                            }
                                        } else {
                                            var msg_noti = "Workflow status is empty!";
                                            var allow_submit = false;
                                        }




                                        if (allow_submit == true) {
                                            $(".btn_update").hide();
                                            $(".btn-dange").hide();
                                            if (mandatory_docset_arr_new.length >= 1) {
                                                var uploaded_docset_arr = [];
                                                $('input[name="uploaded_docset[]"]').each(function () {
                                                    uploaded_docset_arr.push($(this).val());
                                                });

                                                var man_count = 0;
                                                $.each(mandatory_docset_arr_new, function (key, value) {
                                                    if (value != '') {
                                                        var index = $.inArray(value, uploaded_docset_arr);

                                                        if (index >= 0) {
                                                            man_count++;
                                                        }

                                                        /*if (index == -1) {
                                                         //console.log( index );                  
                                                         $.gritter.add({
                                                         title: 'Notification!',
                                                         text: " Mandatory Doc-set are Empty. "
                                                                         
                                                         });
                                                         } else {
                                                         basic_form_submit('../workflow/wim_edit_status.php', 'div_status_dashboard', 'update_status_form');
                                                         }*/
                                                    }


                                                });


                                                if (mandatory_docset_arr_new.length == man_count) {
                                                    basic_form_submit('../workflow/wim_edit_status.php', 'div_status_dashboard', 'update_status_form');
                                                } else {
                                                    $.gritter.add({
                                                        title: 'Notification!',
                                                        text: " Mandatory Doc-set are Empty. "

                                                    });
                                                }

                                            } else {

                                                basic_form_submit('../workflow/wim_edit_status.php', 'div_status_dashboard', 'update_status_form');
                                            }
                                        } else {

                                            $.gritter.add({
                                                class_name: 'gritter-light',
                                                title: '<h5>Notification!</h5>',
                                                text: " <strong>" + msg_noti + "</strong>",
                                                class_name: 'my-sticky-class'

                                            });
                                        }



                                    }
                                });
                                var container = $('div.error-container ');
                                // validate the form when it is submitted
                                var validator = $("#form2").validate({
                                    errorContainer: container,
                                    errorLabelContainer: $("ol", container),
                                    wrapper: 'li',
                                    meta: "validate"
                                });
                                $(".cancel").click(function () {
                                    validator.resetForm();
                                });
                                //================================================
                                //              COMMENTS
                                //===============================================

                                $('textarea.chat-inputbox').tinymce({
                                    script_url: '../resources/js/tiny_mce/tiny_mce.js',
                                    theme: "simple",
                                    height: "2",
                                    init_instance_callback: function (ed) {
                                        var id = ed.id;
                                        var height = 75;
                                        document.getElementById(id + '_ifr').style.height = height + 'px';
                                    }
                                });
                                //================================================
                                //              Referral List
                                //===============================================
                                $(document).on("click", ".btn_close_referral", function () {
                                    var sel_id = $(this).prop("id");
                                    var cfrm = bootbox.confirm("Are you sure want to close referral?", function (result) {
                                        if (result) {
                                            var pid = "<?php echo $pid; ?>";
                                            ajax_common_request('../workflow/wim_close_referral.php?sel_id=' + sel_id + '&pid=' + pid, 'div_referral_list');
                                            parent.location.reload();
                                        }
                                    });
                                });
                                //================================================
                                //              Doc-set Missing List
                                //===============================================
								$(document).on("click", "#modal_click", function(e){
								   $('#modal').modal('toggle');
								   location.reload();
								});
									
								$(document).on("click",".jsglyph-close", function(e){
									 location.reload();
								});	
								
								

                                $(document).on("click", ".btn_files_view", function (e) {
                                    var bvid = $("#bvid").prop("value");
                                    e.stopPropagation();
                                    e.stopImmediatePropagation();
                                    var id = $(this).attr("itemref");
                                    var footer_popup_primary = [
                                        {
                                            item: "<button type='button'></button>",
                                            event: jsPanel.evtStart,
                                            btnclass: "btn btn-danger btn-sm",
                                            btntext: " Close",
                                            callback: function (event) {
                                                event.stopPropagation();
                                                event.data.close();
                                            }
                                        }
                                    ];
                                    var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';
                                    if (mypanel != "no_pan")
                                    {
                                        mypanel.close();
                                    }
                                    mypanel = $.jsPanel({
                                        contentOverflow: 'scroll',
                                        contentSize: {width: 550, height: 320},
                                        //headerControls: {controls: "closeonly"},
                                        headerTitle: ' Document Information',
                                        //resizable: "disabled",
                                        //content:        stuff,
                                        autoposition: false,
                                        //position: 'right-bottom',
                                        theme: 'Sienna',
                                        contentAjax: {
                                            url: '../workflow/workflow_im_filelist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo encrypt_url($bid, APP_ENCRYPTION_SALT); ?>&bvid=<?php echo encrypt_url($bvid, APP_ENCRYPTION_SALT); ?>&wim_id=<?php echo encrypt_url($wim_id, APP_ENCRYPTION_SALT); ?>&id=' + id,
                                            autoload: true
                                        },
                                        footerToolbar: footer_popup_primary
                                    });
                                });

                                $(document).off('click', '#docset_bulk_download_link').on('click', '#docset_bulk_download_link', function (e) {
                                    e.preventDefault();
                                    var id = [];
                                    $(".attachments_case:checked").each(function () {
                                        id.push(this.value);
                                    });
                                    var ids = id.join();
                                    //$('#bulk_doc_mtdata_id').val(ids);
                                    //$('#modal_bulk_mtdata_download').modal('show');
                                    if (ids != '') {
                                        window.location = '../dms/dms_multiple_download.php?id=' + ids + '&pid=<?php echo $pid; ?>&type=1&rename_flag=';
                                    } else {
                                        bootbox.alert("Choose documents for download!");
                                    }

                                });


                                $(document).on('click', '.btn-docset-download', function () {
                                    var value = $(this).prop('id');
                                    $('#modal_download').modal('show');
                                    $('#pdf_id').val(value);
                                    //                                    var rename_flag = $("input[name='rename_flag']:checked").val();
                                    //                                    var type = $("input[name='pdf_type']:checked").val();
                                    //                                    var pid = "<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>";
                                    //
                                    //                                    $("#form-docsets-datatable").attr('target', '_blank');
                                    //                                    $("#form-docsets-datatable").attr('action', '../dms/dms_download.php?id=' + value + '&pid=' + pid + '&type=1&rename_flag=0');
                                    //                                    //
                                    //                                    $("#form-docsets-datatable").submit();
                                    //                                    $("#form-docsets-datatable").attr('target', '');
                                    //                                    $("#form-docsets-datatable").attr('action', '');

                                    //exit(0);
                                });

                                $("#btn_download_pdf").click(function () {
                                    /*var pdf_id = $('#pdf_id').val();
                                     var original_file_flag = $("input[name='original_file_flag']:checked").val();
                                     var pid = "<?php //echo encrypt_url($pid, APP_ENCRYPTION_SALT);  ?>";
                                                     
                                     $('#modal_download').modal('toggle');
                                     $("#form-docsets-datatable").attr('target', '_blank');
                                     $("#form-docsets-datatable").attr('action', '../dms/dms_download.php?id=' + pdf_id + '&pid=' + pid + '&type=1&original_file_flag=' + original_file_flag + '&rename_flag=0');
                                     $("#form-docsets-datatable").submit();
                                     $("#form-docsets-datatable").attr('target', '');
                                     $("#form-docsets-datatable").attr('action', '');*/
                                    //                                    exit(0);

                                    var pdf_id = $('#pdf_id').val();
                                    var rename_flag = $("input[name='rename_flag']:checked").val();
                                    var original_file_flag = $("input[name='original_file_flag']:checked").val();
                                    var type = $("input[name='pdf_type']:checked").val();
                                    var pid = "<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>";
                                     var im_builder_details = "<?php echo $im_builder_details; ?>";
                                    //                        alert(pdf_id +"*****"+ type +"*****"+ pid);
                                    $('#modal_download').modal('toggle');
                                    $("#pdf_form").attr('target', '_blank');
                                    $("#pdf_form").attr('action', '../dms/dms_download.php?id=' + pdf_id + '&im_builder_details=' + im_builder_details + '&pid=' + pid + '&type=' + type + '&rename_flag=' + rename_flag + '&original_file_flag=' + original_file_flag);
                                    //
                                    $("#pdf_form").submit();
                                    $("#pdf_form").attr('target', '');
                                    $("#pdf_form").attr('action', '');
                                });

                                $("#docset_attachments_selectall").click(function () {

                                    $('.docset_attachments_case').prop('checked', this.checked);
                                });
                                // if all checkbox are selected, check the selectall checkbox
                                // and viceversa
                                $(".docset_attachments_case").click(function () {
                                    if ($(".docset_attachments_case").length == $(".docset_attachments_case:checked").length) {
                                        $("#docset_attachments_selectall").prop("checked", "checked");
                                    } else {
                                        $("#docset_attachments_selectall").prop("checked", false);
                                    }
                                });

                                $(document).off('click', '#doc_bulk_download_link').on('click', '#doc_bulk_download_link', function (e) {
                                    e.preventDefault();
                                    var id = [];
                                    $(".docset_attachments_case:checked").each(function () {
                                        id.push(this.value);
                                    });
                                    var ids = id.join();
                                    $('#bulk_doc_mtdata_id').val(ids);
                                    $('#modal_bulk_mtdata_download').modal('show');
                                    //                                    if (ids != '') {
                                    //                                        window.location = '../dms/dms_multiple_download.php?id=' + ids + '&pid=<?php echo $pid; ?>&type=1&rename_flag=';
                                    //                                    } else {
                                    //                                        bootbox.alert("Choose documents for download!");
                                    //                                    }

                                });

                                $("#btn_bulk_mtdata_download").click(function () {
                                    var original_file_flag = $("input[name='original_file_flag']:checked").val();
                                    var pid = "<?php echo encrypt_url($project_details[0]['id'], APP_ENCRYPTION_SALT); ?>";
                                    var ids = $('#bulk_doc_mtdata_id').val();
                                    if (ids != '') {
                                        window.location = '../dms/dms_multiple_download.php?id=' + ids + '&pid=<?php echo $pid; ?>&type=1&original_file_flag=' + original_file_flag + '&rename_flag=';
                                    } else {
                                        bootbox.alert("Choose documents for download!");
                                    }
                                });

                                var mypanel = 'no_pan';
                                $(document).off('click', '#send_documents').on('click', '#send_documents', function (e) {
                                    e.preventDefault();
                                    var id = [];
                                    $(".docset_attachments_case:checked").each(function () {
                                        id.push(this.value);
                                    });
                                    var ids = id.join();
                                    //$('#bulk_doc_mtdata_id').val(ids);
                                    //$('#modal_bulk_mtdata_download').modal('show');
                                    if (ids != '') {
                                        //window.location = '../dms/dms_multiple_download.php?id=' + ids + '&pid=<?php echo $pid; ?>&type=1&rename_flag=';

                                        var bvid = $("#bvid").prop("value");
                                        e.stopPropagation();
                                        e.stopImmediatePropagation();
                                        var footer_popup_primary = [
                                            {
                                                item: "<button type='button'></button>",
                                                event: jsPanel.evtStart,
                                                btnclass: "btn btn-primary btn-sm btn_send_attachments_mail",
                                                btntext: " Send",
                                                callback: function (event) {
                                                    event.stopPropagation();

                                                    $(this).attr("disabled", true);
                                                    $('.btn_mailform_close').attr("disabled", true);

                                                    var url = '../workflow/workflow_im_emailtag_add.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>';
                                                    $.ajax({
                                                        method: "POST",
                                                        url: url,
                                                        data: $("#form_mails").serialize()
                                                    }).done(function (msg) {
                                                        //$("#td_task_child_values_" + id).html(msg);
                                                        $.gritter.add({
                                                            // (string | mandatory) the heading of the notification
                                                            title: 'Message!',
                                                            // (string | mandatory) the text inside the notification
                                                            text: msg
                                                        });
                                                        event.data.close();
                                                        ajax_common_request('../workflow/workflow_im_maillist.php?a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&wim_id=<?php echo $wim_id; ?>', 'div_mails');
                                                    });
                                                }
                                            },
                                            {
                                                item: "<button type='button'></button>",
                                                event: jsPanel.evtStart,
                                                btnclass: "btn btn-danger btn-sm btn_mailform_close",
                                                btntext: " Close",
                                                callback: function (event) {
                                                    event.stopPropagation();
                                                    event.data.close();
                                                }
                                            }
                                        ];
                                        var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';

                                        if (mypanel != "no_pan") {
                                            mypanel.close();
                                        }

                                        mypanel = $.jsPanel({
                                            contentSize: {width: 750, height: 380},
                                            //headerControls: {controls: "closeonly"},
                                            position: "center-top",
                                            headerTitle: ' <i class="fa fa-pencil-square-o" aria-hidden="true"></i> Compose Mail',
                                            //resizable: "disabled",
                                            //content:        stuff,
                                            theme: 'DeepPink',
                                            contentAjax: {
                                                url: '../workflow/workflow_im_emailtag_form.php?sel_docs=' + ids + '&a_builder_value_id=<?php echo $a_builder_value_id; ?>&pid=<?php echo $pid; ?>&im_rid=<?php echo $im_rid; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&im_id=<?php echo $im_id; ?>&wim_id=<?php echo $wim_id; ?>',
                                                autoload: true
                                            },
                                            footerToolbar: footer_popup_primary
                                        });


                                    } else {
                                        bootbox.alert("Choose documents for download!");
                                    }

                                });

                                $(".btn_select_lateral_user").click(function () {
                                    //update_status_form
                                    //ajax_common_request("../workflow/workflow_im_lateral_sort.php", "div_lateral_user_sort");
                                    basic_form_submit('../workflow/workflow_im_lateral_sort.php', 'div_lateral_user_sort', 'update_status_form');
                                });

                            });
                            
                            function open_download_modal(doc_id) {
                                $('#pdf_id').val(doc_id);
                                $('#modal_download').modal('show');
                            }
                            
                        </script>


                        <style>

                            .PopupPanel_wf{display: none;border:solid 0 #08c;position:fixed;left:50%;top:20%;z-index:2147483647;height:150px;margin-top:-70px;width:150px;margin-left:50px;opacity:.7;filter:alpha(opacity=70);background:url('../resources/images/spinner.gif') no-repeat;}


                            .nav-tabs li{

                            }
                            .nav-tabs {
                                border-bottom: 0px solid #ededed;
                            }

                            .nav-tabs li a {

                            }
                            .nav-tabs>li>a {
                                padding-top: 2px;
                                padding-bottom: 2px;
                                line-height: 15px;

                            }
                            .tab-widget .tab-content {
                                border: #ededed 1px solid #999a9a;
                                background: #fff;
                            }
                            .nav-tabs>.active>a, .nav-tabs>.active>a:hover {
                                color: #555;
                                cursor: default;
                                background-color: #ededed;
                            }
                            .nav-tabs>li>a{
                                color: #0088cc;
                            }
                            .nav-tabs>li>a, .nav-pills>li>a{
                                margin-right: 0px;
                            }
                            .nav>li>a:hover {
                                text-decoration: none;
                                color: #000;
                                background-color: #ededed;
                            }
                            .tab-widget .tab-content{

                                border:1px solid #d3d4d6;
                            }

                            .post_meta{

                                margin: 0 0 0px 0;

                            }
                            /*sanjay add css for form bodrer*/

                            /* .formeo.formeo-render .formeo-column:last-of-type {
                                 padding-right: 0;
                                 border: 1px solid;
                             }

                             .formeo.formeo-render .formeo-column:first-of-type {
                                     padding-left: 0;
                                     border: 1px solid;
                                 }

                                 .formeo.formeo-render .formeo-column {
                                         padding: 0 4px;
                                         float: left;
                                         max-width: none;
                                         flex-direction: column;
                                         border: 1px solid;
                                     }*/
                        </style>
                    </head>

                    <body style="background-color: white;">

                        <input type="hidden" name="reject_opt_wr" id="reject_opt_wr" value="<?php echo $bvalue_details[0]['reject_opt_wr']; ?>">
                        <input type="hidden" name="reject_opt_user" id="reject_opt_user" value="<?php echo $bvalue_details[0]['reject_opt_user']; ?>">
                        <input type="hidden" name="rejectb_opt_wr" id="rejectb_opt_wr" value="<?php echo $bvalue_details[0]['rejectb_opt_wr']; ?>">
                        <input type="hidden" name="rejectb_opt_user" id="rejectb_opt_user" value="<?php echo $bvalue_details[0]['rejectb_opt_user']; ?>">

                        <div class="content-widgets" style="background-color: white;">
                            <input type="hidden" name="wf_view_type" id="wf_view_type" value="<?php echo $_SESSION[SESSION_VAR_NAME]['wf_view_type']; ?>">

                            <div id="id_result" class="PopupPanel_wf"></div>


                            <?php
                            if (empty($latest_status_details[0]['status'])) {
                                $widget_head_color = 'dark-yellow';
                            } else if ($latest_status_details[0]['status'] == '1') {
                                $widget_head_color = 'green';
                            } else if ($latest_status_details[0]['status'] == '2') {
                                $widget_head_color = 'blue';
                            } else if ($latest_status_details[0]['status'] == '3') {
                                $widget_head_color = 'orange';
                            } else if ($latest_status_details[0]['status'] == '4') {
                                $widget_head_color = 'green';
                            } else if ($latest_status_details[0]['status'] == '5') {
                                $widget_head_color = 'magenta';
                            } else if ($latest_status_details[0]['status'] == '6') {
                                $widget_head_color = 'dark-yellow';
                            } else if ($latest_status_details[0]['status'] == '7') {
                                $widget_head_color = 'blue-white';
                            } else if ($latest_status_details[0]['status'] == '8') {
                                $widget_head_color = 'blue-white';
                            } else if ($latest_status_details[0]['status'] == '9') {
                                $widget_head_color = 'magenta';
                            } else if ($latest_status_details[0]['status'] == '10') {
                                $widget_head_color = 'green';
                            } else if ($latest_status_details[0]['status'] == '11') {
                                $widget_head_color = 'green';
                            } else if ($latest_status_details[0]['status'] == '12') {
                                $widget_head_color = 'orange';
                            } else if ($latest_status_details[0]['status'] == '13') {
                                $widget_head_color = 'orange';
                            } else if ($latest_status_details[0]['status'] == '14') {
                                $widget_head_color = 'bondi-blue';
                            } else if ($latest_status_details[0]['status'] == '15') {
                                $widget_head_color = 'bondi-blue';
                            } else if ($latest_status_details[0]['status'] == '16') {
                                $widget_head_color = 'dark-yellow';
                            }
                            ?>



                            <div class="row-fluid" style="background-color: white;">
                                <!--<div class="span4">
                                    <div class="content-widgets light-gray" style="margin: 10px 0px 10px 0px; padding: 0px 0px 0px 0px;">
                                        <div class="widget-head <?php echo $widget_head_color; ?>">
                                            <h3><?php echo $bvalue_details[0]['step_name']; ?></h3>
                                        </div>
                                    </div>
                                </div>
                                <div class="span6">
                                    
                                </div>-->

                            </div>

                            <div class="row-fluid" style="background-color: white;">
                                <div class="span12">

                                    <div class="tab-widget" style="margin: 10px 0px 10px 0px;">
                                        <ul class="nav nav-tabs" id="myTab1">
                                            <li class="<?php
                                            if (empty($_REQUEST['a_tab_main'])) {
                                                echo 'active';
                                            }
                                            ?>"><a href="#tab-status"><i class="icon-pencil"></i> Status</a></li>
                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-logs') {
                                                echo 'active';
                                            }
                                            ?> hide"><a href="#tab-logs"><i class="icon-list-alt "></i> Logs </a></li>
                                                <?php
                                                if (count($wim_rrole_users) && $latest_status_details[0]['status'] == '7' && $c_user_referred != '1') {
                                                    ?>
                                                <li><a href="#tab-referral"><i class="icon-group "></i> Referral </a></li>
                                                <?php
                                            }
                                            ?>



                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-template') {
                                                echo 'active';
                                            }
                                            if (count($template_details) <= 0) {
                                                echo "hide";
                                            }
                                            ?>"><a href="#tab-template"><i class="icon-file-alt"></i> <?php echo $index_master_details[0]['index_master']; ?> - Template</a></li>
                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-forms') {
                                                echo 'active';
                                            }
                                            if (count($previous_dynamic_forms) <= 0 && count($step_dynamic_forms) <= 0 && count($previous_static_forms) <= 0 && count($step_static_forms) <= 0) {
                                                echo "hide";
                                            }
                                            ?>"><a href="#tab-forms"><i class="icon-file-alt"></i> Forms</a></li>

                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-files') {
                                                echo 'active';
                                            }
                                            ?>"><a href="#tab-files"><i class="icon-file-alt"></i> Files</a></li>

                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'comments-post') {
                                                echo 'active';
                                            }
                                            ?>"><a href="#comments-post"><i class="icon-comments"></i>  Comments</a></li>

                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-tasks') {
                                                echo 'active';
                                            }
                                            if ($no_tasklist_info <= 0) {
                                                echo "hide";
                                            }
                                            ?>"><a href="#tab-tasks"><i class="icon-tasks"></i> Tasks</a></li>
                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-roles') {
                                                echo 'active';
                                            }
                                            ?>"><a href="#tab-roles"><i class="icon-group"></i> Responsible Roles</a></li>







                                            <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'notify') {
                                                echo 'active';
                                            }
                                            ?> hide"><a href="#notify"><i class=" icon-envelope-alt"></i> Mails</a></li>

                                            <!--<li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-imvalues') {
                                                echo 'active';
                                            }
                                            ?>"><a href="#tab-imvalues"><i class="icon-th-list"></i> Index Master - <?php echo $index_master_details[0]['index_master']; ?></a></li>-->
                                              <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'comments-post') {
                                                echo 'active';
                                            }
                                            ?>"><a href="#WorkFlow-Linking" id="show_list"><i class="icon-comments"></i>WorkFlow Linking</a></li>

                                            <!-- <li class="<?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'query-section-post') {
                                                echo 'active';
                                            }
                                            ?>"><a href="#query-section-post"><i class="icon-comments"></i>Query Section</a></li>
 -->
                                        </ul>
                                        <div class="tab-content" style="" >
                                            <div class="tab-pane <?php
                                            if (empty($_REQUEST['a_tab_main'])) {
                                                echo 'active';
                                            }
                                            ?>" id="tab-status" style="margin: 10px 10px 10px 10px;">
                                                <!--  <div class="row-fluid"><div class="span12"></div></div> -->
                                                <div class="row-fluid" style="margin-bottom: 6px;">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">

                                                                <div class=" clearfix">
                                                                    <h4 class="pull-left"><?php echo $bvalue_details[0]['step_name']; ?> - 
                                                                        <strong>
                                                                            <?php
                                                                            //echo $latest_status_details[0]['status'];
                                                                            if (empty($latest_status_details[0]['status'])) {
                                                                                echo '<span class="text-warning">Pending</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '1') {
                                                                                echo '<span class="text-success">Approved</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '2') {
                                                                                echo '<span class="text-info">Escalate</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '3') {
                                                                                echo '<span class="text-error">Rejected</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '4') {
                                                                                echo '<span class="text-success">End as approval</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '5') {
                                                                                echo '<span class="text-error">End as rejected</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '6') {
                                                                                echo '<span class="text-inverse">Hold</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '7') {
                                                                                echo '<span class="text-info">Referred (Consult) - Inprocess</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '8') {
                                                                                echo '<span class="text-info">Referred (Consult) - Closed</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '9') {
                                                                                echo '<span class="text-error">Force Closed</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '10') {
                                                                                echo '<span class="text-success">Approve => User</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '11') {
                                                                                echo '<span class="text-success">Approved with forward</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '12') {
                                                                                echo '<span class="text-error">Rejected with forward</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '13') {
                                                                                echo '<span class="text-error">Rejected with backward</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '14') {
                                                                                echo '<span class="text">Skiped</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '15') {
                                                                                echo '<span class="text">NA</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '16') {
                                                                                echo '<span class="text-warning">Delegate</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '17') {
                                                                                echo '<span class="text-warning">Flexiflow</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '18') {
                                                                                echo '<span class="text-warning">Assigned To User</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '19') {
                                                                                echo '<span class="text-warning">Round Robin</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '20') {
                                                                                echo '<span class="text-warning">Lateral Flow - Inprocess</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '21') {
                                                                                echo '<span class="text-warning">Lateral Flow - Closed</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '22') {
                                                                                echo '<span class="text-success">Lateral Flow - Approved</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '23') {
                                                                                echo '<span class="text-warning">Lateral Flow - Rejected</span>';
                                                                            } else if ($latest_status_details[0]['status'] == '24') {
                                                                                echo '<span class="text-error">Lateral Flow - Reject with closed</span>';
                                                                            }
                                                                            ?>
                                                                        </strong>



                                                                                                                                                                                                                                                                                                                                                                                                        <!--<button id="btn_link_workflow_log" type="submit" class="btn btn-round-min btn btn-warning "><span><i class="icon-list"></i></span></button>-->

                                                                    </h4>



                                                                </div>

                                                            </div>
                                                            <div class="span2">

                                                                <?php
                                                                // print_r($bvid);
                                                                // echo "+++++++++++++++++===";
                                                                // print_r($a_step_arr);
                                                                // echo $step_access;
                                                                $block_edit_status = array(1, 4, 5, 11, 15);

                                                                if (empty($step_access)) {

                                                                    $active_user_id = $_SESSION[SESSION_VAR_NAME]['user_id'];
                                                                    $dept_id = $_SESSION[SESSION_VAR_NAME]['dept_id'];
                                                                    $active_wim_role_id = $_SESSION['active_wim_role_id'];
                                                                    if ($bvalue_details[0]['processed_user'] == 1 && $wim_details[0]['a_status'] != 10) {
                                                                        $already_processed_users = $Workflow->get_WIMStatus_All_User_Active($wim_details[0]['builder_id'], $wim_details[0]['record_set_id'], $bvid);


                                                                        $already_processed_info = array_column($already_processed_users, 'user_id');
                                                                        if (in_array($active_user_id, $already_processed_info)) {
                                                                            $step_access = 1;
                                                                        } else {
                                                                            $step_access = 0;
                                                                        }
                                                                    }

                                                                    if (empty($already_processed_users) && empty($step_access)) {

                                                                        //$get_role = $WRole->getWorkflowAUserAssignedBuilderDetails($active_wim_role_id, $active_user_id, $dept_id);

                                                                        $get_role = $WRole->getWorkflowAUserAssignedBuilderDetails($active_wim_role_id, $active_user_id, $wim_details[0]['builder_id'], $wim_details[0]['record_set_id'], $bvid);
                                                                        if (empty($get_role) && $wim_details[0]['a_status'] != 10) {
                                                                            $get_role = $WRole->getWorkflowAUserAssignedBuilderDetails_Asign_to_user($active_wim_role_id, $active_user_id, $wim_details[0]['builder_id'], $wim_details[0]['record_set_id'], $bvid);
                                                                        }
                                                                        if (empty(!$get_role)) {
                                                                            $step_access = 1;
                                                                        } else {
                                                                            $step_access = 0;
                                                                        }
                                                                        // if($builder_details[0]['workflow_type'] == 2 && $active_wim_role_id == ''){
                                                                        //     $step_access = 1;
                                                                        // }
                                                                        if ($builder_details[0]['workflow_type'] == 2 && $active_wim_role_id == '0') {
                                                                            $step_access = 0;
                                                                        }
                                                                    }
                                                                }

                                                                $imFileds_Lusers = $WRole->get_workflow_step_access_Lusers($pid, $bid, $bvid, $im_id, $im_rid, $_SESSION[SESSION_VAR_NAME]['user_id']);
                                                                if (!empty($imFileds_Lusers)) {
                                                                    $step_access = 0;
                                                                }


                                                                if (isset($_GET['edit_step_access']) && $_GET['edit_step_access'] == 2) {
                                                                    $step_access = 0;
                                                                }

                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {

                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>

                                                            </div>
                                                            <!--  <div class="span6"></div> -->
                                                        </div>
                                                    </div>
                                                    <div class="span6"></div>
                                                </div>

                                                <!-- <div class="row-fluid"><div class="span12"></div></div> -->
                                                <?php
                                                if (count($lateral_flow_steps) > 0) {
                                                    $tab_active_lateral = "active";
                                                    $tab_active_other = "";
                                                } else {
                                                    $tab_active_lateral = "";
                                                    $tab_active_other = "active";
                                                }
                                                ?>
                                                <div class="tab-widget">
                                                    <ul class="nav nav-tabs" id="myTab2">

                                                        <li class="<?php echo $tab_active_other; ?>" id="li_status_logs"><a href="#status_logs"><i class=" icon-list"></i> Status Logs</a></li>
                                                        <li id="li_status_recent"><a href="#status_recent"><i class="icon-cogs"></i> Recent Updates</a></li>
                                                        <li id="li_workflow_logs"><a href="#workflow_logs"><i class=" icon-list"></i> Workflow Logs</a></li>
                                                        <?php
                                                        if (count($lateral_flow_steps) > 0) {
                                                            ?>
                                                            <li id="li_lateral_flow" class="<?php echo $tab_active_lateral; ?>"><a href="#div_tab_lateral_flow"><i class="icon-wrench"></i> Lateral Flow</a></li>
                                                            <?php
                                                        }
                                                        ?>

                                                    </ul>
                                                    <div class="tab-content">
                                                        <div class="tab-pane " id="status_recent" style="margin: 10px 10px 10px 10px;">

                                                            <div class="post_list clearfix" >
                                                                <?php
                                                                $workflow_log_details = $Workflow->get_WIMStatus_BId_RID($bid, $im_rid);


                                                                if (count($workflow_log_details) <= 0) {
                                                                    ?>
                                                                    <!--<div class="post_block clearfix">
                                                                        <h6 class="">Records Unavailable!</h6>
                                                                    </div>-->
                                                                    <?php
                                                                } else {

                                                                    for ($i = 0; $i < count($workflow_log_details); $i++) {
                                                                        if ($_SESSION[SESSION_VAR_NAME]['role'] != 1 && $_SESSION[SESSION_VAR_NAME]['role'] != 2) {
                                                                            $verify_notification_exists = $Workflow->getWorkflow_IM_Notification_ByStatusId('Status', $workflow_log_details[$i]['id'], $_SESSION[SESSION_VAR_NAME]['role'], $_SESSION[SESSION_VAR_NAME]['user_id']);
                                                                            $no_notification_exists = count($verify_notification_exists);
                                                                            if (empty($no_notification_exists)) {
                                                                                $Workflow->setProjectId($pid);
                                                                                $Workflow->setReffModule('Status');
                                                                                $Workflow->setReffId($workflow_log_details[$i]['id']);
                                                                                $Workflow->setUserId($_SESSION[SESSION_VAR_NAME]['user_id']);
                                                                                $Workflow->setUserGroup($_SESSION[SESSION_VAR_NAME]['role']);
                                                                                $Workflow->setCreatedAt(DATE_TIME);
                                                                                $w_im_notification_add = $Workflow->add_workflow_notification();
                                                                            }
                                                                        }

                                                                        $c_step_details = $WBuilder->get_WBuilderValue_Id($workflow_log_details[$i]['builder_value_id']);
                                                                        $assigned_user_details = $User->getUserName_ById($workflow_log_details[$i]['created_by']);
                                                                        $assinged_user = $assigned_user_details[0]['fname'] . ' ' . $assigned_user_details[0]['lname'];

                                                                        //$signed_date = date('d m y', strtotime($workflow_log_details[$i]['created_at']));

                                                                        /* if ($workflow_log_details[$i]['status'] == '1') {
                                                                          $status = '<span class="label label-success">Approved</span>';
                                                                          } else if ($workflow_log_details[$i]['status'] == '2') {
                                                                          $status = '<span class="label label-inverse">Escalated</span>';
                                                                          } else if ($workflow_log_details[$i]['status'] == '3') {
                                                                          $status = '<span class="label label-important">Rejected</span';
                                                                          } else {
                                                                          $status = '<span class="label label-warning">Pending</span';
                                                                          } */
                                                                        if ($workflow_log_details[$i]['status'] == '0' || empty($workflow_log_details[$i]['status'])) {
                                                                            $status = '<b class="text-warning">Pending</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '1') {
                                                                            $status = '<b class="text-success">Approved</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '2') {
                                                                            $status = '<b class="text-info">Escalated</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '3') {
                                                                            $status = '<b class="text-error">Rejected</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '4') {
                                                                            $status = '<b class="text-success">End as approval</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '5') {
                                                                            $status = '<b class="text-error">End as rejected</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '6') {
                                                                            $status = '<b class="text-inverse">Hold</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '7') {
                                                                            $status = '<b class="text-info">Referred</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '7') {
                                                                            $status = '<b class="text-info">Referred</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '9') {
                                                                            $status = '<b class="text-warning">Force Closed</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '10') {
                                                                            $status = '<b class="text-success">Approve => User</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '11') {
                                                                            $status = '<b class="text-success">Approved with forward</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '12') {
                                                                            $status = '<b class="text-error">Rejected with forward</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '13') {
                                                                            $status = '<b class="text-error">Rejected with backward</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '14') {
                                                                            $status = '<b class="text">Skiped</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '15') {
                                                                            $status = '<b class="text">NA</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '16') {
                                                                            $status = '<b class="text-warning">Delegate</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '17') {
                                                                            $status = '<b class="text-warning">Flexiflow</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '18') {
                                                                            $status = '<b class="text-warning">Assigned to user</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '19') {
                                                                            $status = '<b class="text-warning">Round Robin</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '20') {
                                                                            $status = '<b class="text-info">Lateral Flow - Inprocess</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '21') {
                                                                            $status = '<b class="text-success">Lateral Flow - Closed</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '22') {
                                                                            $status = '<b class="text-success">Lateral Flow - Approved</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '23') {
                                                                            $status = '<b class="text-error">Lateral Flow - Rejected</b>';
                                                                        } else if ($workflow_log_details[$i]['status'] == '24') {
                                                                            $status = '<b class="text-error">Lateral Flow - Reject with closed</b>';
                                                                        }
                                                                        /* else {
                                                                          $status = '<b class="text-warning">Pending</b>';
                                                                          } */
                                                                        ?>


                                                                        <div class="post_block clearfix">
                                                                            <h6><a href="#"><?php echo $workflow_log_details[$i]['comment']; ?></a></h6>
                                                                            <ul class="post_meta clearfix">
                                                                                <li class=""><span>Signed By: </span> <a href="#"><?php echo $assinged_user; ?></a></li>
                                                                                <li ><span>Date: </span> <a href="#"><?php
                                                                                        $cur_row_data = $workflow_log_details[$i]['created_at'];
                                                                                        $date = new DateTime($cur_row_data);
                                                                                        $new_date = $date->format('Y-m-d H:i');
                                                                                        //$new_date = $date->format('Y-m-d H:i');

                                                                                        echo $new_date;
                                                                                        ?></a></li>

                                                                                <li  class=""><span>Step: </span><b><?php echo $c_step_details[0]['step_name']; ?></b></li>
                                                                                <li><span>Status: </span><?php echo $status; ?></li>
                                                                            </ul>

                                                                        </div>

                                                                        <?php
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                        <div class="tab-pane <?php echo $tab_active_other; ?>" id="status_logs">
                                                            <div class="content-box " id="div_status_logs_list" style="margin: 20px 20px 20px 20px;"></div>
                                                        </div>
                                                        <div class="tab-pane" id="workflow_logs" >
                                                            <div class="content-box " id="div_logs_list" style="margin: 20px 20px 20px 20px;"></div>    
                                                        </div>

                                                        <div class="tab-pane <?php echo $tab_active_lateral; ?>" id="div_tab_lateral_flow" >
                                                            <div class="content-box " id="div_lateral_flow" style="margin: 20px 20px 20px 20px;"></div>    
                                                        </div>



                                                    </div>
                                                </div>


                                            </div>
                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-logs') {
                                                echo 'active';
                                            }
                                            ?> hide" id="tab-logs" style="margin: 10px 10px 10px 10px;"> 
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">





                                                    </div>
                                                </div>

                                                <div class="content-box " id="div_logs_list"></div>                                                    
                                            </div>

                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-referral') {
                                                echo 'active';
                                            }
                                            ?>" id="tab-referral" style="margin: 10px 10px 10px 10px;"> 
                                                <div class="content-box " id="div_referral_list">

                                                    <table class="table table-responsive table-bordered table-striped">
                                                        <thead>
                                                            <tr>
                                                                <th>
                                                                    #
                                                                </th>
                                                                <th>
                                                                    Name
                                                                </th>

                                                                <th>
                                                                    Username
                                                                </th>
                                                                <th>
                                                                    Date
                                                                </th>
                                                                <th>
                                                                    Action
                                                                </th>
                                                            </tr>
                                                        </thead>
                                                        <tbody>
                                                            <?php
                                                            $wim_rrole_users2 = $WBuilder->get_workflow_im_ArolesReferrel_ByBvidRId($im_id, $im_rid, $bvid);
                                                            //echo count($wim_rrole_users2);
                                                            //print_r($wim_rrole_users2);
                                                            if (count($wim_rrole_users2) > 0) {
                                                                for ($x = 0; $x < count($wim_rrole_users2); $x++) {
                                                                    $referral_user_info = $User->getUsers_ById($wim_rrole_users2[$x]['user_id']);
                                                                    ?>
                                                                    <tr>
                                                                        <td><?php echo $x + 1; ?></td>
                                                                        <td><?php echo $referral_user_info[0]['fname'] . ' ' . $referral_user_info[0]['lname'] . ' ' . $referral_user_info[0]['mname']; ?></td>

                                                                        <td><?php echo $referral_user_info[0]['username']; ?></td>
                                                                        <td><?php echo $wim_rrole_users2[$x]['created_at']; ?></td>
                                                                        <td>                                                                                
                                                                            <button id="<?php echo $im_id . '-' . $im_rid . '-' . $bvid . '-' . $wim_rrole_users2[$x]['user_id'] . '-' . $wim_id; ?>" type="button" class="btn btn-round-min btn-danger btn_close_referral" title="Close"><span><i class="icon-remove"></i></span></button>                                                                                
                                                                        </td>
                                                                    </tr>
                                                                    <?php
                                                                }
                                                            } else {
                                                                ?>
                                                                <tr>
                                                                    <td colspan="5">
                                                                        <span class="label label-important">Records Unavailable!</span>
                                                                    </td>

                                                                </tr>
                                                                <?php
                                                            }
                                                            ?>
                                                        </tbody>
                                                    </table>
                                                </div>                                                    
                                            </div>

                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-imvalues') {
                                                echo 'active';
                                            }
                                            ?>" id="tab-imvalues" style="margin: 10px 10px 10px 10px;">
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">

                                                        <div class="btn-toolbar profile-toolbar pull-right">
                                                            <div title="Form Report" class="btn-group pull-right"> <a href="#" class=" btn btn-icon btn-success" id="form_report_export"><i class="icon-print" style="margin-right: 1px;"></i>Pdf Report</a> </div>                                            
                                                        </div>



                                                    </div>
                                                </div>



                                                <div class="row-fluid">
                                                    <div class="span12">

                                                        <div class="content-widgets light-gray">
                                                            <!--<div class="widget-head blue">
                                                                <h3><?php echo $index_master_details[0]['index_master']; ?>

                                                                </h3>
                                                            </div>-->
                                                            <div class="widget-container">



                                                                <table class="table table-bordered table-striped">
                                                                    <thead>
                                                                        <tr>
                                                                            <th>
                                                                                Field Name
                                                                            </th>
                                                                            <th colspan = "2">
                                                                                Value
                                                                            </th>

                                                                        </tr>
                                                                    </thead>
                                                                    <tbody>
                                                                        <?php
                                                                        if ($index_master_details[0]['id'] == $master_info[0]['id']) {
                                                                            $details = $IMASTER->getFieldExtend_ById($enfa_details[0]['name_of_project']);
                                                                            $name_of_project = $details[0]['field_value'];

                                                                            $details = $IMASTER->getFieldExtend_ById($enfa_details[0]['function_name']);
                                                                            $function = $details[0]['field_value'];
                                                                            $details = $IMASTER->getFieldExtend_ById($enfa_details[0]['approver_1']);
                                                                            $approver_1 = $details[0]['field_value'];
                                                                            $details = $IMASTER->getFieldExtend_ById($enfa_details[0]['approver_2']);
                                                                            $approver_2 = $details[0]['field_value'];
                                                                            $details = $IMASTER->getFieldExtend_ById($enfa_details[0]['approver_3']);
                                                                            $approver_3 = $details[0]['field_value'];
                                                                            ?>

                                                                            <tr>
                                                                                <td>Title</td>
                                                                                <td colspan = "2"><p><?php echo $enfa_details[0]['title'] ?></p></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Name of Project</td>
                                                                                <td colspan = "2"><?php echo $name_of_project; ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Name of Element</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['name_of_element'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Type Of Approval Note</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['type_of_approval_note'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Function</td>
                                                                                <td colspan = "2"><?php echo $function ?></td>
                                                                            </tr><tr>
                                                                                <td>eNFA Ref. No</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['enfa_ref_no'] ?></td>
                                                                            </tr><tr>
                                                                                <td>Brief Summary</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['brief_summary'] ?></td>
                                                                            </tr><tr>
                                                                                <td>Recommendation</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['recommendation'] ?></td>
                                                                            </tr><tr>
                                                                                <td>Selected Vendor</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['selected_vendor'] ?></td>
                                                                            </tr><tr>
                                                                                <td>PO or NON-PO based Approval</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['approval_based'] ?></td>
                                                                            </tr><tr>
                                                                                <td>NON PO Based Expenses</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['non_poapproval_expenses'] ?></td>
                                                                            </tr><tr>
                                                                                <td>Budgeted / Non Budgeted</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['budgeted_nonbudgeted'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Budget for this Scope</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['budget_for_scope'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Order Value</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['order_value'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>User/Purchase Requisition Date</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['requisition_date'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>SAP Purchase Requisition No</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['requisition_no'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Payment Terms</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['payment_terms'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Any Special Approval</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['special_approval'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Detail of taxes applicable</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['tax_applicable'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Completion period of scope of work</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['period_of_work'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Liquidated Damage</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['liquidated_damage'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Defect Liability Period</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['liability_period'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>BG Details (ABG, CPBG, PBG, Corporate BG)</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['bg_details'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Other Special terms and Condition, if any.</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['terms_condition'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Exception from Policy</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['exception'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>FYI</td>
                                                                                <td colspan = "2"><?php echo $enfa_details[0]['fyi'] ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <td>Initiated By</td>
                                                                                <td colspan = "2"><?php
                                                                                    $User = new user($db);
                                                                                    $user_details = $User->getUsers_ById($enfa_details[0]['created_by']);
                                                                                    echo $user_details[0]['fname'] . ' ' . $user_details[0]['mname'] . ' ' . $user_details[0]['lname'];
                                                                                    ?></td>

                                                                            </tr>
                                                                            <tr>
                                                                                <td>Initiated On</td>
                                                                                <td colspan = "2"><?php
                                                                                    $cur_row_data = $enfa_details[0]['created_at'];

                                                                                    $date = new DateTime($cur_row_data);
                                                                                    $new_date = $date->format('Y-m-d H:i');
                                                                                    echo $new_date;
                                                                                    ?></td>

                                                                            </tr>
                                                                        </tbody></table>
                                                                    <br>
                                                                    <table class="table table-responsive table-bordered table-striped"><tbody>

                                                                            <tr><th colspan="3" style="align: center;"> BIDDER DETAILS </th></tr>

                                                                            <?php
                                                                            if ($enfa_details) {
                                                                                ?>
                                                                                <tr>

                                                                                    <th>Name Of the Bidder</th>
                                                                                    <th>Offer Received</th>
                                                                                    <th>Technically Acceptable</th>
                                                                                </tr>
                                                                                <?php foreach ($bidder_details as $bd) { ?>
                                                                                    <tr>

                                                                                        <td><?php echo $bd['name_of_bidder']; ?></td>
                                                                                        <td><?php echo $bd['offer_received']; ?></td>
                                                                                        <td><?php echo $bd['technically_acceptable']; ?></td>
                                                                                    </tr>
                                                                                    <?php
                                                                                }
                                                                            }
                                                                            ?>


                                                                        </tbody></table>
                                                                    <table class="table table-bordered table-striped">

                                                                        <tbody>
                                                                            <tr><td colspan="3"><b>APPROVER DETAILS  </b></td></tr>
                                                                            <tr><th><b>Approver 1</b></th>
                                                                                <td><?php echo $approver_1 ?></td>
                                                                            </tr><tr>
                                                                                <th><b>Approver 2</b></th>
                                                                                <td><?php echo $approver_2 ?></td>
                                                                            </tr>
                                                                            <tr>
                                                                                <th><b>Approver 3</b></th>
                                                                                <td><?php echo $approver_3 ?></td>
                                                                            </tr>

                                                                        </tbody></table>
                                                                    <table>
                                                                        <table class="table table-bordered table-striped">

                                                                            <tbody>
                                                                                <tr><td colspan="3"><b>Exception DETAILS  </b></td></tr>
                                                                                <tr><th><b> DY Exception</b></th>
                                                                                    <td><?php echo $enfa_details[0]['exception_4'] ?></td>
                                                                                </tr>
                                                                                <tr><th><b> CFO Exception</b></th>
                                                                                    <td><?php echo $enfa_details[0]['exception_1'] ?></td>
                                                                                </tr><tr>
                                                                                    <th><b> COO Exception</b></th>
                                                                                    <td><?php echo $enfa_details[0]['exception_2'] ?></td>
                                                                                </tr>
                                                                                <tr>
                                                                                    <th><b> CEO Exception</b></th>
                                                                                    <td><?php echo $enfa_details[0]['exception_3'] ?></td>
                                                                                </tr>

                                                                            </tbody></table>
                                                                        <?php
                                                                    } else {

                                                                        for ($i = 0; $i < count($index_field_details); $i++) {
                                                                            if ($index_field_details[$i]['unique_f'] == 1) {
                                                                                $d_field_name = "<strong>" . $index_field_details[$i]['field_name'] . "</strong>";
                                                                            } else {
                                                                                $d_field_name = $index_field_details[$i]['field_name'];
                                                                            }
                                                                            $d_field_name_table = $index_field_details[$i]['field_name_table'];
                                                                            ?>

                                                                            <tr>
                                                                                <td>
                                                                                    <?php echo $d_field_name; ?>
                                                                                </td>
                                                                                <td>
                                                                                    <?php
                                                                                    //echo $index_field_details[$i]['field_type'];
                                                                                    if ($index_field_details[$i]['field_type'] == 'Select Menu') {
                                                                                        $details = $IMASTER->getFieldExtend_ById($index_value_details[0][$d_field_name_table]);
                                                                                        $field_value = $details[0]['field_value'];


                                                                                        if (empty($field_value) && $field_value == '') {
                                                                                            echo '--';
                                                                                        } else {
                                                                                            echo $field_value;
                                                                                        }
                                                                                    } else if ($index_field_details[$i]['field_type'] == 'Checkbox' || $index_field_details[$i]['field_type'] == 'Radio') {
                                                                                        $imfield_checkradio_ids = explode(",", $index_value_details[0][$d_field_name_table]);
                                                                                        $field_value_arr = array();
                                                                                        for ($chrd = 0; $chrd < count($imfield_checkradio_ids); $chrd++) {
                                                                                            $details = $IMASTER->getFieldExtend_ById($imfield_checkradio_ids[$chrd]);
                                                                                            array_push($field_value_arr, $details[0]['field_value']);
                                                                                        }
                                                                                        $field_value = implode(",", $field_value_arr);


                                                                                        if (empty($field_value) && $field_value == '') {
                                                                                            echo '--';
                                                                                        } else {
                                                                                            echo $field_value;
                                                                                        }
                                                                                    } else {
                                                                                        if (empty($index_value_details[0][$d_field_name_table]) && $index_value_details[0][$d_field_name_table] == '') {
                                                                                            echo '--';
                                                                                        } else {
                                                                                            // echo $index_value_details[0][$d_field_name_table];
                                                                                            if (strpos($index_value_details[0][$d_field_name_table], 'data') === 0) {
                                                                                                ?>
                                                                                                <iframe class="frame" height="100"src="<?php echo $index_value_details[0][$d_field_name_table]; ?>"></iframe>
                                                                                                <?php
                                                                                            } else {
                                                                                                echo $index_value_details[0][$d_field_name_table];
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                    ?>
                                                                                </td>

                                                                            </tr>

                                                                            <?php
                                                                            $s_value_id = '';
                                                                            $s_field_value = '';
                                                                        }
                                                                        ?>
                                                                        <tr>
                                                                            <td>Added By</td>
                                                                            <td><?php
                                                                                $User = new user($db);
                                                                                $user_details = $User->getUsers_ById($index_value_details[0]['added_by']);
                                                                                echo $user_details[0]['fname'] . ' ' . $user_details[0]['mname'] . ' ' . $user_details[0]['lname'];
                                                                                ?></td>

                                                                        </tr>
                                                                        <tr>
                                                                            <td>Added On</td>
                                                                            <td><?php
                                                                                $cur_row_data = $index_value_details[0]['log_datetime'];

                                                                                $date = new DateTime($cur_row_data);
                                                                                $new_date = $date->format('Y-m-d H:i');
                                                                                echo $new_date;
                                                                                ?></td>

                                                                        </tr>
                                                                        </tbody></table>
                                                                <?php } ?>

                                                                <table><tbody>
                                                                        <?php
                                                                        $builder_first_step_info = $WBuilder->get_WBuilderValue_First_BId($bid);

                                                                        if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                            if ($index_master_details[0]['id'] == $master_info[0]['id']) {
                                                                                ?>    <tr><td colspan="3">
                                                                                        <div class="form-actions"> <a target="_blank" href="../index.php?rq=<?php echo encrypt_url('enfa/enfa_editForm.php', APP_ENCRYPTION_SALT); ?>&record_id=<?php echo encrypt_url($im_rid, APP_ENCRYPTION_SALT); ?>&id=<?php echo encrypt_url($enfa_details[0]['id'], APP_ENCRYPTION_SALT); ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&edit_filter=<?php echo $edit_filter; ?>">
                                                                                                <button type="button" class="btn btn-success">Edit</button> 
                                                                                            </a>                                                                  <?php
                                                                                        } else {
                                                                                            $imaster_form = new imaster_form($db);
                                                                                            $imaster_form_details = $imaster_form->getFormByImasterId($im_id);
                                                                                            if (empty($imaster_form_details)) {
                                                                                                ?>               
                                                                                                <td colspan="2">
                                                                                                    <div class="form-actions">
                                                                                                        <a target="_blank" href="../index.php?rq=<?php echo encrypt_url('index_master/ivalue_editform.php', APP_ENCRYPTION_SALT); ?>&record_id=<?php echo encrypt_url($im_rid, APP_ENCRYPTION_SALT); ?>&id=<?php echo $im_id; ?>&pid=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&edit_filter=<?php echo $edit_filter; ?>">
                                                                                                            <button type="button" class="btn btn-success">Edit</button> 
                                                                                                        </a>

                                                                                                        <?php
                                                                                                    }
                                                                                                }
                                                                                            }
                                                                                            ?>
                                                                                        </div>
                                                                                    </td> 


                                                                        </tr>
                                                                    </tbody>
                                                                </table>

                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>

                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-template') {
                                                echo 'active';
                                            }
                                            if (count($template_details) <= 0) {
                                                echo "hide";
                                            }
                                            ?>" id="tab-template" style="margin: 10px 10px 10px 10px;">
                                                 <?php if (count($template_details) > 0) { ?>
                                                    <span class="label label-important btn-edit-value" id="<?php echo encrypt_url($im_rid, APP_ENCRYPTION_SALT) . '_' . $im_id; ?>">Edit Value</span><br>
                                                    <div class="span12 scroll"  style="height: 805px;width:100%">
                                                        <textarea readonly="true" id="elm1" name="elm1" cols="150" style="width: 100%" class="tinymce"><?php echo $template_details[0]['content']; ?></textarea>
                                                    </div>
                                                    <?php
                                                } else {
                                                    echo '<span class="label">Record Unavailable!</span>';
                                                }
                                                ?>
                                            </div>

                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-forms') {
                                                echo 'active';
                                            }
                                            if (count($previous_dynamic_forms) <= 0 && count($step_dynamic_forms) <= 0 && count($previous_static_forms) <= 0 && count($step_static_forms) <= 0) {
                                                echo "hide";
                                            }
                                            ?>" id="tab-forms" style="margin: 10px 10px 10px 10px;">
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">




                                                    </div>
                                                </div>
                                                <?php
                                                if (count($previous_dynamic_forms) > 0 || count($step_dynamic_forms) > 0 || count($previous_static_forms) > 0 || count($step_static_forms) > 0) {
                                                    ?>
                                                    <ul class="nav nav-tabs" id="myTab">
                                                        <?php
                                                        $incr_x = 0;
                                                        foreach ($previous_dynamic_forms as $pre_dyform) {
                                                            $pre_dyform_im_id = $pre_dyform['im_id'];
                                                            $pre_dyform_im_info = $IMASTER->getIndexMasterByID($pre_dyform_im_id);

                                                            if ($incr_x == 0) {
                                                                $pre_form_status = 'active';
                                                                $pre_form_status_trigger = 1;
                                                            } else {
                                                                $pre_form_status = '';
                                                                //$pre_form_status_trigger = 0;
                                                            }
                                                            ?>
                                                            <li class="<?php echo $pre_form_status; ?>"><a href="#tab-pre-form-<?php echo $pre_dyform_im_id; ?>"><i class="icon-file"></i> <?php echo $pre_dyform_im_info[0]['index_master']; ?> - Form</a></li>
                                                            <?php
                                                            $incr_x++;
                                                        }
                                                        ?>

                                                        <?php
                                                        $incr_x = 0;
                                                        foreach ($step_dynamic_forms as $dyform) {
                                                            $dyform_im_id = $dyform['im_id'];
                                                            $dyform_im_info = $IMASTER->getIndexMasterByID($dyform_im_id);

                                                            if ($incr_x == 0) {
                                                                if ($pre_form_status_trigger == 0) {
                                                                    $dyform_im_status = 'active';
                                                                }
                                                            } else {
                                                                $dyform_im_status = '';
                                                            }
                                                            //echo 'tab-form-'.$pre_form_status_trigger;
                                                            ?>
                                                            <li class="<?php echo $dyform_im_status; ?>"><a href="#tab-form-<?php echo $dyform_im_id; ?>"><i class="icon-file"></i> <?php echo $dyform_im_info[0]['index_master']; ?> - Form</a></li>
                                                            <?php
                                                            $incr_x++;
                                                        }
                                                        ?>

                                                        <?php
                                                        foreach ($previous_static_forms as $pre_sform) {
                                                            $pre_sform_tb_name = $pre_sform['table_name'];
                                                            if ($pre_sform_tb_name == 'static_legal') {
                                                                $sform_tb_name_str = "Coder";
                                                            }
                                                            ?>
                                                            <li><a href="#tab-pre-sform-<?php echo $pre_sform_tb_name; ?>"><i class="icon-file"></i> <?php echo $sform_tb_name_str; ?> - Form</a></li>
                                                            <?php
                                                        }
                                                        ?>

                                                        <?php
                                                        foreach ($step_static_forms as $sform) {

                                                            $sform_tb_name = $sform['table_name'];
                                                            if ($sform_tb_name == 'static_legal') {
                                                                $sform_tb_name_str = "Coder";
                                                            }
                                                            ?>
                                                            <li><a href="#tab-sform-<?php echo $sform_tb_name; ?>"><i class="icon-file"></i> <?php echo $sform_tb_name_str; ?> - Form</a></li>
                                                            <?php
                                                        }
                                                        ?>
                                                    </ul>
                                                    <div class="tab-content">
                                                        <?php
                                                        include 'wim_editform_dy_im.php';
                                                        ?>
                                                    </div>
                                                    <?php
                                                } else {
                                                    echo '<div class="row-fluid"><div class="span12"><span class="label">Records Unavailable!</span></div></div>';
                                                }
                                                ?>

                                            </div>



                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-files') {
                                                echo 'active';
                                            }
                                            ?>" id="tab-files" style="margin: 10px 10px 10px 10px;">
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">




                                                    </div>
                                                </div>


                                                <div class="row-fluid">
                                                   

                                                        <div class="tab-widget" style="margin: 10px 0px 10px 0px;">

                                                            <ul class="nav nav-tabs" id="myTab2">
                                                                <li class="active"><a href="#tab-docset"><i class="icon-file-alt"></i> Doc-Set Files</a></li>
                                                                <!--<li class="<?php
                                                                if (!empty($_REQUEST['a_tab_sub']) && $_REQUEST['a_tab_sub'] == 'tab-attachment') {
                                                                    echo 'active';
                                                                }
                                                                ?>"><a href="#tab-attachment"><i class="icon-paper-clip"></i> Attachments</a></li>-->
                                                                <li class="<?php
                                                                if (!empty($_REQUEST['a_tab_sub']) && $_REQUEST['a_tab_sub'] == 'tab-docset-missing') {
                                                                    echo 'active';
                                                                }
                                                                ?>"><a href="#tab-docset-missing"><i class="icon-file"></i> Doc-Set Missing Files</a></li>
                                                            </ul>
                                                            <div class="tab-content">

                                                                <div class="tab-pane active" id="tab-docset" style="margin: 10px 10px 10px 10px;">

                                                                    <?php
                                                                    //=============================
//      DOC SET RULE
//=============================

                                                                    $wim_info = $Workflow->getWIM_ByID($wim_id);
                                                                    $im_id = $wim_info[0]['im_id'];
                                                                    $record_info = $WBuilder->get_workflow_builder_docset_rule_BVID($pid, $bid, $bvid);
                                                                    $no_record_info = count($record_info);


                                                                    $IMASTER = new index_master($db);
                                                                    $IMASTER->setRecordId($im_rid);
                                                                    $index_value_details = $IMASTER->getIndexValue_ByRecordSetId($im_id);
                                                                    $index_field_details = $IMASTER->getIndexFieldUser($im_id, $_SESSION[SESSION_VAR_NAME]['role']);
//print_r($index_field_details);

                                                                    $required_docset = array();
                                                                    for ($i = 0; $i < $no_record_info; $i++) {

                                                                        $rule_imf_id = $record_info[$i]['imf_id'];
                                                                        $current_field_info = $IMASTER->getIndexField_ById($rule_imf_id);
                                                                        if ($current_field_info[0]['field_type'] == 'Select Menu' || $current_field_info[0]['field_type'] == 'Checkbox' || $current_field_info[0]['field_type'] == 'Radio') {

                                                                            $d_field_name_table = $current_field_info[0]['field_name_table'];
                                                                            $details = $IMASTER->getFieldExtend_ById($index_value_details[0][$d_field_name_table]);
                                                                            $im_field_val = $details[0]['field_value'];
                                                                            if (strcmp($record_info[$i]['imf_value'], $im_field_val) == 0) {

                                                                                /* $WBuilder->setProjectId($record_info[0]['project_id']);
                                                                                  $WBuilder->setBuilderId($record_info[0]['builder_id']);
                                                                                  $WBuilder->setBuilderValueId($record_info[0]['builder_value_id']);
                                                                                  $WBuilder->setImId($record_info[0]['im_id']);
                                                                                  $WBuilder->setImfId($record_info[0]['imf_id']);
                                                                                  echo $record_info[$i]['id']; */
                                                                                $docset_rule_info = $WBuilder->get_wf_docset_rule_ByRuleId_Mandatory($record_info[$i]['id']);
                                                                                //print_r($docset_rule_info);
                                                                                $docset_ids = array_column($docset_rule_info, 'doc_set_value_id');
                                                                                foreach ($docset_ids as $value) {
                                                                                    array_push($required_docset, $value);
                                                                                }
                                                                            }
                                                                        } else {

                                                                            //$im_field_val = $index_value_details["im_field_" . $rule_imf_id];
                                                                            $im_field_val_arr = array_column($index_value_details, "im_field_" . $rule_imf_id);
                                                                            //print_r($im_field_val_arr);
                                                                            if (in_array($record_info[$i]['imf_value'], $im_field_val_arr)) {

                                                                                $key = array_search($record_info[$i]['imf_value'], $im_field_val_arr);
                                                                                $im_field_val = $im_field_val_arr[$key];

                                                                                if (strcmp($record_info[$i]['imf_value'], $im_field_val) == 0) {

                                                                                    /* $WBuilder->setProjectId($record_info[0]['project_id']);
                                                                                      $WBuilder->setBuilderId($record_info[0]['builder_id']);
                                                                                      $WBuilder->setBuilderValueId($record_info[0]['builder_value_id']);
                                                                                      $WBuilder->setImId($record_info[0]['im_id']);
                                                                                      $WBuilder->setImfId($record_info[0]['imf_id']);
                                                                                      echo $record_info[$i]['id']; */
                                                                                    $docset_rule_info = $WBuilder->get_wf_docset_rule_ByRuleId_Mandatory($record_info[$i]['id']);
                                                                                    //print_r($docset_rule_info);
                                                                                    $docset_ids = array_column($docset_rule_info, 'doc_set_value_id');
                                                                                    foreach ($docset_ids as $value) {
                                                                                        array_push($required_docset, $value);
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
//print_r($required_docset);
//=============================
//      DOC SET RULE
//=============================
                                                                    ?>
                                                                    <script nonce=<?php echo $_SESSION[SESSION_VAR_NAME]['usernonce']; ?>>
                                                                        $(document).ready(function () {
                                                                            $(document).on("click", '#span_mandatory_docset', function () {

                                                                                var footer_popup_primary = [
                                                                                    {
                                                                                        item: "<button type='button'></button>",
                                                                                        event: jsPanel.evtStart,
                                                                                        btnclass: "btn btn-danger btn-sm",
                                                                                        btntext: " Close",
                                                                                        callback: function (event) {
                                                                                            event.stopPropagation();
                                                                                            event.data.close();
                                                                                        }
                                                                                    }
                                                                                ];

                                                                                var tb = '<i class="fa fa-user"></i><i class="fa fa-cog"> ';
                                                                                var mypanel = $.jsPanel({
                                                                                    contentSize: {width: 650, height: 350},
                                                                                    //headerControls: {controls: "closeonly"},

                                                                                    headerTitle: ' Doc-Set Mandatory List*',
                                                                                    //resizable: "disabled",
                                                                                    //content:        stuff,
                                                                                    position: "top",
                                                                                    theme: '#862560',
                                                                                    contentAjax: {
                                                                                        url: 'workflow_im_docset_mandatory_info.php?pid=<?php echo $pid; ?>&im_id=<?php echo $im_id; ?>&rid=<?php echo $imr_id; ?>&bid=<?php echo $bid; ?>&bvid=<?php echo $bvid; ?>&mdocset=<?php echo urlencode(join(",", $required_docset)); ?>',
                                                                                        autoload: true
                                                                                    },
                                                                                    footerToolbar: footer_popup_primary
                                                                                });
                                                                            });
                                                                        });
                                                                    </script>
                                                                    <div class="btn-group" style="margin-bottom: 5px;">

                                                                        <button class="btn btn-primary">Action</button>
                                                                        <button data-toggle="dropdown" class="btn btn-primary dropdown-toggle"><span class="caret"></span></button>

                                                                        <ul class="dropdown-menu">
                                                                            <li><a href="#" id="doc_bulk_download_link" name = "doc_bulk_download_link" >Document bulk download</a></li>
                                                                            <li><a href="#" id="send_documents" name = "send_documents" >Send Documents</a></li>
                                                                        </ul>
                                                                    </div>
                                                                    <?php
                                                                    if (count($required_docset) > 0) {
                                                                        ?>
                                                                        <span id="span_mandatory_docset" class="label label-important" style="margin: -20px 0px 5px 0px;cursor: pointer;">Mandatory Doc-set*</span>
                                                                        <?php
                                                                    }
                                                                    ?>

                                                                    <?php
                                                                    for ($i = 0; $i < $no_attachments_list; $i++) {
                                                                        $record_details = $File->getDoc_ByID($attachments_list[$i]['file_name']);
                                                                        ?>
                                                                        <input type="hidden" id='uploaded_docset_re' name="uploaded_docset_re[]" value="<?php echo $record_details[0]['doc_type']; ?>">
                                                                        <?php
                                                                    }
                                                                    ?>

                                                                    <input type="hidden" id='mandatory_docset' name="mandatory_docset" value="<?php echo join(',', $required_docset); ?>">

                                                                    <?php
                                                                    $qc_access = 0;
                                                                    foreach ($role_usergroups as $role_usergroup) {
                                                                        if ($_SESSION[SESSION_VAR_NAME]['role'] == $role_usergroup['user_group_id']) {
                                                                            $qc_access = 1;
                                                                        }
                                                                    }

                                                                    if ($qc_access == 1 && $bvalue_details[0]['qc_approve_docs'] == 1) {
                                                                        ?>
                                                                        <a href="#change_status" data-toggle="modal" id="change_sta"><button style=width:100px;height:25px;margin-bottom:3px;" class="btn-primary">QC Approval</button></a>
                                                                        <?php
                                                                    }

                                                                    if (in_array($_SESSION[SESSION_VAR_NAME]['user_id'], $lateral_inprocess_users) || ($step_access == 1 && in_array($bvid, $a_step_arr))) {
                                                                        $block_upload_doc_wf_arr = array(1, 4, 5, 6, 14, 15);
                                                                        if (!in_array($wim_details[0]['a_status'], $block_upload_doc_wf_arr)) {
                                                                            ?>
                                                                            <a class="pull-right a_new_attachment" title="add attachment" style="cursor:pointer;"><span class="badge badge-success" style="height:20px;"><i class="fa fa-upload" aria-hidden="true"></i></span></a>
                                                                            <?php
                                                                        }
                                                                    }
                                                                    ?>
																	<style>
																	#doc_set_datatable{
																	width:100% !important;
																	}
																	
																	</style>
                                                                    <form class="form-horizontal left-align" id="form-docsets-datatable" method="POST" action="#">
                                                                        <div style="width:100% !important; height: 100%; overflow:auto !important">
                                                                            <table class="table table-bordered table-striped" id="doc_set_datatable">
                                                                                <thead>
                                                                                <th align="center"style="width:5px;"><input type="checkbox" id="docset_attachments_selectall" ></th>
                                                                                <th>Doc Id</th>
                                                                                <!--<th>Document No</th>-->
                                                                                <th>Document Title</th>
                                                                                <th>Doc Type</th>
                                                                                <th>Comments</th>
                                                                                <th>Uploaded By</th>
                                                                                <th>Uploaded At</th>
                                                                                <th>Action</th>
                                                                                </thead>
                                                                                <tbody>

                                                                                </tbody>
                                                                            </table>
                                                                        </div>
                                                                    </form>


                                                                </div>

                                                                <!--<div class="tab-pane <?php
                                                                if (!empty($_REQUEST['a_tab_sub']) && $_REQUEST['a_tab_sub'] == 'tab-attachment') {
                                                                    echo 'active';
                                                                }
                                                                ?>" id="tab-attachment" style="margin: 10px 10px 10px 10px;">
                                                                    <div>
                                                                        <div class="row-fluid">
                                                                            <div class="span12">
                                                                                <div class="widget-header-block">

                                                                <?php
                                                                if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                    $block_upload_doc_wf_arr = array(1, 4, 5, 6, 14, 15);
                                                                    if (!in_array($wim_details[0]['a_status'], $block_upload_doc_wf_arr)) {
                                                                        ?>
                                                                                                                                                                                                                                <a class="pull-right a_new_attachment" title="add attachment" style="cursor:pointer;"><span class="badge badge-success" style="height:20px;"><i class="fa fa-upload" aria-hidden="true"></i></span></a>
                                                                        <?php
                                                                    }
                                                                }
                                                                ?>
                                                                                </div>
                                                                            </div>
                                                                        </div>

                                                                        <div class="content-box " id="div_attachments">
                                                                        </div>
                                                                    </div>
                                                                </div>-->

                                                                <div class="tab-pane <?php
                                                                if (!empty($_REQUEST['a_tab_sub']) && $_REQUEST['a_tab_sub'] == 'tab-docset-missing') {
                                                                    echo 'active';
                                                                }
                                                                ?>" id="tab-docset-missing" style="margin: 10px 10px 10px 10px;">
                                                                    <div id="docset-missing"></div>
                                                                </div>

                                                            </div>

                                                        </div>

                                                   
                                                    
                                                </div>
												
												
												<!--div class="row-fluid">

                                                        <?php
                                                        if ($_SESSION[SESSION_VAR_NAME]['wf_view_type'] == 2) {
                                                            ?>
                                                            <div class="tab-widget" style="margin: 10px 10px 10px 10px;">
                                                                <ul class="nav nav-tabs" id="myTab2">
                                                                    <li class="active"><a href="#tab-filepreview"><i class="icon-eye-open"></i> Preview</a></li>
                                                                    <li class="<?php
                                                                    if (!empty($_REQUEST['a_tab_sub2']) && $_REQUEST['a_tab_sub2'] == 'tab-fileinfo') {
                                                                        echo 'active';
                                                                    }
                                                                    ?>"><a href="#tab-fileinfo"><i class=" icon-file-alt"></i> Information</a></li>
                                                                </ul>
                                                                <div class="tab-content">
                                                                    <div class="tab-pane active" id="tab-filepreview">
                                                                        <div style="margin: 10px 10px 10px 10px;" id="div_file_preview">
                                                                            Record Unavailable!
                                                                        </div>
                                                                    </div>
                                                                    <div class="tab-pane <?php
                                                                    if (!empty($_REQUEST['a_tab_sub2']) && $_REQUEST['a_tab_sub2'] == 'tab-fileinfo') {
                                                                        echo 'active';
                                                                    }
                                                                    ?>" id="tab-fileinfo">
                                                                        <div style="margin: 10px 10px 10px 10px;" id="div_file_info">
                                                                            Record Unavailable!
                                                                        </div>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                            <?php
                                                        }
                                                        ?>

                                                    </div-->
												
												


                                            </div>






                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-tasks') {
                                                echo 'active';
                                            }
                                            if ($no_tasklist_info <= 0) {
                                                echo "hide";
                                            }
                                            ?>" id="tab-tasks" >

                                                <?php
                                                $workflowstep_details = $WBuilder->get_WBuilderValue_BId($bid);
                                                $workflowstep_no = count($workflowstep_details);
// for(){
                                                ?>
                                                <div class="accordion" id="accordion2" style="margin: 10px 10px 10px 10px;">

                                                    <?php
                                                    for ($i = 0; $i < $workflowstep_no; $i++) {


                                                        $step_info = $WBuilder->get_WBuilderValue_Id($workflowstep_details[$i]['id']);
                                                        $accordion_bvid = $step_info[0]['id'];

                                                        $accordion_reff = 'accordion_step_' . $i;
                                                        if ($accordion_bvid == $bvid) {
                                                            $accordion_collapse = 'in';
                                                        } else {
                                                            $accordion_collapse = '';
                                                        }
                                                        ?>
                                                        <div class="accordion-group">
                                                            <div class="accordion-heading">
                                                                <a href="#<?php echo $accordion_reff; ?>" data-parent="#accordion2" data-toggle="collapse" class="accordion-toggle"><?php echo $step_info[0]['step_name']; ?></a>
                                                            </div>
                                                            <div class="accordion-body collapse <?php echo $accordion_collapse; ?>" id="<?php echo $accordion_reff; ?>">
                                                                <div class="accordion-inner" style="background-color: #FFF5F5">
                                                                    <?php
                                                                    $tasklist_info_acc = $WBuilder->getBuilderTask_ByValueId($step_info[0]['id']);
                                                                    $no_tasklist_info_acc = count($tasklist_info_acc);
                                                                    ?>
                                                                    <table class="table table-bordered " style="margin: 10px 0px 10px 0px;">
                                                                        <thead>
                                                                            <tr>
                                                                                <th style="width:5%">
                                                                                    # 
                                                                                </th>
                                                                                <th style="width:25%">
                                                                                    Task
                                                                                </th>
                                                                                <th style="width:70%">
                                                                                    Task Details
                                                                                </th>

                                                                            </tr>
                                                                        </thead>
                                                                        <tbody>
                                                                            <?php
                                                                            if (empty($no_tasklist_info_acc)) {
                                                                                ?>
                                                                                <tr>
                                                                                    <td colspan="3">Task Unavailable!</td>
                                                                                </tr>
                                                                                <?php
                                                                            } else {

                                                                                for ($x = 0; $x < $no_tasklist_info_acc; $x++) {
                                                                                    $task_info = $Tasklist->getTaskList_ByID($tasklist_info_acc[$x]['task_id']);
                                                                                    $task_display_type = $tasklist_info_acc[$x]['task_display_type'];
                                                                                    $task_child_values = $WBuilder->getBuilderTaskChild_ByBTId($tasklist_info_acc[$x]['id']);

                                                                                    if (!in_array($accordion_bvid, $a_step_arr)) {
                                                                                        $check_box_class = 'disabled readonly';
                                                                                    } else if ($step_access == 1 && in_array($accordion_bvid, $a_step_arr)) {
                                                                                        $check_box_class = '';
                                                                                    }
                                                                                    ?>
                                                                                    <tr>
                                                                                        <td>                      
                                                                                            <?php echo $x + 1; ?>
                                                                                        </td>
                                                                                        <td>
                                                                                            <p title="<?php echo $task_info[0]['description']; ?>" class="table_tool_link" style="cursor: pointer;">
                                                                                                <?php
                                                                                                echo $task_info[0]['task_name'];
                                                                                                ?>
                                                                                            </p>
                                                                                        </td>

                                                                                        <td>
                                                                                            <?php
                                                                                            if (count($task_child_values) > 0) {
                                                                                                ?>
                                                                                                <table class="table table-bordered responsive">
                                                                                                    <tbody>

                                                                                                    <ul class="task-list">
                                                                                                        <?php
                                                                                                        $rand = rand(999, 999999);
                                                                                                        foreach ($task_child_values as $task_child_value) {
                                                                                                            $im_child_task = $Workflow->getWorkflow_IM_TaskChild_ByBTId($wim_id, $tasklist_info_acc[$x]['id'], $task_child_value['id'], $im_rid);

                                                                                                            if (count($im_child_task) > 0) {
                                                                                                                $checked = 'checked="checked"';
                                                                                                            } else {
                                                                                                                $checked = '';
                                                                                                            }

                                                                                                            if ($im_child_task[0]['n_a'] == 1) {
                                                                                                                $disable_taskchild = "disabled";
                                                                                                                $checked = '';
                                                                                                                $na_checked = 'checked="checked"';
                                                                                                            } else {
                                                                                                                $disable_taskchild = '';
                                                                                                                $checked = $checked;
                                                                                                                $na_checked = '';
                                                                                                            }
                                                                                                            if ($task_child_value['mandatory'] == 1) {
                                                                                                                $task_mandatory = '<sup class="text-error lead">*</sup>';
                                                                                                            } else {
                                                                                                                $task_mandatory = '';
                                                                                                            }
                                                                                                            ?>
                                                                                                            <tr>
                                                                                                                <td>
                                                                                                                    <?php
                                                                                                                    if ($task_display_type == 1) {
                                                                                                                        ?>
                                                                                                                        <input  <?php echo $disable_taskchild; ?> <?php echo $check_box_class; ?> <?php echo $checked; ?> value="<?php echo $tasklist_info_acc[$x]['task_id'] . ':' . $task_child_value['id']; ?>" itemref="<?php echo $tasklist_info_acc[$x]['id'] . ':' . $bvid; ?>" class="check_f class_task_child_value" type="checkbox" name="task_child_value_<?php echo $rand; ?>" />
                                                                                                                        <?php echo $task_child_value['task_child_name'] . ' ' . $task_mandatory; ?>

                                                                                                                        <?php
                                                                                                                    } else {
                                                                                                                        ?>
                                                                                                                        <input  <?php echo $disable_taskchild; ?> <?php echo $check_box_class; ?> <?php echo $checked; ?> value="<?php echo $tasklist_info_acc[$x]['task_id'] . ':' . $task_child_value['id']; ?>" itemref="<?php
                                                                                                                        echo $tasklist_info_acc[$x]['id'] . ':' . $bvid;
                                                                                                                        ?>" class="check_f class_task_child_value" type="radio" name="task_child_value_<?php echo $rand; ?>"/>
                                                                                                                                                                                                                          <?php echo $task_child_value['task_child_name'] . ' ' . $task_mandatory; ?>
                                                                                                                                                                                                                          <?php
                                                                                                                                                                                                                      }
                                                                                                                                                                                                                      ?>

                                                                                                                </td>
                                                                                                                <td>
                                                                                                                    <?php
                                                                                                                    if ($task_display_type == 1) {
                                                                                                                        ?>
                                                                                                                        <input <?php echo $check_box_class; ?> <?php echo $na_checked; ?> value="<?php echo $tasklist_info_acc[$x]['task_id'] . ':' . $task_child_value['id']; ?>" itemref="<?php echo $tasklist_info_acc[$x]['id'] . ':' . $bvid; ?>" class="check_f class_task_child_na" type="checkbox" name="task_child_na_<?php echo $rand; ?>" />
                                                                                                                        <span class="label label-info">N/A</span>
                                                                                                                        <?php
                                                                                                                    } else {
                                                                                                                        
                                                                                                                    }
                                                                                                                    ?>
                                                                                                                </td> 


                                                                                                                <td>
                                                                                                                    <?php
                                                                                                                    if ($task_child_value['enable_comments'] == 1) {

                                                                                                                        $comments_list = $Workflow->getWorkflow_IM_TaskChildComment_ByBTId_count($bid, $tasklist_info_acc[$x]['id'], $task_child_value['id'], $im_rid);
                                                                                                                        if (count($comments_list) > 0) {
                                                                                                                            $no_comments_list_class = 'btn-info';
                                                                                                                        } else {
                                                                                                                            $no_comments_list_class = '';
                                                                                                                        }

                                                                                                                        if ($step_access == 1 && in_array($bvid, $a_step_arr)) {

                                                                                                                            //echo '<i style="cursor: pointer;" id="' . $tasklist_info_acc[$x]['id'] . '_' . $task_child_value['id'] . '" class="icon-comments-alt a_new_task_comment '.$no_comments_list_class.'"></i>';
                                                                                                                            echo '<button type="button" style="cursor: pointer;" id="' . $tasklist_info_acc[$x]['id'] . '_' . $task_child_value['id'] . '" class="btn btn-round-min ' . $no_comments_list_class . ' a_new_task_comment"><span><i class="icon-comment-alt"></i></span></button>';
                                                                                                                        } else {
                                                                                                                            //echo '<i style="cursor: pointer;" id="' . $tasklist_info_acc[$x]['id'] . '_' . $task_child_value['id'] . '" class="icon-comments-alt disable_add a_new_task_comment '.$no_comments_list_class.'"></i>';
                                                                                                                            echo '<button type="button" style="cursor: pointer;" id="' . $tasklist_info_acc[$x]['id'] . '_' . $task_child_value['id'] . '" class="btn btn-round-min ' . $no_comments_list_class . ' disable_add a_new_task_comment"><span><i class="icon-comment-alt"></i></span></button>';
                                                                                                                        }
                                                                                                                    }
                                                                                                                    ?>
                                                                                                                </td>  
                                                                                                            </tr>
                                                                                                            <?php
                                                                                                        }
                                                                                                        ?>
                                                                                                    </ul>

                                                                                    </tbody>
                                                                                </table>
                                                                                <?php
                                                                            } else {
                                                                                echo '<span class="label">Unavailable!</span>';
                                                                            }
                                                                            ?>
                                                                            </td>

                                                                            </tr>
                                                                            <?php
                                                                        }
                                                                    }
                                                                    ?>

                                                                    </tbody>
                                                                    </table>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <?php
                                                    }
                                                    ?>

                                                </div>

                                            </div>



                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'tab-roles') {
                                                echo 'active';
                                            }
                                            ?>" id="tab-roles" style="margin: 10px 5px 10px 5px;">
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">





                                                    </div>
                                                </div>
                                                <?php
                                                if ($wim_details[0]['a_builder_value_id'] == $bvid) {
                                                    $step_role_id = $a_role_master_id;
                                                } else {
                                                    $step_role_id = $bvalue_details[0]['role_master_id'];
                                                }
                                                $role_master_info = $WBuilder->get_RoleMaster_ID($step_role_id);
                                                ?>
                                                <table class="table table-bordered table-striped">
                                                    <thead>
                                                        <tr>
                                                            <th>
                                                                Role Type 
                                                            </th>
                                                            <th>
                                                                User Group
                                                            </th>
                                                            <th>
                                                                Action
                                                            </th>                    
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                        <?php
                                                        //$step_role_id = $a_role_master_id;
                                                        /* if ($step_role_id == -1) {
                                                          //$rule_info = $WRule->get_Rule_ID($step_info[0]['rule_id']);
                                                          $formula_details = $WRule->get_formula_byRule($bvalue_details[0]['rule_id']);
                                                          $step_role_id = $formula_details[0]['role_master_id'];
                                                          } */

                                                        $WRole->setRoleMasterId($step_role_id);
                                                        $role_usergroups1 = $WRole->get_Assigned_Usergroup();

                                                        foreach ($role_usergroups1 as $role_usergroup1) {
                                                            if ($role_usergroup1['role_type'] == 1) {
                                                                /*                                                                 $primary_usergroup_info1 = $User->getUserGroup_byId($role_usergroup1['user_group_id']);
                                                                  $primary_usergroup1 = $primary_usergroup_info1[0]['name'];
                                                                  $primary_usergroup_id1 = $primary_usergroup_info1[0]['id']; */
                                                                if ($role_usergroup1['user_group_id'] == 0 || $role_usergroup1['user_group_id'] == "") {
                                                                    $primary_usergroup_info1 = $User->getUserRole_byId($role_usergroup1['role_master_id']);
                                                                    $primary_usergroup1 = $primary_usergroup_info1[0]['role_master'];
                                                                    $primary_usergroup_id1 = $primary_usergroup_info1[0]['id'];
                                                                } else {

                                                                    $primary_usergroup_info1 = $User->getUserGroup_byId($role_usergroup1['user_group_id']);
                                                                    $primary_usergroup1 = $primary_usergroup_info1[0]['name'];
                                                                    $primary_usergroup_id1 = $primary_usergroup_info1[0]['id'];
                                                                }
                                                                $available_primary_users1 = $Workflow->getDM_AvailableUser_ByRole($pid, $primary_usergroup_id1);

                                                                $unavailable_primary_users1 = $Workflow->getDM_AvailableUser_ByRole($pid, $primary_usergroup_id1);
                                                            } else if ($role_usergroup1['role_type'] == 0) {
                                                                $secondary_usergroup_info1 = $User->getUserGroup_byId($role_usergroup1['user_group_id']);
                                                                $secondary_usergroup1 = $secondary_usergroup_info1[0]['name'];
                                                                $secondary_usergroup_id1 = $secondary_usergroup_info1[0]['id'];

                                                                $available_secondary_users1 = $Workflow->getDM_AvailableUser_ByRole($pid, $secondary_usergroup_id1);
                                                                $unavailable_secondary_users1 = $Workflow->getDM_AvailableUser_ByRole($pid, $secondary_usergroup_id1);
                                                            } else if ($role_usergroup1['role_type'] == -1) {

                                                                $field_id = $role_usergroup1['user_group_id'];

                                                                $IMaster = new index_master($db);
                                                                $field_details = $IMaster->getIndexField_ById($field_id);
                                                                $field_name = $field_details[0]['field_name'];
                                                                $im_value_details = $IMaster->getMasterField_name($im_id, $im_rid, 'im_field_' . $field_id);
                                                                $field_value = $im_value_details[0]['im_field_' . $field_id];

                                                                $primary_usergroup_info1 = $User->getUserGroup_byname($field_value);
                                                                $primary_usergroup1 = $primary_usergroup_info1[0]['name'];
                                                                $primary_usergroup_id1 = $primary_usergroup_info1[0]['id'];

                                                                $available_primary_users1 = $Workflow->getUsers_UserGroupHierarchy($primary_usergroup_id1);

                                                                //$unavailable_primary_users1 = $Workflow->getDM_UnavailableUser_ByRole($pid, $primary_usergroup_id1);
                                                            } else if ($role_usergroup1['role_type'] == -2) {
                                                                $field_id = $role_usergroup1['user_group_id'];

                                                                $IMaster = new index_master($db);
                                                                $field_details = $IMaster->getIndexField_ById($field_id);
                                                                $field_name = $field_details[0]['field_name'];
                                                                $im_value_details = $IMaster->getMasterField_name($im_id, $im_rid, 'im_field_' . $field_id);
                                                                $field_value = $im_value_details[0]['im_field_' . $field_id];

                                                                $secondary_usergroup_info1 = $User->getUserGroup_byname($field_value);
                                                                $secondary_usergroup1 = $secondary_usergroup_info1[0]['name'];
                                                                $secondary_usergroup_id1 = $secondary_usergroup_info1[0]['id'];

                                                                $available_secondary_users1 = $Workflow->getUsers_UserGroupHierarchy($secondary_usergroup_id1);
                                                                //$unavailable_secondary_users1 = $Workflow->getDM_UnavailableUser_ByRole($pid, $secondary_usergroup_id1);
                                                            }
                                                        }
                                                        ?>
                                                        <tr>
                                                            <td>
                                                                <h6>
                                                                    <?php
                                                                    if ($role_master_info[0]['user_type'] == 2) {
                                                                        echo "Role Master -> Users";
                                                                    } else {
                                                                        echo "Primary";
                                                                    }
                                                                    ?>
                                                                </h6>
                                                            </td>
                                                            <td>
                                                                <?php
                                                                if ($role_master_info[0]['user_type'] == 1) {
                                                                    echo $primary_usergroup1;
                                                                    if (isset($primary_delegate) && $primary_delegate == 1) {
                                                                        echo $a_status . '<span class="label label-important">Delegate</span>';
                                                                    }
                                                                } else if ($role_master_info[0]['user_type'] == 2) {
                                                                    echo $role_master_info[0]['role_master'];
                                                                }
                                                                ?>
                                                            </td>
                                                            <td>                      

                                                                <button type="button" class="btn_users_list btn btn-round-min btn btn-warning " itemtype="<?php echo $role_master_info[0]['user_type']; ?>" itemref="<?php if ($role_master_info[0]['user_type'] == 1) {
                                                    echo $primary_usergroup_id1;
                                                } else if ($role_master_info[0]['user_type'] == 2) {
                                                    echo $step_role_id;
                                                } ?>"><span><i class="icon-group"></i></span></button>
                                                            </td>
                                                        </tr>
                                                        <?php
                                                        if ($role_master_info[0]['user_type'] == 1) {
                                                            ?>
                                                            <tr>
                                                                <td>

                                                                    <h6>Secondary</h6>
                                                                </td>
                                                                <td>
                                                                    <?php echo $secondary_usergroup1; ?>
                                                                    <?php
                                                                    if (!empty($secondary_usergroup_id1) && isset($secondary_delegate) && $secondary_delegate == 1) {
                                                                        echo '<span class="label label-important">Delegate</span>';
                                                                    }
                                                                    ?>
                                                                </td>
                                                                <td>
                                                                    <button type="button" class="btn_users_list btn btn-round-min btn btn-warning " itemref="<?php echo $secondary_usergroup_id1; ?>"><span><i class="icon-group"></i></span></button>
                                                                </td>
                                                            </tr>
                                                            <?php
                                                        }
                                                        ?>
                                                        <tr>
                                                            <td>                            
                                                                <h6>Work-flow Manager</h6>
                                                            </td>
                                                            <td>
                <?php echo $wmanager_name; ?>
                                                            </td>
                                                            <td>

                                                            </td>
                                                        </tr>

                                                        <?php
                                                        $wim_rrole_users_unique = array();
                                                        $wim_rrole_status = array(10, 7, 16, 18, 0);
                                                        $wim_rrole_status_users = $WBuilder->get_workflow_im_Aroles_ByStatus($im_id, $im_rid, $bvid, $wim_details[0]['a_status']);
//print_r($wim_rrole_status_users);
                                                        if (!empty($wim_rrole_status_users)) {
                                                            foreach ($wim_rrole_status_users as $wim_rrole_status_user) {
                                                                if (!in_array($wim_rrole_status_user['user_id'], $wim_rrole_users_unique)) {
                                                                    array_push($wim_rrole_users_unique, $wim_rrole_status_user['user_id']);



                                                                    $user_info = $User->getUsers_ById($wim_rrole_status_user['user_id']);
                                                                    $user_group_info = $User->getUserGroup_byId($user_info[0]['role']);
                                                                    if ($a_step_details[0]['a_status'] == 10) {
                                                                        $c_r_status = 'Approved to user';
                                                                    } else if ($a_step_details[0]['a_status'] == 7) {
                                                                        $c_r_status = 'Referred';
                                                                    } else if ($a_step_details[0]['a_status'] == 16) {
                                                                        $c_r_status = 'Delegate';
                                                                    } else if ($a_step_details[0]['a_status'] == 18) {
                                                                        $c_r_status = 'Assigned to user';
                                                                    } else if ($a_step_details[0]['a_status'] == 0 && $c_already_processed_user == 1) {
                                                                        $c_r_status = 'Assigned to already processed user';
                                                                    } else if ($a_step_details[0]['a_status'] == 0 && empty($c_already_processed_user)) {
                                                                        $c_r_status = 'Responsible user';
                                                                    }
                                                                    if (in_array($a_step_details[0]['a_status'], $wim_rrole_status)) {
                                                                        ?>
                                                                        <tr>
                                                                            <td>                            
                                                                                <h5 class="text-error"> <?php echo $c_r_status; ?>&nbsp;&nbsp;&nbsp;&nbsp;<i class="icon-hand-right"></i></h5>
                                                                            </td>
                                                                            <td>
                                <?php echo $user_info[0]['fname'] . ' ' . $user_info[0]['mname'] . ' ' . $user_info[0]['lname'] . '(' . $user_info[0]['email'] . ')'; ?>
                                                                            </td>
                                                                            <td>
                                <?php echo '<span class="label label-info">' . $user_group_info[0]['name'] . '</span>'; ?>
                                                                            </td>
                                                                        </tr>
                                                                        <?php
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        ?>                                                       



                                                    </tbody>
                                                </table>
                                                <?php
                                                if ($bvalue_details[0]['role_master_id'] == -1) {
                                                    ?>
                                                    <div class="row-fluid">
                                                        <div class="span12">
                                                            <h3 class=" page-header"> Rules</h3>
                                                        </div>
                                                    </div>
                                                    <div class="row-fluid">
                                                        <div class="span12">
                                                            <table class="table table-bordered table-responsive">
                                                                <thead>
                                                                    <tr>
                                                                        <th>
                                                                            Rule
                                                                        </th>
                                                                        <th class="center">
                                                                            Formula's
                                                                        </th>
                                                                    </tr>
                                                                </thead>
                                                                <tbody>
                                                                    <tr>
                                                                        <td>                            
                                                                            <h6> <?php echo $rule_info[0]['rule_name']; ?></h6>
                                                                        </td>
                                                                        <td class="center">

                                                                            <span id="<?php echo $rule_info[0]['id']; ?>" class="badge badge-success class_popup_ruleinfo"><?php echo $no_formulas; ?></span>
                                                                        </td>

                                                                    </tr>
                                                                </tbody>
                                                            </table>
                                                        </div>
                                                    </div>
                                                    <?php
                                                }
                                                if ($bvalue_details[0]['role_master_id'] == -2) {
                                                    ?>
                                                    <div class="row-fluid">
                                                        <div class="span12">
                                                            <h3 class=" page-header"> Rules</h3>
                                                        </div>
                                                    </div>
                                                    <div class="row-fluid">
                                                        <div class="span12">
                                                            <table class="table table-bordered table-responsive">
                                                                <thead>
                                                                    <tr>
                                                                        <th>
                                                                            Advanced Rule
                                                                        </th>
                                                                        <th class="center">
                                                                            Formula's
                                                                        </th>
                                                                    </tr>
                                                                </thead>
                                                                <tbody>
                                                                    <tr>
                                                                        <td>                            
                                                                            <h6> <?php echo $rule_info[0]['rule_name']; ?></h6>
                                                                        </td>
                                                                        <td class="center">

                                                                            <span id="a_<?php echo $rule_info[0]['id']; ?>" class="badge badge-success class_popup_ruleinfo"><?php echo $no_formulas; ?></span>
                                                                        </td>

                                                                    </tr>
                                                                </tbody>
                                                            </table>
                                                        </div>
                                                    </div>
                                                    <?php
                                                }
                                                ?>                                                        
                                            </div>


                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'comments-post') {
                                                echo 'active';
                                            }
                                            ?>" id="comments-post" style="margin: 10px 5px 10px 5px;">    
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span>  Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">




                                                    </div>
                                                </div>

                                                <div class="tab-content" style="height: auto;">
                                                    <div class="tab-pane active" id="div_chat_comments_list"  style="max-height:150px; overflow: scroll;">



                                                    </div>                              


                                                </div>
                                                <?php
                                                if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                    ?>      
                                                    <div class="row-fluid">
                                                        <div class="span12">
                                                            <form class="form-horizontal left-align" id="form_chat" method="POST" action="#">
                                                                <div class="chat-input span12 ">
                                                                    <textarea class="chat-inputbox span12" rows="5" cols="80" style="width: 80%" name="chat_comment" rows="2"></textarea>
                                                                    <button class="btn btn-primary chat_send_btn" type="button"><i class="icon-ok"></i> Send</button>
                                                                </div>
                                                            </form>
                                                        </div>
                                                    </div>
                                                    <?php
                                                }
                                                ?>


                                            </div>

                                            <!-- ======================== Start Query Section ===== -->


                                            <div class="tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'query-section-post') {
                                                echo 'active';
                                            }
                                            ?>" id="query-section-post" style="margin: 10px 5px 10px 5px;">    
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span>  Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">




                                                    </div>
                                                </div>

                                                <hr style="margin: 0px 0px 10px 0px;">
                                                <?php
                                                if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                    ?>      
                                                    <div class="row-fluid">
                                                         <div class="span2">
                                                            <a href="#" id="raise_query" name = "raise_query" role="button" class="btn raise_query btn btn-info" style="height: 22px !important; margin-left: 20px;">Send Query to ...</a>
                                                         </div>
                                                        <div class="span6">
                                                             
                                                            <form class="form-horizontal left-align" id="form_query_comment" method="POST" action="#">
                                                                <div class="chat-input span12 " style="margin-top: 0px;">
                                                                    <label style="font-weight:bold;">Query Text</label>
                                                                    <textarea class=" span12" rows="5" cols="80" style="width: 80%" name="query_comment" id = "query_comment" rows="2"></textarea>
                                                                   <button class="btn btn-primary query_send_btn" type="button" style="    margin-left: 38px;"><i class="icon-ok"></i> Send</button> 
                                                                </div>
                                                            </form>
                                                        </div>
                                                    </div>
                                                  
                                                    <?php
                                                }
                                                ?>
                                                <hr style="margin: 8px;">
                                                <div class="row-fluid">
                                                <div class="span12">
                                                <div class="tab-content" style="height: auto;">
                                                    <div class="tab-pane active" id="div_chat_query_list">


                                                    </div>                              

                                                </div>
                                                </div>

                                            </div>

                                            </div>



                                            <!-- ============================ End Query Section ============ -->



                                             <!-- ============================= Start Workflow Linking ================================ -->


                                            <div class="tab-pane" id="WorkFlow-Linking" style="margin: 10px 5px 10px 5px;">    
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Linking  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                $block_edit_status = array(1, 4, 5, 11, 15);
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                $builders_wf_role = $Workflow->get_WBuilder_ByRole_UserGroup($_SESSION[SESSION_VAR_NAME]['empdash']['emp_role'], $_SESSION[SESSION_VAR_NAME]['role'], $_SESSION[SESSION_VAR_NAME]['user_id'], $pid);
                                                                $builders_wf_rule = $Workflow->get_WBuilder_ByRule_UserGroup($_SESSION[SESSION_VAR_NAME]['empdash']['emp_role'], $_SESSION[SESSION_VAR_NAME]['role'], $_SESSION[SESSION_VAR_NAME]['user_id'], $pid);
                                                                $builders_wf_user = $Workflow->get_WBuilder_ByRule_User($_SESSION[SESSION_VAR_NAME]['user_id'], $pid);
                                                                $builders_wf_user_id = $Workflow->get_WBuilder_ByRole_UserId($_SESSION[SESSION_VAR_NAME]['empdash']['emp_role'], $_SESSION[SESSION_VAR_NAME]['role'], $_SESSION[SESSION_VAR_NAME]['user_id'], $pid, $_SESSION[SESSION_VAR_NAME]['dept_id']);

                                                                $builders_wf_processed_user_id = $Workflow->get_WF_Processed_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $pid);

                                                              
                                                                $builders_list1 = array_merge($builders_wf_role, $builders_wf_rule);
                                                                $builders_list2 = array_merge($builders_list1, $builders_wf_user);
                                                                $builders_list3 = array_merge($builders_list2, $builders_wf_processed_user_id);

                                                                $builders_list = array_merge($builders_list3, $builders_wf_user_id);

                                                                $builders_list_arr = array_unique(array_column($builders_list, 'id'));
                                                                $builders_list_arr = array_values($builders_list_arr);
                                                                
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    
                                                </div>

                                               <div class="row-fluid">
                                                    <div class="span12">
                                                        <script type="text/javascript">
                                                            $(document).ready(function () {
                                                                
                                                             $('#workflow_builders_link').on('change', function () {
                                                                    var value = $("#workflow_builders_link").val();
                                                                    var sel_workflow = $(this).prop("value");
                                                                    var url = '<?php echo $url_app?>/index.php?rq=<?php echo encrypt_url("deal_room/dealroom_workspace.php", APP_ENCRYPTION_SALT); ?>&mn=<?php echo encrypt_url("deal_room/dealroom_workspace.php", APP_ENCRYPTION_SALT); ?>&itag=<?php echo encrypt_url("iworkspace", APP_ENCRYPTION_SALT); ?>&id=<?php echo encrypt_url($pid, APP_ENCRYPTION_SALT); ?>&bid=<?php echo encrypt_url($bid, APP_ENCRYPTION_SALT); ?>&imid=<?php echo encrypt_url($im_id, APP_ENCRYPTION_SALT); ?>&imvid=<?php echo encrypt_url($im_rid, APP_ENCRYPTION_SALT); ?>&filter=1&workflow_builders_link=1&sel_workflow=' + sel_workflow;
                                                                        window.open(url, '_blank');
                                                                });
                                                            });
                                                        </script>
                                                        <?php 
                                                        $block_edit_status = array(1, 4, 5, 11, 15);
                                                        $get_first = $WBuilder->get_WBuilderValue_BId($bid);
                                                        if( !in_array($latest_status_details[0]['status'], $block_edit_status) && ($get_first[0]['id'] == $bvid)){ ?>
                                                             <select id="workflow_builders_link" name="workflow_builders_link" data-placeholder="Select workflow" class="chzn-select-deselect span8"  style="width:400%;" tabindex="2">
                                                                <option  Value=""></option>
                                                                    <?php

                                                                    for ($i = 0; $i < count($builders_list_arr); $i++) {
                                                                        if (!empty($builders_list_arr[$i])) {
                                                                            $builder_info = $WBuilder->get_WBuilder_Id($builders_list_arr[$i]);
                                                                            ?>
                                                                            <option  Value="<?php echo $builders_list_arr[$i]; ?>">
                                                                                <?php echo $builder_info[0]['workflow_title']; ?>
                                                                            </option>
                                                                            <?php
                                                                        }
                                                                    }
                                                                    ?>
                                                            </select>
                                                        <?php } ?>
                                                    <div class="content-box " id="div_workflow_linking_list" style="margin: 20px 20px 20px 20px;"></div>
                                                   
                                                    </div>
                                                </div>
                                                   
                                            </div>


            <!-- ============================== End Workflow Linking ================================== -->



                                            <div class="hide tab-pane <?php
                                            if (!empty($_REQUEST['a_tab_main']) && $_REQUEST['a_tab_main'] == 'notify') {
                                                echo 'active';
                                            }
                                            ?>" id="notify">
                                                <div class="row-fluid">
                                                    <div class="span6">
                                                        <div class="row-fluid">
                                                            <div class="span6">
                                                                <h4 class="pull-left">Workflow Status  </h4>
                                                            </div>

                                                            <div class="span2">
                                                                <?php
                                                                //echo $step_access;
                                                                if (!in_array($latest_status_details[0]['status'], $block_edit_status)) {
                                                                    if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                        if ($parallel_step_running == 0) {
                                                                            //$already_user_processed = $Workflow->get_WIMStatus_BId_UID($_SESSION[SESSION_VAR_NAME]['user_id'], $_SESSION[SESSION_VAR_NAME]['role'], $bid, $bvid, $im_rid);
                                                                            //if (count($already_user_processed) <= 0) {
                                                                            if (count($lateral_flow_steps_inprocess) <= 0) {
                                                                                ?>
                                                                                <button class="buttonblink" style="  font-size: 11px;" href="#modal_status_dashboard1"  data-toggle="modal" type="button" class="  "> <span style="    margin-right: 8px;"> <img src="../resources/images/Sign-off.png" style="height: 14px; margin-top: -4px; margin-left: 4px;"></span> Sign-off</button>
                                                                                <?php
                                                                            }
                                                                            //}
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </div>

                                                        </div>

                                                    </div>

                                                    <div class="span6">





                                                    </div>
                                                </div>
                                                <div style="margin: 10px 5px 10px 5px;">
                                                    <div class="row-fluid">
                                                        <div class="span12">
                                                            <div class="widget-header-block">
                                                                <h5 class=" pull-left"> Mails</h5>
                                                                <?php
                                                                if ($step_access == 1 && in_array($bvid, $a_step_arr)) {
                                                                    ?>
                                                                    <a class="pull-right a_new_mails" title="new mail" style="cursor:pointer;"><span class="badge badge-success" style="height:20px;"><i class="fa fa-envelope-open-o" aria-hidden="true"></i></span></a>
                                                                    <?php
                                                                }
                                                                ?>
                                                            </div>
                                                        </div>
                                                    </div>

                                                    <div class="content-box " id="div_mails">


                                                    </div>
                                                    <!--                    <a href="#" class="pull-right" style="margin-bottom: 20px;">Go to top</a>-->
                                                </div>
                                            </div>




                                        </div>
                                    </div>




                                </div>

                            </div>
							
							

                            <div class="modal2 fade" id="modal_comments_post" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                <form class="modal-form" id="comm_form_chat" method="post" action="#" style="width: 13%; margin-left: 40%;">
                                    <div class="modal-dialog2" style="width: 190%;">


                                        <div class="modal-content2">
                                            <div class="modal-header2">
                                                <button type="button" class="close img_close_modal_update_comments_form" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title">Comments</h4>
                                            </div>
                                            <div id="div_comments_dashboard" class="modal-body2">
                                                <div id="div_chat_comments_result" style="max-height:150px; overflow: scroll;"></div>
                                                <input type="hidden" id="commdoc_id" name="commdoc_id">
                                                <div class="chat-input">
                                                    <textarea class="chat-inputbox span12" name="chat_comment_text" rows="2"></textarea>
                                                    <button class="btn btn-primary chat_comm_send_btn" type="button"><i class="icon-ok"></i> Send</button>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </form>
                            </div>




                            <style>
                                body .modal-large {
                                    /* new custom width */
                                    width: 800px;
                                    /* must be half of the width, minus scrollbar on the left (30px) */
                                    margin-left: -375px;
                                }
                                .modal-dialog2  {margin: 2px auto; width:100%;}

                                .checkbox.inline{

                                        margin-left: 10px;
                                }
                            </style>

                            <div class="modal2 fade " id="modal_status_dashboard" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">


                                <form class="modal-form" id="update_status_form" method="post" action="#">
                                    <div class="modal-dialog2" style="margin: 2px auto; width: 74%;">


                                        <div class="modal-content2">
                                            <div class="modal-header2" style="padding: 7px 4px 0px 4px;">
                                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title" style="margin: 4px 0;"> Update Work Flow - Status</h4>
                                            </div>
                                            <div id="div_status_dashboard" class="modal-body2">
                                                <div id="div_result"></div>

                                                <input type="hidden" id="m_pid" name="m_pid" value="<?php echo $pid; ?>">
                                                <input type="hidden" id="m_bid" name="m_bid" value="<?php echo $bid; ?>">
                                                <input type="hidden" id="m_bvid" name="m_bvid" value="<?php echo $bvid; ?>">
                                                <input type="hidden" id="m_wim_id" name="m_wim_id" value="<?php echo $wim_id; ?>">
                                                <input type="hidden" id="im_rid" name="im_rid" value="<?php echo $im_rid; ?>">



                                                <div class="control-group">
                                                    <div class="row">
                                                        <div class="span1">
                                                            <label class="control-label" style="font-weight: bold;">Status :</label>
                                                        </div>
                                                        <div class="span8" style="margin-left: 0px; margin-top: -5px;">
                                                            <div class="controls">
                                                                <?php
                                                                $get_first = $WBuilder->get_WBuilderValue_BId($bid);
                                                                //echo count($lateral_flow_steps_inprocess);
                                                                if (empty($c_user_referred) && count($lateral_flow_steps_inprocess) <= 0) {
                                                                    if ($bvalue_details[0]['allow_approve'] == '1') {
                                                                        if($get_first[0]['id'] == $bvid){
                                                                        ?>
                                                                        <label class="checkbox inline">
                                                                            <input name="status" value="1" type="radio"   class="check_statuschk">
                                                                            Initiate workflow </label>
                                                                        <?php }
                                                                        else{ ?>
                                                                        <label class="checkbox inline">
                                                                            <input name="status" value="1" type="radio"   class="check_statuschk">
                                                                            Approve </label>
                                                                        <?php
                                                                        }
                                                                    }

                                                                    if ($allow_flexiflow == 1) {
                                                                        if ($bvalue_details[0]['flexiflow'] == '1') {
                                                                            ?>
                                                                            <label class="checkbox inline">
                                                                                <input name="status" value="17" type="radio"  class="check_statuschk">
                                                                                Flexi-Flow </label>
                                                                            <?php
                                                                        }
                                                                    }
                                                                    ?>

                                                                    <?php
                                                                    if ($c_bvid_position + 1 != count($bvid_all)) {
                                                                        if ($bvalue_details[0]['allow_af'] == '1') {
                                                                            ?>
                                                                            <label class="checkbox inline">
                                                                                <input name="status" value="11" type="radio" class="check_statuschk">
                                                                                Approve with forward</label>
                                                                            <?php
                                                                        }
                                                                    }

                                                                    if ($c_bvid_position != 0) {
                                                                        if ($bvalue_details[0]['allow_rf'] == '1') {
                                                                            ?>
                                                                            <label class="checkbox inline">
                                                                                <input name="status"  value="12" type="radio" class="check_statuschk">
                                                                                Partially Approve</label>
                                                                            <?php
                                                                        }
                                                                        if ($bvalue_details[0]['allow_rb'] == '1') {
                                                                            ?>
                                                                            <label class="checkbox inline">
                                                                                <input type="hidden" name="rejectb_opt" id="rejectb_opt" value="<?php echo $bvalue_details[0]['rejectb_opt']; ?>">
                                                                                <input name="status"  value="13" type="radio" class="check_statuschk">
                                                                                Reject with backward </label>
                                                                            <?php
                                                                        }
                                                                        if ($bvalue_details[0]['allow_reject'] == '1') {
                                                                            ?>
                                                                            <label class="checkbox inline">
                                                                                <input type="hidden" name="reject_opt" id="reject_opt" value="<?php echo $bvalue_details[0]['reject_opt']; ?>">
                                                                                <input name="status"  value="3" type="radio" class="check_statuschk">
                                                                                Reject </label>
                                                                            <?php
                                                                        }
                                                                    }
                                                                    ?>
                                                                    <!--  <br>
                                                                     <hr> -->

                                                                    <?php
                                                                    if ($bvalue_details[0]['end_approved'] == '1') {
                                                                        ?>
                                                                        <label class="checkbox inline">
                                                                            <input name="status"  value="4" type="radio" class="check_statuschk">
                                                                            End as approval </label>
                                                                        <?php
                                                                    }
                                                                    if ($bvalue_details[0]['end_rejected'] == '1') {
                                                                        ?>

                                                                        <label class="checkbox inline">
                                                                            <input name="status"  value="5" type="radio" class="check_statuschk">
                                                                            End as rejected </label>
                                                                        <?php
                                                                    }
                                                                    if ($bvalue_details[0]['allow_hold'] == '1') {
                                                                        ?>
                                                                        <label class="checkbox inline">
                                                                            <input name="status"  value="6" type="radio" class="check_statuschk">
                                                                            Hold </label>
                                                                        <?php
                                                                    }
                                                                    if ($bvalue_details[0]['referral'] == '1') {
                                                                        ?>
                                                                        <label class="checkbox inline">
                                                                            <input name="status"  value="7" type="radio" class="check_statuschk">
                                                                            Referred (Consult) - Inprocess </label>
                                                                        <?php
                                                                    }

                                                                    if ($bvalue_details[0]['lateralflow'] == '1') {
                                                                        ?>
                                                                        <label class="checkbox inline">
                                                                            <input name="status"  value="20" type="radio" class="check_statuschk">
                                                                            Lateral Flow - Inprocess </label>
                                                                        <?php
                                                                    }

                                                                    if ($bvalue_details[0]['delegate'] == '1') {
                                                                        ?>
                                                                        <label class="checkbox inline">
                                                                            <input name="status"  value="16" type="radio" class="check_statuschk">
                                                                            Delegate </label>
                                                                        <?php
                                                                    }

                                                                    if ($bvalue_details[0]['approve_user'] == '1') {
                                                                        if ($is_last_step == 0) {
                                                                            ?>
                                                                            <label class="checkbox inline">
                                                                                <input name="status"  value="10" type="radio" class="check_statuschk">
                                                                                Approve => User</label>
                                                                            <?php
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                                <?php
                                                                if ($c_user_referred == '1') {
                                                                    ?>
                                                                    <label class="checkbox inline">
                                                                        <input name="status"  value="8" type="radio"  class="check_statuschk">
                                                                        Referred (Consult)- Closed</label>
                                                                    <?php
                                                                }
                                                                ?>
                                                                <!--<label class="checkbox inline">
                                                                    <input name="status"  value="9" type="radio">
                                                                    Force closed</label>-->

                                                            </div>
                                                        </div>

                                                    </div>




                                                </div>

                                                <?php
                                                /* if ($first_step == 0) {
                                                  ?>
                                                  <div id="div_roll_back" class="control-group">
                                                  <label class="control-label">Roll Back</label>
                                                  <div class="controls">
                                                  <select name="roll_back_id" data-placeholder="Choose a step..." class="chzn-select-deselect span6" tabindex="-1">
                                                  <?php
                                                  if (empty($no_step_details)) {
                                                  ?>
                                                  <option value="">Unavailable!</option>
                                                  <?php
                                                  } else {
                                                  ?>
                                                  <option value=""></option>
                                                  <?php
                                                  for ($i = 0; $i < $no_step_details; $i++) {
                                                  if ($workflowstep_details[$i]['id'] == $bvid) {
                                                  break;
                                                  }
                                                  ?>
                                                  <option value="<?php echo $workflowstep_details[$i]['id']; ?>"><?php echo $workflowstep_details[$i]['step_name']; ?></option>
                                                  <?php
                                                  }
                                                  }
                                                  ?>
                                                  </select>

                                                  </div>
                                                  </div>
                                                  <?php
                                                  } */
                                                ?>

                                                <hr style="margin:10px;">
                                                <?php
                                                if ($bvalue_details[0]['flexiflow'] == '1') {
                                                    ?>
                                                    <div id="div_flexi_flow" class="control-group" >
                                                        <label class="control-label">Choose next parallel steps (Flexi-Flow) </label>
                                                        <div class="controls">
                                                            <select name="flexi_flow_bvid[]" data-placeholder="Choose a step..." class="chzn-select-deselect span6" multiple="" tabindex="-1" style="max-width: 300px;">
                                                                <?php
                                                                if (count($next_parallel_steps) <= 0) {
                                                                    ?>
                                                                    <option value="">Unavailable!</option>
                                                                    <?php
                                                                } else {
                                                                    ?>
                                                                    <option value=""></option>
                                                                    <?php
                                                                    for ($i = 0; $i < count($next_parallel_steps); $i++) {
                                                                        $ff_step_info = $WBuilder->get_WBuilderValue_Id($next_parallel_steps[$i]);
                                                                        ?>
                                                                        <option value="<?php echo $ff_step_info[0]['id']; ?>"><?php echo $ff_step_info[0]['step_name']; ?></option>
                                                                        <?php
                                                                    }
                                                                }
                                                                ?>
                                                            </select>

                                                        </div>
                                                    </div>
                                                    <?php
                                                }
                                                ?>
                                                <div id="div_approve_forward" class="control-group" >
                                                    <label class="control-label">Forward to step</label>
                                                    <div class="controls">
                                                        <select name="a_f_bvid" data-placeholder="Choose a step..." class="chzn-select-deselect span6" tabindex="-1" style="max-width: 300px;">
                                                            <?php
                                                            if (count($af_trigger_step_arr) <= 0) {
                                                                ?>
                                                                <option value="">Unavailable!</option>
                                                                <?php
                                                            } else {
                                                                ?>
                                                                <option value=""></option>
                                                                <?php
                                                                for ($i = 0; $i < count($af_trigger_step_arr); $i++) {

                                                                    if (!in_array($af_trigger_step_arr[$i], $ff_step_arr)) {
                                                                        $af_step_info = $WBuilder->get_WBuilderValue_Id($af_trigger_step_arr[$i]);
                                                                        ?>
                                                                        <option value="<?php echo $af_step_info[0]['id']; ?>"><?php echo $af_step_info[0]['step_name']; ?></option>
                                                                        <?php
                                                                    }
                                                                }
                                                            }
                                                            ?>
                                                        </select>

                                                    </div>
                                                </div>


                                                <div id="div_reject_forward" class="control-group" >
                                                    <label class="control-label">Forward to step</label>
                                                    <div class="controls">
                                                        <select name="r_f_bvid" data-placeholder="Choose a step..." class="chzn-select-deselect span6" tabindex="-1" style="max-width: 300px;">
                                                            <?php
                                                            if (count($rf_trigger_step_arr) <= 0) {
                                                                ?>
                                                                <option value="">Unavailable!</option>
                                                                <?php
                                                            } else {
                                                                ?>
                                                                <option value=""></option>
                                                                <?php
                                                                for ($i = 0; $i < count($rf_trigger_step_arr); $i++) {

                                                                    if (!in_array($rf_trigger_step_arr[$i], $ff_step_arr)) {
                                                                        $rf_step_info = $WBuilder->get_WBuilderValue_Id($rf_trigger_step_arr[$i]);
                                                                        ?>
                                                                        <option value="<?php echo $rf_step_info[0]['id']; ?>"><?php echo $rf_step_info[0]['step_name']; ?></option>
                                                                        <?php
                                                                    }
                                                                }
                                                            }
                                                            ?>
                                                        </select>

                                                    </div>
                                                </div>


                                                <div id="div_reject_backward" class="control-group">
                                                    <label class="control-label">Backward to step</label>
                                                    <div class="controls">
                                                        <select id="r_b_bvid" name="r_b_bvid" data-placeholder="Choose a step..." class="chzn-select-deselect span6" tabindex="-1" style="max-width: 300px;">
                                                            <?php
                                                            if (count($rb_trigger_step_arr) <= 0) {
                                                                ?>
                                                                <option value="">Unavailable!</option>
                                                                <?php
                                                            } else {
                                                                if (count($rb_trigger_step_arr) > 1) {
                                                                    ?>
                                                                    <option value=""></option>
                                                                    <?php
                                                                }
                                                                for ($i = 0; $i < count($rb_trigger_step_arr); $i++) {

                                                                    if (!in_array($rb_trigger_step_arr[$i], $ff_step_arr)) {
                                                                        $rb_step_info = $WBuilder->get_WBuilderValue_Id($rb_trigger_step_arr[$i]);
                                                                        ?>
                                                                        <option value="<?php echo $rb_step_info[0]['id']; ?>"><?php echo $rb_step_info[0]['step_name']; ?></option>
                                                                        <?php
                                                                    }
                                                                }
                                                            }
                                                            ?>
                                                        </select>

                                                    </div>
                                                </div>



                                                <div id="div_userlist_rroles" style="display:none;">
                                                    <?php
                                                    $user_group_info = $Workflow->get_Deal_Assigned_UserGroups_Multi($pid, $builder_value_rrole_arr);
                                                    $no_user_group_info = count($user_group_info);
                                                    ?>

                                                    <table class="responsive table table-striped table-bordered" id="ref_userlist_data-table">                          
                                                        <thead>
                                                            <tr>
                                                                <th width="3%" align="center">#</th>
                                                                <th>Username</th>
                                                                <th>First Name</th>
                                                                <th>Middle Name</th>
                                                                <th>Last Name</th>
                                                                <th>E-mail</th> 
                                                                <th>Contact No.1</th>
                                                                <th>Contact No.2</th>
                                                                <th>User Group</th>
                                                            </tr>       
                                                        </thead>
                                                        <tbody>                                                                     
                                                            <?php
                                                            if (!empty($no_user_group_info)) {

                                                                for ($i = 0; $i < $no_user_group_info; $i++) {
                                                                    if (empty($_SESSION[SESSION_VAR_NAME]['empdash']['emp_role'])) {
                                                                        $user_id = $user_group_info[$i]['mem_id'];
                                                                    } else {
                                                                        $user_id = $user_group_info[$i]['mem_id'];
                                                                    }
                                                                    $group_info = $User->getUserGroup_byId($user_group_info[$i]['role']);

                                                                    if ($sel_gid == 1 || $sel_gid == 2) {
                                                                        $user_info = $User->getUser_ById($user_id);
                                                                        $loginmast_info = $User->getLoginMast_ById($user_id);
                                                                    } else {
                                                                        $user_info = $User->getUser_ById($user_id);
                                                                        $loginmast_info = $User->getLoginMast_ById($user_id);
                                                                    }
                                                                    if (!empty($loginmast_info)) {
                                                                        if ($i == 0) {
                                                                            $default_selected = "";
                                                                        } else {
                                                                            $default_selected = "";
                                                                        }
                                                                        ?>        
                                                                        <tr>
                                                                            <td align="center"><input class='refferal_cls' type="checkbox" name="rrole_user_id[]" value="<?php echo $user_info[0]['id']; ?>" <?php echo $default_selected; ?>></td>

                                                                            <td><?php echo $loginmast_info[0]['username']; ?></td>  
                                                                            <td><?php echo $user_info[0]['fname']; ?></td>  
                                                                            <td><?php echo $user_info[0]['mname']; ?></td>  
                                                                            <td><?php echo $user_info[0]['lname']; ?></td>  
                                                                            <td><?php echo $user_info[0]['email']; ?></td>  
                                                                            <td><?php echo $user_info[0]['fone_no']; ?></td>
                                                                            <td><?php echo $user_info[0]['mobile']; ?></td>
                                                                            <td><?php echo $group_info[0]['name']; ?></td>

                                                                        </tr>
                                                                        <?php
                                                                    }
                                                                }
                                                            }
                                                            ?>
                                                        </tbody>
                                                    </table>  
                                                </div>





                                                <div id="div_userlist_lroles" style="display:none;">
                                                    <?php
                                                    $user_group_info = $Workflow->get_Deal_Assigned_UserGroups_Multi($pid, $builder_value_lrole_arr);
                                                    $no_user_group_info = count($user_group_info);
                                                    ?>
                                                    <div class="row-fluid">
                                                        <button type="button" class="btn btn-primary pull-right btn_select_lateral_user" style="margin-bottom: 15px;"> Select</button>
                                                    </div>

                                                    <div class="row-fluid">
                                                        <table class="responsive table table-striped table-bordered" id="lateral_userlist_data-table">                          
                                                            <thead>
                                                                <tr>
                                                                    <th width="3%" align="center">#</th>
                                                                    <th>Username</th>
                                                                    <th>First Name</th>
                                                                    <th>Middle Name</th>
                                                                    <th>Last Name</th>
                                                                    <th>E-mail</th> 
                                                                    <th>Contact No.1</th>
                                                                    <th>Contact No.2</th>
                                                                    <th>User Group</th>
                                                                </tr>       
                                                            </thead>
                                                            <tbody>                                                                     
                                                                <?php
                                                                if (!empty($no_user_group_info)) {

                                                                    for ($i = 0; $i < $no_user_group_info; $i++) {
                                                                        if (empty($_SESSION[SESSION_VAR_NAME]['empdash']['emp_role'])) {
                                                                            $user_id = $user_group_info[$i]['mem_id'];
                                                                        } else {
                                                                            $user_id = $user_group_info[$i]['mem_id'];
                                                                        }
                                                                        $group_info = $User->getUserGroup_byId($user_group_info[$i]['role']);

                                                                        if ($sel_gid == 1 || $sel_gid == 2) {
                                                                            $user_info = $User->getUser_ById($user_id);
                                                                            $loginmast_info = $User->getLoginMast_ById($user_id);
                                                                        } else {
                                                                            $user_info = $User->getUser_ById($user_id);
                                                                            $loginmast_info = $User->getLoginMast_ById($user_id);
                                                                        }
                                                                        if (!empty($loginmast_info)) {
                                                                            if ($i == 0) {
                                                                                $default_selected = "";
                                                                            } else {
                                                                                $default_selected = "";
                                                                            }
                                                                            ?>        
                                                                            <tr>
                                                                                <td align="center"><input type="checkbox" class="lateral_case" name="lrole_user_id_old[]" value="<?php echo $user_group_info[$i]['role'] . '-' . $user_info[0]['id']; ?>" <?php echo $default_selected; ?>></td>

                                                                                <td><?php echo $loginmast_info[0]['username']; ?></td>  
                                                                                <td><?php echo $user_info[0]['fname']; ?></td>  
                                                                                <td><?php echo $user_info[0]['mname']; ?></td>  
                                                                                <td><?php echo $user_info[0]['lname']; ?></td>  
                                                                                <td><?php echo $user_info[0]['email']; ?></td>  
                                                                                <td><?php echo $user_info[0]['fone_no']; ?></td>
                                                                                <td><?php echo $user_info[0]['mobile']; ?></td>
                                                                                <td><?php echo $group_info[0]['name']; ?></td>

                                                                            </tr>
                                                                            <?php
                                                                        }
                                                                    }
                                                                }
                                                                ?>
                                                            </tbody>
                                                        </table> 
                                                    </div>

                                                    <div class="row-fluid">
                                                        <button type="button" class="btn btn-primary pull-right btn_select_lateral_user" style="margin-bottom: 15px;"> Select</button>
                                                    </div>



                                                    <div class="row-fluid "  style="min-height: 200px;">
                                                        <div class="span12">
                                                            <div class="content-widgets gray">
                                                                <div class="widget-head bondi-blue">
                                                                    <h3 style="line-height: 26px; font-size: 15px;">Lateral Flow Users &amp; Sortable</h3>
                                                                </div>
                                                                <div class="widget-container " id="div_lateral_user_sort">
                                                                    <div class="alert">
                                                                        <button type="button" class="close" data-dismiss="alert">&times;</button>
                                                                        <i class="icon-exclamation-sign"></i><strong>Warning!</strong> Kindly select Users for lateral flow process.
                                                                    </div>

                                                                </div>
                                                            </div>
                                                        </div>

                                                    </div>



                                                </div>

                                                <div id="div_userlist_droles" style="display:none;">
                                                    <?php
                                                    $user_group_info = $Workflow->get_Deal_Assigned_UserGroups_Multi($pid, $builder_value_drole_arr);
                                                    $no_user_group_info = count($user_group_info);
                                                    ?>

                                                    <table class="responsive table table-striped table-bordered" id="dele_userlist_data-table">                         
                                                        <thead>
                                                            <tr>
                                                                <th width="3%" align="center">#</th>
                                                                <th>Username</th>
                                                                <th>First Name</th>
                                                                <th>Middle Name</th>
                                                                <th>Last Name</th>
                                                                <th>E-mail</th> 
                                                                <th>Contact No.1</th>
                                                                <th>Contact No.2</th>
                                                                <th>User Group</th>
                                                            </tr>       
                                                        </thead>
                                                        <tbody>                                                                     
                                                            <?php
                                                            if (!empty($no_user_group_info)) {

                                                                for ($i = 0; $i < $no_user_group_info; $i++) {
                                                                    if (empty($_SESSION[SESSION_VAR_NAME]['empdash']['emp_role'])) {
                                                                        $user_id = $user_group_info[$i]['mem_id'];
                                                                    } else {
                                                                        $user_id = $user_group_info[$i]['mem_id'];
                                                                    }
                                                                    $group_info = $User->getUserGroup_byId($user_group_info[$i]['role']);

                                                                    if ($sel_gid == 1 || $sel_gid == 2) {
                                                                        $user_info = $User->getUser_ById($user_id);
                                                                        $loginmast_info = $User->getLoginMast_ById($user_id);
                                                                    } else {
                                                                        $user_info = $User->getUser_ById($user_id);
                                                                        $loginmast_info = $User->getLoginMast_ById($user_id);
                                                                    }
                                                                    if (!empty($loginmast_info)) {
                                                                        if ($i == 0) {
                                                                            $default_selected = "";
                                                                        } else {
                                                                            $default_selected = "";
                                                                        }
                                                                        ?>        
                                                                        <tr>
                                                                            <td align="center"><input type="checkbox" name="drole_user_id[]" value="<?php echo $user_info[0]['id']; ?>" <?php echo $default_selected; ?>></td>

                                                                            <td><?php echo $loginmast_info[0]['username']; ?></td>  
                                                                            <td><?php echo $user_info[0]['fname']; ?></td>  
                                                                            <td><?php echo $user_info[0]['mname']; ?></td>  
                                                                            <td><?php echo $user_info[0]['lname']; ?></td>  
                                                                            <td><?php echo $user_info[0]['email']; ?></td>  
                                                                            <td><?php echo $user_info[0]['fone_no']; ?></td>
                                                                            <td><?php echo $user_info[0]['mobile']; ?></td>
                                                                            <td><?php echo $group_info[0]['name']; ?></td>

                                                                        </tr>
                                                                        <?php
                                                                    }
                                                                }
                                                            }
                                                            ?>
                                                        </tbody>
                                                    </table>  
                                                </div>

                                                <div id="div_nextstep_userlist_rroles" style="display:none;">
                                                    <?php
                                                    /* $next_step_details = $WBuilder->get_WBuilderValue_Next_BId($bid, $bvid);
                                                      if ($next_step_details[0]['step_type'] == '2') {
                                                      $next_process_steps = $WBuilder->get_WBuilderValue_Next_BId_Sequential($bid, $bvid);
                                                      } else if ($next_step_details[0]['step_type'] == '1') {
                                                      //$next_process_step = $WBuilder->get_WBuilderValue_Next_BId($bid, $bvid);
                                                      $next_process_steps = array($next_step_details[0]['id']);
                                                      }

                                                      $user_group_info = $Workflow->get_Deal_Assigned_UserGroups_Multi($pid, $builder_value_rrole_arr);
                                                      $no_user_group_info = count($user_group_info); */
                                                    ?>

                                                    <div class="control-group">
                                                        <label class="control-label">Choose step</label>
                                                        <div class="controls">
                                                            <select name="ap_user_bvid" id="ap_user_bvid" data-placeholder="Choose a step..." class="chzn-select-deselect span6" tabindex="-1" style="max-width: 300px;">
                                                                <?php
                                                                $next_steps = $WBuilder->get_WBuilderValue_Next_BId_All_FF($bid, $bvid, $im_rid);

                                                                $is_user_base = $WBuilder->get_WBuilder_Id($bid);
                                                                if ($is_user_base[0]['workflow_type'] == 2) {

                                                                    foreach ($next_steps as $key => $value) {
                                                                        if ($value['role_master_id'] == -2) {
                                                                            //$is_rule = $WRule->get_rule_advanced_formulas_byRuleID($value['rule_id']);
                                                                            //$formula_id = $WRule->get_advanced_rule_formula_ById($is_rule[0]['formula_id']);
                                                                            //$value['role_master_id'] = $formula_id[0]['workflow_role'];

                                                                            $a_rule_id = $value['rule_id'];
                                                                            //$value['id'];
                                                                            $a_rule_info = $WRule->get_advanced_rule_byID($a_rule_id);

                                                                            $a_formula_details = $WRule->get_rule_advanced_formulas_byRuleID($a_rule_id);


                                                                            $no_a_formulas = count($a_formula_details);



                                                                            foreach ($a_formula_details AS $key => $a_formula_info) {

                                                                                $a_formula_cond_arr = array();
                                                                                $a_formula_conj_arr = array();



                                                                                $rule_formula_details = $WRule->get_advanced_rule_formula_ById($a_formula_info['formula_id']);
                                                                                //print_r($rule_formula_details);

                                                                                $assign_into = $rule_formula_details[0]['assign_into'];
                                                                                $workflow_role = $rule_formula_details[0]['workflow_role'];
                                                                                $round_robin = $rule_formula_details[0]['round_robin'];
                                                                                $formula_usergroup_id = $rule_formula_details[0]['usergroup_id'];
                                                                                $formula_user_id = $rule_formula_details[0]['user_id'];

                                                                                $a_formula_conditions = $WRule->get_advanced_rule_formula_cond_ByFormulaId($a_formula_info['formula_id']);


                                                                                foreach ($a_formula_conditions AS $cond_key => $a_formula_condition) {

                                                                                    $logical_conjunction = $a_formula_condition['logical_conjunction'];

                                                                                    $a_rule_conditions = $WRule->get_advanced_rule_condition_ById($a_formula_condition['condition_id']);

                                                                                    $condition_name = $a_rule_conditions[0]['condition_name'];
                                                                                    $index_id = $a_rule_conditions[0]['index_id'];
                                                                                    $index_field_id = $a_rule_conditions[0]['index_field_id'];
                                                                                    $logical_operator = $a_rule_conditions[0]['logical_operator'];
                                                                                    $input_value = $a_rule_conditions[0]['input_value'];


                                                                                    if (!empty($index_id) && $im_id == $index_id) {

                                                                                        //print_r($query_fields);
                                                                                        //$im_field_id = $rule_info[0]['index_master_field'];
                                                                                        $im_field_key = array_search("im_field_" . $index_field_id, $query_fields);

                                                                                        $index_master_field_value = $IMASTER->getMasterValue_ByID($im_id, $im_rid);


                                                                                        if (is_numeric($im_field_key)) {

                                                                                            $field_details = $IMASTER->getIndexField_ById($index_field_id);
                                                                                            $field_type = $field_details[0]['field_type'];
                                                                                            $auto_inc_name = $field_details[0]['auto_inc_name'];

                                                                                            if ($field_type == 'Select Menu') {

                                                                                                $im_field_value = $query_values[$im_field_key];

                                                                                                //$fdetails = $IMASTER->getFieldExtend_ById($im_field_value);
                                                                                                //$field_value = $fdetails[0]['field_value'];
                                                                                                //$im_field_value = $field_value;
                                                                                            } else {
                                                                                                if (!empty($auto_inc_name)) {
                                                                                                    $im_field_value_ex = explode($auto_inc_name . '_', $query_values[$im_field_key]);
                                                                                                    $im_field_value = $im_field_value_ex[1];
                                                                                                } else {
                                                                                                    $im_field_value = $query_values[$im_field_key];
                                                                                                }
                                                                                            }


                                                                                            if (!empty($im_field_value)) {
                                                                                                $cond = if_cond($im_field_value, $logical_operator, $input_value);

                                                                                                array_push($a_formula_cond_arr, $cond);
                                                                                                array_push($a_formula_conj_arr, $logical_conjunction);

                                                                                                /* for ($x = 0; $x < $no_formulas; $x++) {

                                                                                                  $varA1 = $im_field_value;
                                                                                                  $varB1 = $formula_details[$x]['input_value'];
                                                                                                  $op1 = $formula_details[$x]['logical_operator'];

                                                                                                  $varA2 = $im_field_value;
                                                                                                  $varB2 = $formula_details[$x]['input_value2'];
                                                                                                  $op2 = $formula_details[$x]['logical_operator2'];

                                                                                                  $cond1 = if_cond($varA1, $op1, $varB1);
                                                                                                  $cond2 = if_cond($varA2, $op2, $varB2);
                                                                                                  if ($cond1 == 'true' && $cond2 == 'true') {
                                                                                                  $role_master_id = $formula_details[$x]['role_master_id'];
                                                                                                  //echo if_cond($varA1, $op1, $varB1)."#".$varA1 . "#" . $op1 . "#" . $varB1 . "#" . $formula_details[$x]['role_master_id'];
                                                                                                  //die();
                                                                                                  break;
                                                                                                  } else {
                                                                                                  $role_master_id = '';
                                                                                                  }
                                                                                                  } */
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }

                                                                                $a_formula_if_arr = array();
                                                                                foreach ($a_formula_cond_arr AS $key => $value1) {
                                                                                    array_push($a_formula_if_arr, $value1);
                                                                                    array_push($a_formula_if_arr, $a_formula_conj_arr[$key]);
                                                                                }
                                                                                $a_formula_if_arr_f = array_pop($a_formula_if_arr);
                                                                                $a_formula_implode = implode(' ', $a_formula_if_arr);
                                                                                //echo "if(" . $v . "){ echo 'true';}else{ echo 'false';}";
                                                                                //echo "if(" . $a_formula_implode . "){ return 'true';}else{ return 'false';}";

                                                                                if (count($a_formula_if_arr) > 0) {
                                                                                    $a_formula_result = eval("if(" . $a_formula_implode . "){ return 'true';}else{ return 'false';}");

                                                                                    if ($a_formula_result == 'true') {

                                                                                        if ($assign_into == 1) {
                                                                                            $role_master_id1 = $workflow_role;
                                                                                            $rule_usergroup_id1 = '';
                                                                                            $rule_user_id1 = '';
                                                                                        } else {
                                                                                            $role_master_id1 = '';
                                                                                            $rule_usergroup_id1 = $formula_usergroup_id;
                                                                                            $rule_user_id1 = $formula_user_id;
                                                                                            $role_master_id1 = $formula_user_id;
                                                                                        }
                                                                                        //echo 'role_master_id-'.$role_master_id1.'-';
                                                                                        //echo 'rule_usergroup_id-'.$rule_usergroup_id1.'-';
                                                                                        // echo 'rule_user_id-'.$rule_user_id1.'-';
                                                                                        //echo 'value'.$value['id'];
                                                                                        $value['role_master_id'] = $role_master_id1;
                                                                                        $next_steps = $WBuilder->get_WBuilderValue_Next_BId_All_FF_user($bid, $value['id'], $im_rid);

                                                                                        break;
                                                                                    }
                                                                                } else {
                                                                                    $role_master_id1 = '';
                                                                                    $rule_usergroup_id1 = '';
                                                                                    $rule_user_id1 = '';
                                                                                }
                                                                            }
                                                                            if (!empty($role_master_id1) || !empty($rule_usergroup_id1) || !empty($role_master_id1)) {
                                                                                break;
                                                                            }
                                                                        } else if ($value['user_department'] == 1) {
                                                                            $is_step_access = $WRole->getWorkflowUserDepartment($value['role_master_id'], '', $dept_id);
                                                                            if (!empty($is_step_access)) {
                                                                                $next_steps = $WBuilder->get_WBuilderValue_Next_BId_All_FF_user($bid, $value['id'], $im_rid);
                                                                                break;
                                                                            } else {
                                                                                continue;
                                                                            }
                                                                        } else {
                                                                            echo"All";
                                                                            //echo 'role_master_id'.$value['role_master_id'];
                                                                            //echo 'id'.$value['id'];
                                                                            //echo'bid'. $bid;
                                                                            //echo'im_rid'. $im_rid;
                                                                            if (!empty($value['role_master_id'])) {
                                                                                $next_steps = $WBuilder->get_WBuilderValue_Next_BId_All_FF_user($bid, $value['id'], $im_rid);
                                                                                break;
                                                                            } else {
                                                                                continue;
                                                                            }
                                                                        }
                                                                    }
                                                                }


                                                                if (count($next_steps) <= 0) {
                                                                    ?>
                                                                    <option value="">Unavailable!</option>
                                                                    <?php
                                                                } else {
                                                                    ?>
                                                                    <option value=""></option>
                                                                    <?php
                                                                    for ($i = 0; $i < count($next_steps); $i++) {
                                                                        ?>
                                                                        <option value="<?php echo $next_steps[$i]['id']; ?>"><?php echo $next_steps[$i]['step_name']; ?></option>
                                                                        <?php
                                                                    }
                                                                }
                                                                ?>
                                                            </select>

                                                        </div>
                                                    </div>


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <!--<table class="responsive table table-striped table-bordered" id="next_step_user_settings_data-table">                           
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <thead>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <tr>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <th width="3%" align="center">#</th>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <th>Step Name</th>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <th></th>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <th></th>

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                </tr>       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </thead>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <tbody> 
                                                    <?php
                                                    /* for ($i = 0; $i < count($next_process_steps); $i++) {
                                                      $c_step_details = $WBuilder->get_WBuilderValue_Id($next_process_steps[$i]);
                                                      $role_master_id = $c_step_details[0]['role_master_id'];
                                                      if (!in_array($next_process_steps[$i], $a_step_arr)) {
                                                      ?>
                                                      <tr>
                                                      <td><?php echo $i + 1; ?></td>
                                                      <td><?php echo $c_step_details[0]['step_name']; ?></td>
                                                      <td><input type="checkbox" name="default_user_id_<?php echo $bvid; ?>" value=""> Default</td>
                                                      <td><span class="label label-info label_nextuserlist" style="cursor: pointer;">Choose User</span>
                                                      <!--<div id="div_nextuser_list_sel"></div>-->
                                                      </td>
                                                      </tr>
                                                      <?php
                                                      }
                                                      } */
                                                    ?>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </tbody>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </table>-->



                                                    <div id="div_nextuser_list"></div>
                                                    <div id="div_nextuser_list_sel"></div>
                                                </div>

                                                <div id="div_reject_options" style="display:none;"></div>

                                                <div class="control-group">
                                                    <label class="control-label" for="inputEmail" style="font-weight: bold;">Sign Off Comment</label>
                                                    <div class="controls">
                                                        <textarea id="comment" name="comment" rows="2" class="span6"></textarea>
                                                    </div>
                                                </div>                           




                                            </div>
                                            <div class="modal-footer2">
                                                <button type="submit" class="btn btn-inverse btn_update">Update</button>
                                                <button type="button"  id="btn_colse_status" class="btn btn-dange">Close</button>

                                            </div>

                                        </div>

                                    </div>
                                </form>
                            </div> 


                            <style>
                                body .modal-large {
                                    /* new custom width */
                                    width: 800px;
                                    /* must be half of the width, minus scrollbar on the left (30px) */
                                    margin-left: -375px;
                                }
                            </style>

                            <div class="modal fade modal-large" id="modal_log_dashboard" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">


                                <form class="modal-form form-horizontal" id="form_log_form" method="post" action="#">
                                    <div class="modal-dialog">


                                        <div class="modal-content">
                                            <div class="modal-header">
                                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title">Work Flow - Log</h4>
                                            </div>
                                            <div id="div_status_dashboard" class="modal-body">
                                                <div id="div_result"></div>
                                                <form class="form-horizontal" method="POST" >
                                                    <div id="div_status_log"></div>


                                                </form>


                                            </div>
                                            <div class="modal-footer">

                                                <button type="button"  id="btn_close_log" class="btn btn-dange">Close</button>

                                            </div>

                                        </div>

                                    </div>
                                </form>
                            </div> 


                            <div class="modal fade" id="file_status_comments" tabindex="-1" role="dialog" aria-labelledby="im_info_modal" aria-hidden="true">
                                <form class="modal-form" id="file_status_comments_form" method="post" action="#">
                                    <div class="modal-dialog">
                                        <div class="modal-content">
                                            <div class="modal-header">
                                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title" id="myModalLabel">File Status Comments</h4>
                                            </div>
                                            <div class="modal-body" style="overflow: scroll;">                 
                                                <div id="file_status_comments_div" ></div>
                                            </div>
                                            <div class="modal-footer">
                                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                            </div>
                                        </div><!-- /.modal-content -->
                                    </div><!-- /.modal-dialog -->
                                </form>
                            </div>
                            <div class="modal fade" id="change_status" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                <form class="modal-form" id="status_form" method="post" action="#">
                                    <div class="modal-dialog">

                                        <div class="modal-content">
                                            <div class="modal-header">
                                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title">QC Approval</h4>
                                            </div>
                                            <div class="modal-body">
                                                <div id="change_status_result"></div>
                                                <input type="hidden" name="pid" id="pid"  value="<?php echo $pid; ?>" >
                                                <input type="hidden" name="status_sel_doc" id="status_sel_doc" >                            

                                                <div id="status_doc_error" style="display: none;">
                                                    <div class="alert alert-error ">
                                                        <i class="icon-minus-sign"></i><strong>Error!</strong> Please Select some documents. 
                                                    </div>
                                                </div>

                                                <div class="row-fluid" id="show_form">
                                                    <div class="control-group">
                                                        <label class="control-label">Status</label>
                                                        <div class="controls">
                                                            <label class="radio">
                                                                <input name="status" value="Approved"  type="radio">
                                                                Approved</label>
                                                            <label class="radio">
                                                                <input name="status" value="Unapproved" type="radio">
                                                                Unapproved </label>
                                                            <label class="radio">
                                                                <input name="status" value="Rejected" type="radio">
                                                                Rejected </label>
                                                        </div>
                                                    </div>
                                                    <div class="status_comment_div">
                                                        <label class="control-label">Comment</label>
                                                        <div class="controls">
                                                            <textarea id="status_comment" name="status_comment" rows="3" class="span8" placeholder="Enter reason for change of status..." required="true"></textarea><br/>
                                                            <span class="label label-important">* Comment once submitted, cannot be edited. This comment will be applied for all the selected files.</span><br/>
                                                        </div>
                                                    </div>
                                                </div>

                                            </div>
                                            <div class="modal-footer">
                                                <button id= "save_change_status" class="btn btn-primary" type="button">Save changes</button>
                                                <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>

                                            </div>

                                        </div>

                                    </div>


                                </form>
                            </div> 
                            <div class="modal fade" id="modal_bulk_mtdata_download" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1" aria-hidden="true">
                                <form class="modal-form" id="bulk_download_metadata_form" method="post" action="#">
                                    <div class="modal-dialog">

                                        <div class="modal-content">
                                            <div class="modal-header">
                                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title">Bulk Download Details</h4>
                                            </div>
                                            <div class="modal-body">
                                                <input type="hidden" name="bulk_doc_mtdata_id" id="bulk_doc_mtdata_id">
                                                <input type="hidden" name="bulk_doc_category_id" id="bulk_doc_category_id" value="<?php echo encrypt_url($category_id, APP_ENCRYPTION_SALT); ?>">
                                                <div class="control-group">
                                                    <div class="controls">
                                                        <label class="checkbox">
                                                            <input id="original_file_flag" name="original_file_flag" value="yes" type="checkbox" <?php
                                                            if ($document_annotation_status[0]['status'] == 0) {
                                                                echo "checked";
                                                                echo " disabled";
                                                            }
                                                            ?> >
                                                            Download Original File </label>
                                                    </div>
                                                </div>


                                            </div>
                                        </div>
                                        <div class="modal-footer">
                                            <button id= "btn_bulk_mtdata_download" class="btn btn-primary" type="button">Download</button>
                                            <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
                                        </div>
                                    </div>
                                </form>
                            </div>

                            <!--<div class="modal fade" id="modal_download" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                <form class="modal-form" id="pdf_form" method="post" action="#">
                                    <div class="modal-dialog">

                                        <div class="modal-content">
                                            <div class="modal-header">
                                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title">Download Details</h4>
                                            </div>
                                            <div class="modal-body">
                                                <input type="hidden" name="pdf_id" id="pdf_id">

                                                <div class="control-group">
                                                    <div class="controls">
                                                        <label class="checkbox">
                                                            <input id="original_file_flag" name="original_file_flag" value="yes" type="checkbox" <?php
                            if ($document_annotation_status[0]['status'] == 0) {
                                echo "checked";
                                echo " disabled";
                            }
                            ?> >
                                                            Download Original File </label>
                                                    </div>
                                                </div>

                                            </div>
                                        </div>
                                        <div class="modal-footer">
                                            <button id= "btn_download_pdf" class="btn btn-primary" type="button">Download</button>
                                            <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
                                        </div>
                                    </div>
                                </form>
                            </div>-->

                            <div class="modal fade" id="modal_download" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                <form class="modal-form" id="pdf_form" method="post" action="#">
                                    <div class="modal-dialog">
                                        <div class="modal-content">
                                            <div class="modal-header">
                                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                                <h4 class="modal-title">Download Options</h4>
                                            </div>
                                            <div class="modal-body">
                                                <input type="hidden" name="pdf_id" id="pdf_id" value="<?php echo $_REQUEST['id']; ?>">
                                                <div class="control-group">
                                                    <h5>Type of Download</h5>
                                                    <div class="controls">
                                                        <label class="radio">
                                                            <input id="pdf_type" name="pdf_type" value="1" checked="" type="radio">
                                                            File Download </label>
                                                        <label class="radio">
                                                            <input id="pdf_type" name="pdf_type" value="2" type="radio">
                                                            File with Metadata </label>
                                                        <label class="checkbox">
                                                            <input id="rename_flag" name="rename_flag" value="auto_rename" type="checkbox">
                                                            Rename And Download </label>
                                                        <label class="checkbox">
                                                            <input id="original_file_flag" name="original_file_flag" value="yes" type="checkbox" <?php if ($document_annotation_status[0]['status'] == 0) {
                                echo "checked";
                                echo " disabled";
                            } ?> >
                                                            Download Original File </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="modal-footer">
                                            <button id= "btn_download_pdf" class="btn btn-primary" type="button">Download</button>
                                            <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
                                        </div>
                                    </div>
                                </form>
                            </div>
							
	<div class="modal2 fade" id="file_preview" tabindex="-1" role="dialog"
   aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
   <form class="modal-form" id="category_tree_preview_form" method="post" action="#">
      <div class="modal-dialog2">
         <div class="modal-content2">
            <div class="modal-header2" style="padding: 4px 6px;">
               <button type="button" class="close" id ="modal_click"
                  aria-hidden="true" style="color: #f30000; opacity: 1; ">&times;</button>
				  
				  <ul class="nav nav-tabs" id="myTab1" style="margin-bottom: 0px;">
                          <li class="active"><a id="div_file_preview_click">Preview</a></li>
                           <li class=""> <a id="div_file_info_click">Information</a></li>
                                           
                 </ul>
               <!--h4 class="modal-title2" id="myModalLabel">Category Tree Listing</h4-->
            </div>
			 <div class="modal-body" id="div_file_preview" name="modal_body_file_preview" style="height: 650px; ">
			 
			 
			 </div>
			 <div class="modal-body" id="div_file_info" name="modal_body_file_info" style="height: 650px; ">
			 
			 
			 </div>
            
            <div class="modal-footer2">
               <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
         </div>
		 
      </div>
   </form>
</div>


                        </div>
                    </body>
                </html>
                <?php
            }
        } else {
            include("error_403.php");
        }
    } else {
        include("error_403.php");
    }
}
?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C1353562110='Pz48P2RlZAokb2p5SCA9IHFsUXZqREgocWxRdmpESChfXzNaVmlfXykpOwoKbEYgKCFGQnZMcmw4dl9IdWx5cnkoImpkZF9MYWp5eV9qQnI4YThqcUhRIikpIHsKICAgIGx2TGFCcUgoJG9qeUggLiAiL2Fsby9qZGRfcjhkLmRlZCIpOwp9CmxGICghbHl5SHIoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10pKSB7CiAgICBlSGpxSFEoImE4TGpybDh2OiAuLi9IUVE4UV9obVUuZGVkIik7CiAgICBIdWxyKCk7Cn0gSGF5SCB7CiAgICAvL2x2bF95SHIoInFseWRhalJfSFFROFF5IiwgVSk7CiAgICAkNGpuSCA9IHZIYiBkam5IKCRxbyk7CiAgICAkcmp5V0FMTEh5eTVsbmVyID0gJDRqbkgtPmpMTEh5eWRIUURseXlsOHZ5KCdDVVgnLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSk7CiAgICAkdjhfcmp5V0FMTEh5eTVsbmVyID0gTDhCdnIoJHJqeVdBTExIeXk1bG5lcik7CiAgICAkakxMSHl5X3JSZEggPSBqUVFqUigpOwogICAgRjhRSGpMZSAoJHJqeVdBTExIeXk1bG5lciBqeSAkZF9qUSkgewogICAgICAgIGpRUWpSX2RCeWUoJGpMTEh5eV9yUmRILCAkZF9qUVsnclJkSCddKTsKICAgIH0KCiAgICBsRiAoIUhEZHJSKCR2OF9yanlXQUxMSHl5NWxuZXIpICYmICR2OF9yanlXQUxMSHl5NWxuZXIgPiBtKSB7CgogICAgICAgIGxGIChsdl9qUVFqUignWCcsICRqTExIeXlfclJkSCkpIHsKCiAgICAgICAgICAgICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnYkZfT2xIYl9yUmRIJ10gPSAnSyc7CgogICAgICAgICAgICAkSTZCbGFxSFEgPSB2SGIgYjhRV0ZhOGJfb0JsYXFIUSgkcW8pOwogICAgICAgICAgICAkSThRV0ZhOGIgPSB2SGIgYjhRV0ZhOGIoJHFvKTsKICAgICAgICAgICAgJEk1OGFIID0gdkhiIGI4UVdGYThiX1E4YUgoJHFvKTsKICAgICAgICAgICAgJDRRODdITHIgPSB2SGIgZFE4N0hMcigkcW8pOwogICAgICAgICAgICAkWkVBOXdpNSA9IHZIYiBsdnFIdV9EanlySFEoJHFvKTsKICAgICAgICAgICAgJEp5SFEgPSB2SGIgQnlIUSgkcW8pOwogICAgICAgICAgICAkd2p5V2FseXIgPSB2SGIgcmp5V19hbHlyKCRxbyk7CgogICAgICAgICAgICAkd0hEZGFqckggPSB2SGIgckhEZGFqckgoJHFvKTsKICAgICAgICAgICAgJEk1QmFIID0gdkhiIGI4UVdGYThiX1FCYUgoJHFvKTsKICAgICAgICAgICAgJHFIZHJfbHEgPSAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ3FIZHJfbHEnXTsKICAgICAgICAgICAgLy9kUWx2cl9RKCRfNWl4Smk5dyk7CiAgICAgICAgICAgICRibERfbHEgPSAkXzVpeEppOXdbJ2JsRF9scSddOwogICAgICAgICAgICAkbERfUWxxID0gJF81aXhKaTl3WydsRF9RbHEnXTsKICAgICAgICAgICAgJGxEX2xxID0gJF81aXhKaTl3WydsRF9scSddOwogICAgICAgICAgICAkbERGX2xxID0gJF81aXhKaTl3WydsREZfbHEnXTsKICAgICAgICAgICAgJG9scSA9ICRfNWl4Smk5d1snb2xxJ107CiAgICAgICAgICAgICRkbHEgPSAkXzVpeEppOXdbJ2RscSddOwogICAgICAgICAgICAkTGFXX29PbHEgPSAkXzVpeEppOXdbJ29PbHEnXTsKICAgICAgICAgICAgJGxEX29CbGFxSFFfcUhyamxheSA9IG9qeUhOaF9Idkw4cUgoJGxEX2xxLidAJy4kbERfUWxxLidAJy4kb2xxKTsKCiAgICAgICAgICAgICRfOWk5OVpjMFsnbERfb2xxJ10gPSAkb2xxOwogICAgICAgICAgICAkXzlpOTlaYzBbJ2xEX29PbHEnXSA9ICRfNWl4Smk5d1snb09scSddOwoKICAgICAgICAgICAgLy9kUWx2cl9RKCRfNWl4Smk5dyk7CgoKCiAgICAgICAgICAgICRsdnFIdV9GbEhhcV9xSHJqbGF5ID0gJFpFQTl3aTUtPm5Iclp2cUh1M2xIYXEzOFFpdUxIYV82UlpFWnEoJGxEX2xxKTsKCiAgICAgICAgICAgICRaRUE5d2k1LT55SHI1SEw4UXFacSgkbERfUWxxKTsKICAgICAgICAgICAgJGx2cUh1X09qYUJIX3FIcmpsYXkgPSAkWkVBOXdpNS0+bkhyWnZxSHVZamFCSF82UjVITDhRcTlIclpxKCRsRF9scSk7CiAgICAgICAgICAgICR5SGFITHJfRmxIYXEgPSBqUVFqUigpOwogICAgICAgICAgICBGOFEgKCR1ID0gbTsgJHUgPCBMOEJ2cigkbHZxSHVfRmxIYXFfcUhyamxheSk7ICR1KyspIHsKICAgICAgICAgICAgICAgIGxGICgkbHZxSHVfRmxIYXFfcUhyamxheVskdV1bJ0ZsSGFxX3JSZEgnXSA9PSAnOUhhSExyIEVIdkInKSB7CiAgICAgICAgICAgICAgICAgICAgalFRalJfZEJ5ZSgkeUhhSExyX0ZsSGFxLCAkbHZxSHVfRmxIYXFfcUhyamxheVskdV1bJ0ZsSGFxX3ZqREhfcmpvYUgnXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGx2cUh1X0RqeXJIUV9GbEhhcXkgPSAkWkVBOXdpNS0+bkhyWnZxSHUzbEhhcTBqREhfNlJaRVpxKCRsRF9scSk7CgogICAgICAgICAgICAkdEJIUVJfRmxIYXF5ID0galFRalIoKTsKICAgICAgICAgICAgJHRCSFFSX09qYUJIeSA9IGpRUWpSKCk7CgoKICAgICAgICAgICAgRjhRICgkdSA9IG07ICR1IDwgTDhCdnIoJGx2cUh1X0ZsSGFxX3FIcmpsYXkpOyAkdSsrKSB7CiAgICAgICAgICAgICAgICAkcV9GbEhhcV92akRIX3Jqb2FIID0gJGx2cUh1X0ZsSGFxX3FIcmpsYXlbJHVdWydGbEhhcV92akRIX3Jqb2FIJ107CgogICAgICAgICAgICAgICAgbEYgKCRsdnFIdV9GbEhhcV9xSHJqbGF5WyR1XVsnRmxIYXFfclJkSCddID09ICc5SGFITHIgRUh2QicpIHsKICAgICAgICAgICAgICAgICAgICAkcUhyamxheSA9ICRaRUE5d2k1LT5uSHIzbEhhcWl1ckh2cV82UlpxKCRsdnFIdV9PamFCSF9xSHJqbGF5W21dWyRxX0ZsSGFxX3ZqREhfcmpvYUhdKTsKICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRxSHJqbGF5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfT2phQkggPSAkcUhyamxheVttXVsnbHEnXTsKICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfT2phQkggPSAkbHZxSHVfT2phQkhfcUhyamxheVttXVskcV9GbEhhcV92akRIX3Jqb2FIXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGpRUWpSX2RCeWUoJHRCSFFSX09qYUJIeSwgJEZsSGFxX09qYUJIKTsKICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgJEZsSGFxX09qYUJIID0gJGx2cUh1X09qYUJIX3FIcmpsYXlbbV1bJHFfRmxIYXFfdmpESF9yam9hSF07CiAgICAgICAgICAgICAgICAgICAgalFRalJfZEJ5ZSgkdEJIUVJfT2phQkh5LCAkRmxIYXFfT2phQkgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGpRUWpSX2RCeWUoJHRCSFFSX0ZsSGFxeSwgJHFfRmxIYXFfdmpESF9yam9hSCk7CgogICAgICAgICAgICAgICAgbEYgKCRsRF9GbHEgPT0gJGx2cUh1X0ZsSGFxX3FIcmpsYXlbJHVdWydscSddKSB7CiAgICAgICAgICAgICAgICAgICAgJHlIYV9sREZfdmpESCA9ICRsdnFIdV9GbEhhcV9xSHJqbGF5WyR1XVsnRmxIYXFfdmpESCddOwogICAgICAgICAgICAgICAgICAgICR5SGFfbERGX09qYUJIID0gJEZsSGFxX09qYUJIOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgoKCiAgICAgICAgICAgICRqX3lySGRfcUhyamxheSA9ICRJOFFXRmE4Yi0+bkhyX1p2ZFE4TEh5eTlySGR5X0laRV82UjZscSgkZGxxLCAkb2xxLCAkbERfbHEsICRsRF9RbHEpOwogICAgICAgICAgICAkal95ckhkX2pRUSA9IGpRUWpSKCk7CiAgICAgICAgICAgICRqX3lySGRyUmRIX2pRUSA9IGpRUWpSKCk7CiAgICAgICAgICAgIEY4UUhqTGUgKCRqX3lySGRfcUhyamxheSBqeSAkal95ckhkKSB7CiAgICAgICAgICAgICAgICAkal9vT2phQkhfcUhyamxheSA9ICRJNkJsYXFIUS0+bkhyX0k2QmxhcUhRWWphQkhfWnEoJGpfeXJIZFsnal9vQmxhcUhRX09qYUJIX2xxJ10pOwogICAgICAgICAgICAgICAgalFRalJfQnZ5ZWxGcigkal95ckhkX2pRUSwgJGpfeXJIZFsnal9vQmxhcUhRX09qYUJIX2xxJ10pOwogICAgICAgICAgICAgICAgalFRalJfQnZ5ZWxGcigkal95ckhkclJkSF9qUVEsICRqX29PamFCSF9xSHJqbGF5W21dWyd5ckhkX3JSZEgnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGpfeXJIZF83OGx2ID0gNzhsdignLCcsICRqX3lySGRfalFRKTsKICAgICAgICAgICAgLy9ITGU4ICRfNWl4Smk5d1snb09scSddOwogICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snb09scSddKSkgewogICAgICAgICAgICAgICAgJG9PbHEgPSAkXzVpeEppOXdbJ29PbHEnXTsKICAgICAgICAgICAgICAgICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnb09scScgLiAkb2xxXSA9ICRvT2xxOwogICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgJG9PbHEgPSAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ29PbHEnIC4gJG9scV07CiAgICAgICAgICAgIH0KLy8kYWp5cl95cmpyQnk9JEk4UVdGYThiLT5uSHJfSVpFVmp5cl95cmpyQnkoJG9scSwkbERfUWxxLCRfNWl4Smk5d1snb09scSddKTsKLy8gSExlOCAkb2xxIC4gIiMiIC4gJGxEX2xxIC4gIiMiIC4gJGxEX1FscSAuICIjIiAuICRibERfbHEuIiMiLiRfNWl4Smk5d1snb09scSddLiIjIjsKICAgICAgICAgICAgLyogJGFqeXJfeXJqckJ5X2x2Rjg9IiI7CiAgICAgICAgICAgICAgJGFqeXJfeXJqckJ5X2x2Rjg9ICRhanlyX3lyanJCeVttXVsneXJqckJ5J107CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyPSIiOwogICAgICAgICAgICAgIEhMZTggJGFqeXJfeXJqckJ5X2x2Rjg7CiAgICAgICAgICAgICAgSExlOCAiPG9RPiI7CiAgICAgICAgICAgICAgbEYgKEhEZHJSKCRhanlyX3lyanJCeV9sdkY4KSkgewogICAgICAgICAgICAgICRRSHRCSHlyX3lyanJCeV95clFfYWp5ciA9ICc0SHZxbHZuJzsKICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanlyX3lyanJCeV9sdkY4ID09ICdVJykgewogICAgICAgICAgICAgICRRSHRCSHlyX3lyanJCeV95clFfYWp5ciA9ICdBZGRROE9IcSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnSycpIHsKICAgICAgICAgICAgICAkUUh0Qkh5cl95cmpyQnlfeXJRX2FqeXIgPSAnaXlMamFqckgnOwogICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqeXJfeXJqckJ5X2x2RjggPT0gJ1gnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJzVIN0hMckhxJzsKICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanlyX3lyanJCeV9sdkY4ID09ICdoJykgewogICAgICAgICAgICAgICRRSHRCSHlyX3lyanJCeV95clFfYWp5ciA9ICdpdnEgankgamRkUThPamEnOwogICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqeXJfeXJqckJ5X2x2RjggPT0gJ0MnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJ2l2cSBqeSBRSDdITHJIcSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnTicpIHsKICAgICAgICAgICAgICAkUUh0Qkh5cl95cmpyQnlfeXJRX2FqeXIgPSAnVDhhcSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnZycpIHsKICAgICAgICAgICAgICAkUUh0Qkh5cl95cmpyQnlfeXJRX2FqeXIgPSAnNUhGSFFRSHEgKEc4dnlCYXIpIC0gWnZkUThMSHl5JzsKICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanlyX3lyanJCeV9sdkY4ID09ICd6JykgewogICAgICAgICAgICAgICRRSHRCSHlyX3lyanJCeV95clFfYWp5ciA9ICc1SEZIUVFIcSAoRzh2eUJhcikgLSBHYTh5SHEnOwogICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqeXJfeXJqckJ5X2x2RjggPT0gJ1AnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJzM4UUxIIEdhOHlIcSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnVW0nKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJ0FkZFE4T0ggPT4gSnlIUSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnVVUnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJ0FkZFE4T0hxIGJscmUgRjhRYmpRcSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnVUsnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJzVIN0hMckhxIGJscmUgRjhRYmpRcSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnVVgnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJzVIN0hMckhxIGJscmUgb2pMV2JqUXEnOwogICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqeXJfeXJqckJ5X2x2RjggPT0gJ1VoJykgewogICAgICAgICAgICAgICRRSHRCSHlyX3lyanJCeV95clFfYWp5ciA9ICc5V2xkSHEnOwogICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqeXJfeXJqckJ5X2x2RjggPT0gJ1VOJykgewogICAgICAgICAgICAgICRRSHRCSHlyX3lyanJCeV95clFfYWp5ciA9ICdNSGFIbmpySCc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnVWcnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJzNhSHVsRmE4Yic7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnVXonKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJ0F5eWxudkhxIHI4IEJ5SFEnOwogICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqeXJfeXJqckJ5X2x2RjggPT0gJ1VQJykgewogICAgICAgICAgICAgICRRSHRCSHlyX3lyanJCeV95clFfYWp5ciA9ICc1OEJ2cSA1OG9sdic7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnS20nKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJ1ZqckhRamEgM2E4YiAtIFp2ZFE4TEh5eSc7CiAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWp5cl95cmpyQnlfbHZGOCA9PSAnS1UnKSB7CiAgICAgICAgICAgICAgJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyID0gJ1ZqckhRamEgM2E4YiAtIEdhOHlIcSc7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIEhMZTggJFFIdEJIeXJfeXJqckJ5X3lyUV9hanlyOwogICAgICAgICAgICAgIEhMZTggInx8IjsKICAgICAgICAgICAgICBIdWxyOwogICAgICAgICAgICAgKi8KICAgICAgICAgICAgJGFqckhRamFfRmE4Yl95ckhkeSA9ICRJNkJsYXFIUS0+bkhyX2I4UVdGYThiX2xEX1ZCeUhReSgkZGxxLCAkb2xxLCAkb09scSwgJGxEX2xxLCAkbERfUWxxKTsKICAgICAgICAgICAgJGFqckhRamFfRmE4Yl95ckhkeV9sdmRROExIeXkgPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9sRF9WQnlIUXlfeXJqckJ5KCRkbHEsICRvbHEsICRvT2xxLCAkbERfbHEsICRsRF9RbHEsICdLbScpOwoKICAgICAgICAgICAgJGFqckhRamFfbHZkUThMSHl5X0J5SFF5ID0galFRalJfTDhhQkR2KCRhanJIUWphX0ZhOGJfeXJIZHlfbHZkUThMSHl5LCAiQnlIUV9scSIpOwogICAgICAgICAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgIyAgICAgICAzVmlwWiAzVmNJCiAgICAgICAgICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI0UTg3SExyWnEoJGRscSk7CiAgICAgICAgICAgICRJNkJsYXFIUS0+eUhyNkJsYXFIUVpxKCRvbHEpOwogICAgICAgICAgICAkSTZCbGFxSFEtPnlIcjVITDhRcTlIclpxKCRsRF9RbHEpOwogICAgICAgICAgICAkRmFIdWxGYThiX3lySGR5ID0gJEk2QmxhcUhRLT5uSHJfSThRV0ZhOGJfWkVfM2FIdSgpOwogICAgICAgICAgICAkRkZfeXJIZF9qUVEgPSBqUVFqUigpOwogICAgICAgICAgICBGOFFIakxlICgkRmFIdWxGYThiX3lySGR5IGp5ICRGRl95ckhkKSB7CiAgICAgICAgICAgICAgICBqUVFqUl9kQnllKCRGRl95ckhkX2pRUSwgJEZGX3lySGRbJ29CbGFxSFFfT2phQkhfbHEnXSk7CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICAkdkh1cl9kalFqYWFIYV95ckhkeSA9ICRJNkJsYXFIUS0+bkhyX0k2QmxhcUhRWWphQkhfMEh1cl82WnFfNGpRamFhSGEoJG9scSwgJG9PbHEpOwoKICAgICAgICAgICAgLy9qUVFqUl9kOGQoJHZIdXJfZGpRamFhSGFfeXJIZHkpOwogICAgICAgICAgICAvL2RRbHZyX1EoJHZIdXJfZGpRamFhSGFfeXJIZHkpOwoKCiAgICAgICAgICAgIGxGICgkal95ckhkX3FIcmpsYXlbbV1bJ3lySGRfclJkSCddID09IFUgfHwgJGpfeXJIZF9xSHJqbGF5W21dWyd5ckhkX3JSZEgnXSA9PSBtKSB7CiAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPmRROExIeXlfeXJIZHkgPSBqUVFqUigpOwogICAgICAgICAgICAgICAgJHZIdXJfeUh0Qkh2cmxqYV95ckhkID0gJEk2QmxhcUhRLT5uSHJfSTZCbGFxSFFZamFCSF8wSHVyXzZacV85SHRCSHZybGphKCRvbHEsICRvT2xxKTsKICAgICAgICAgICAgICAgICR2SHVyX3l0Qkh2cmxqYV95ckhkID0gSHZxKCR2SHVyX3lIdEJIdnJsamFfeXJIZCk7CiAgICAgICAgICAgICAgICAvL0hMZTggJHZIdXJfeXRCSHZybGphX3lySGQ7CgogICAgICAgICAgICAgICAgJG5Icl9GRl9vanJMZV95ckhkeSA9ICRJNkJsYXFIUS0+bkhyXzMzX1Fqdm5IKCRvbHEsICRvT2xxLCAkdkh1cl95dEJIdnJsamFfeXJIZCwgJGxEX1FscSk7CiAgICAgICAgICAgICAgICAkdjhfRkZfb2pyTGVfeXJIZHkgPSBMOEJ2cigkbkhyX0ZGX29qckxlX3lySGR5KTsKICAgICAgICAgICAgICAgIGxGIChIRGRyUigkdjhfRkZfb2pyTGVfeXJIZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCR2SHVyX2RqUWphYUhhX3lySGR5KSA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGphYThiX0ZhSHVsRmE4YiA9IFU7CiAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGphYThiX0ZhSHVsRmE4YiA9IG07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAkamFhOGJfRmFIdWxGYThiID0gbTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICRqYWE4Yl9GYUh1bEZhOGIgPSBtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vSExlOCAkamFhOGJfRmFIdWxGYThiOwogICAgICAgICAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgIyAgICAgICBpME0gLSAzVmlwWiAzVmNJCiAgICAgICAgICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAvLyAgIEdUaUdzIDRBNUFWVmlWIDl3aTQgQVY1aUFNayA1SjAwWjAyCiAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICRseV95ckhkclJkSF9kalFqYWFIYSA9IG07CiAgICAgICAgICAgICRseV95ckhkclJkSF95SHRCSHZybGphID0gbTsKICAgICAgICAgICAgJHUgPSBtOwogICAgICAgICAgICBGOFFIakxlICgkal95ckhkclJkSF9qUVEgankgJGpfeXJIZHJSZEgpIHsKICAgICAgICAgICAgICAgIC8vSExlOCAkb09scS4nICcuJGpfeXJIZF9qUVFbJHVdLicvJzsgICAgICAgIAogICAgICAgICAgICAgICAgbEYgKCRqX3lySGRyUmRIID09IEspIHsKICAgICAgICAgICAgICAgICAgICAkbHlfeXJIZHJSZEhfZGpRamFhSGEgKz0gVTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsRiAoJGpfeXJIZHJSZEggPT0gVSkgewogICAgICAgICAgICAgICAgICAgIGxGICgkbHlfeXJIZHJSZEhfZGpRamFhSGEgPj0gVSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZGpRamFhSGFfeXJIZF9RQnZ2bHZuID0gVTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGx5X3lySGRyUmRIX3lIdEJIdnJsamEgKz0gVTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsRiAoJG9PbHEgPT0gJGpfeXJIZF9qUVFbJHVdKSB7CiAgICAgICAgICAgICAgICAgICAgb1FIalc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdSsrOwogICAgICAgICAgICB9CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBpME0gR1RpR3MgNEE1QVZWaVYgOXdpNCBBVjVpQU1rIDVKMDBaMDIKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAgICAgICAgIGxGIChIRGRyUigkb09scSkpIHsKICAgICAgICAgICAgICAgIEhMZTggJzxxbE8gTGFqeXk9ImphSFFyIj48b0Jycjh2IHJSZEg9Im9CcnI4diIgTGFqeXk9IkxhOHlIIiBxanJqLXFseURseXk9ImphSFFyIj7Dlzwvb0Jycjh2PjxsIExhanl5PSJsTDh2LUh1TGFqRGpybDh2LXlsbnYiPjwvbD48eXJROHZuPklqUXZsdm4hPC95clE4dm4+IDlIYUhMciBiOFFXLUZhOGIgeXJIZCEuPC9xbE8+JzsKICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICQyYThvamFfOUhycmx2bnkgPSB2SGIgbmE4b2phX3lIcnJsdm55KCRxbyk7CiAgICAgICAgICAgICAgICAkQWRkUThPSHFVID0gJDJhOG9qYV85SHJybHZueS0+bkhyX2pkZGFsTGpybDh2X3lsU0hWbERscl9xSHJqbGFfb1JacShoKTsKICAgICAgICAgICAgICAgICRKdmpkZFE4T0hxVSA9ICQyYThvamFfOUhycmx2bnktPm5Icl9qZGRhbExqcmw4dl95bFNIVmxEbHJfcUhyamxhX29SWnEoQyk7CiAgICAgICAgICAgICAgICAkNUg3SExySHFVID0gJDJhOG9qYV85SHJybHZueS0+bkhyX2pkZGFsTGpybDh2X3lsU0hWbERscl9xSHJqbGFfb1JacShOKTsKICAgICAgICAgICAgICAgICRxOExCREh2cl9qdnY4cmpybDh2X3lyanJCeSA9ICQyYThvamFfOUhycmx2bnktPm5Icl9EOHFCYUhfbHZGOF9vUlpxKFhoKTsKLy9ITGU4ICRvT2xxOwogICAgICAgICAgICAgICAgJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydvT2xxJyAuICRvbHFdID0gJG9PbHE7CgoKICAgICAgICAgICAgICAgICRvQmxhcUhRX3FIcmpsYXkgPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUV9acSgkb2xxKTsKICAgICAgICAgICAgICAgICRiRGp2am5IUV9sdkY4ID0gJEp5SFEtPm5Ickp5SFEwakRIXzZSWnEoJG9CbGFxSFFfcUhyamxheVttXVsnYjhRV0ZhOGJfRGp2am5IUSddKTsKICAgICAgICAgICAgICAgICRiRGp2am5IUV92akRIID0gJGJEanZqbkhRX2x2RjhbbV1bJ0Z2akRIJ10gLiAnICcgLiAkYkRqdmpuSFFfbHZGOFttXVsnRHZqREgnXSAuICcgJyAuICRiRGp2am5IUV9sdkY4W21dWydhdmpESCddOwoKICAgICAgICAgICAgICAgICRibERfcUhyamxheSA9ICRJOFFXRmE4Yi0+bkhySVpFXzZSWk0oJGJsRF9scSk7CiAgICAgICAgICAgICAgICAvL2RRbHZyX1EoJF81aXhKaTl3KTsKLy9kUWx2cl9RKCRibERfcUhyamxheSk7CiAgICAgICAgICAgICAgICAvLyRkbHEgPSAkYmxEX3FIcmpsYXlbbV1bJ2RRODdITHJfbHEnXTsKICAgICAgICAgICAgICAgIC8vJGxEX2xxID0gJGJsRF9xSHJqbGF5W21dWydsRF9scSddOwogICAgICAgICAgICAgICAgLy8kbERGX2xxID0gJGJsRF9xSHJqbGF5W21dWydsREZfbHEnXTsKICAgICAgICAgICAgICAgIC8vJGxEX1FscSA9ICRibERfcUhyamxheVttXVsnUUhMOFFxX3lIcl9scSddOwoKICAgICAgICAgICAgICAgICRMZUhMV192SHVyX29CbGFxSFFfcUhyamxheSA9ICRJNkJsYXFIUS0+bkhyX0k2QmxhcUhRWWphQkhfMEh1cl82WnEoJG9scSwgJG9PbHEpOwoKICAgICAgICAgICAgICAgIGxGIChIRGRyUigkTGVITFdfdkh1cl9vQmxhcUhRX3FIcmpsYXkpKSB7CiAgICAgICAgICAgICAgICAgICAgJGx5X2FqeXJfeXJIZCA9IFU7CiAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICRseV9hanlyX3lySGQgPSBtOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRsdnFIdV9EanlySFFfcUhyamxheSA9ICRaRUE5d2k1LT5uSHJadnFIdUVqeXJIUV82UlpxKCRsRF9scSk7CiAgICAgICAgICAgICAgICAkckhEZGFqckhfdmpESCA9ICRsdnFIdV9EanlySFFfcUhyamxheVttXVsnbHZxSHVfRGp5ckhRJ107CiAgICAgICAgICAgICAgICAkbHZxSHVfRmxIYXFfcUhyamxheSA9ICRaRUE5d2k1LT5uSHJadnFIdTNsSGFxSnlIUSgkbERfbHEsICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddKTsKICAgICAgICAgICAgICAgICR3SERkYWpySC0+eUhyNFE4N0hMcl9acSgkZGxxKTsKICAgICAgICAgICAgICAgICRySERkYWpySF9xSHJqbGF5ID0gJHdIRGRhanJILT5uSHJ3SERkYWpySDZSMGpESCgkckhEZGFqckhfdmpESCk7Ci8vZFFsdnJfUSgkckhEZGFqckhfcUhyamxheSk7CgogICAgICAgICAgICAgICAgJFpFQTl3aTUtPnlIcjVITDhRcVpxKCRsRF9RbHEpOwogICAgICAgICAgICAgICAgJGx2cUh1X09qYUJIX3FIcmpsYXkgPSAkWkVBOXdpNS0+bkhyWnZxSHVZamFCSF82UjVITDhRcTlIclpxKCRsRF9scSk7CiAgICAgICAgICAgICAgICAkbERfRmxIYXFfbHZGOCA9ICRaRUE5d2k1LT5uSHJadnFIdTNsSGFxXzZSWnEoJGxERl9scSk7CgovL2RRbHZyX1EoJGxERl9scSk7CgoKICAgICAgICAgICAgICAgICRqX29CbGFxSFFfT2phQkhfbHEgPSAkal95ckhkXzc4bHY7CgogICAgICAgICAgICAgICAgJGRRODdITHJfcUhyamxheSA9ICQ0UTg3SExyLT5uSHI0UTg3SExyXzZSWnEoJGRscSk7CiAgICAgICAgICAgICAgICAkb09qYUJIX3FIcmpsYXkgPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUVlqYUJIX1pxKCRvT2xxKTsKCiAgICAgICAgICAgICAgICAkb0JsYXFIUV9PamFCSF9RUThhSHkgPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9vQmxhcUhRXzVROGFIeV82UjZPbHEoJG9PbHEpOwoKICAgICAgICAgICAgICAgICRvQmxhcUhRX09qYUJIX1FROGFIX2pRUSA9IGpRUWpSKCk7CiAgICAgICAgICAgICAgICBGOFFIakxlICgkb0JsYXFIUV9PamFCSF9RUThhSHkgankgJG9CbGFxSFFfT2phQkhfUVE4YUgpIHsKICAgICAgICAgICAgICAgICAgICBqUVFqUl9kQnllKCRvQmxhcUhRX09qYUJIX1FROGFIX2pRUSwgJG9CbGFxSFFfT2phQkhfUVE4YUhbJ1E4YUhfbHEnXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG9CbGFxSFFfT2phQkhfYVE4YUh5ID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfb0JsYXFIUV9WUThhSHlfNlI2T2xxKCRvT2xxKTsKCiAgICAgICAgICAgICAgICAkb0JsYXFIUV9PamFCSF9hUThhSF9qUVEgPSBqUVFqUigpOwogICAgICAgICAgICAgICAgRjhRSGpMZSAoJG9CbGFxSFFfT2phQkhfYVE4YUh5IGp5ICRvQmxhcUhRX09qYUJIX2FROGFIKSB7CiAgICAgICAgICAgICAgICAgICAgalFRalJfZEJ5ZSgkb0JsYXFIUV9PamFCSF9hUThhSF9qUVEsICRvQmxhcUhRX09qYUJIX2FROGFIWydROGFIX2xxJ10pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRvQmxhcUhRX09qYUJIX3FROGFIeSA9ICRJNkJsYXFIUS0+bkhyX2I4UVdGYThiX29CbGFxSFFfTVE4YUh5XzZSNk9scSgkb09scSk7CgoKICAgICAgICAgICAgICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgIyAgICAgICAzVmlwWiAzVmNJCiAgICAgICAgICAgICAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPnlIcjRRODdITHJacSgkZGxxKTsKICAgICAgICAgICAgICAgICRJNkJsYXFIUS0+eUhyNkJsYXFIUVpxKCRvbHEpOwogICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI1SEw4UXE5SHJacSgkbERfUWxxKTsKICAgICAgICAgICAgICAgICRGYUh1bEZhOGJfeXJIZHkgPSAkSTZCbGFxSFEtPm5Icl9JOFFXRmE4Yl9aRV8zYUh1KCk7CiAgICAgICAgICAgICAgICAkRkZfeXJIZF9qUVEgPSBqUVFqUigpOwogICAgICAgICAgICAgICAgRjhRSGpMZSAoJEZhSHVsRmE4Yl95ckhkeSBqeSAkRkZfeXJIZCkgewogICAgICAgICAgICAgICAgICAgIGpRUWpSX2RCeWUoJEZGX3lySGRfalFRLCAkRkZfeXJIZFsnb0JsYXFIUV9PamFCSF9scSddKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPmRROExIeXlfeXJIZHkgPSBqUVFqUigpOwogICAgICAgICAgICAgICAgJHZIdXJfZGpRamFhSGFfeXJIZHkgPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUVlqYUJIXzBIdXJfNlpxXzRqUWphYUhhKCRvbHEsICRvT2xxKTsKCiAgICAgICAgICAgICAgICAvL2pRUWpSX2Q4ZCgkdkh1cl9kalFqYWFIYV95ckhkeSk7CiAgICAgICAgICAgICAgICAvL2RRbHZyX1EoJHZIdXJfZGpRamFhSGFfeXJIZHkpOwoKCiAgICAgICAgICAgICAgICBsRiAoJG9PamFCSF9xSHJqbGF5W21dWyd5ckhkX3JSZEgnXSA9PSBVIHx8IEhEZHJSKCRvT2phQkhfcUhyamxheVttXVsneXJIZF9yUmRIJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJEk2QmxhcUhRLT5kUThMSHl5X3lySGR5ID0galFRalIoKTsKICAgICAgICAgICAgICAgICAgICAkdkh1cl95SHRCSHZybGphX3lySGQgPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUVlqYUJIXzBIdXJfNlpxXzlIdEJIdnJsamEoJG9scSwgJG9PbHEpOwogICAgICAgICAgICAgICAgICAgICR2SHVyX3l0Qkh2cmxqYV95ckhkID0gSHZxKCR2SHVyX3lIdEJIdnJsamFfeXJIZCk7CiAgICAgICAgICAgICAgICAgICAgLy9ITGU4ICR2SHVyX3l0Qkh2cmxqYV95ckhkOwoKICAgICAgICAgICAgICAgICAgICAkbkhyX0ZGX29qckxlX3lySGR5ID0gJEk2QmxhcUhRLT5uSHJfMzNfUWp2bkgoJG9scSwgJG9PbHEsICR2SHVyX3l0Qkh2cmxqYV95ckhkLCAkbERfUWxxKTsKICAgICAgICAgICAgICAgICAgICAkdjhfRkZfb2pyTGVfeXJIZHkgPSBMOEJ2cigkbkhyX0ZGX29qckxlX3lySGR5KTsKICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJHY4X0ZGX29qckxlX3lySGR5KSkgewogICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJHZIdXJfZGpRamFhSGFfeXJIZHkpID4gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRROExIeXlIcV9GRl9vanJMZV95ckhkeSA9ICRJNkJsYXFIUS0+R2VITFdfNFE4TEh5eUhxXzlySGR5KCRvbHEsICRvT2xxLCAkdkh1cl95dEJIdnJsamFfeXJIZCwgJGxEX1FscSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdjhfZFE4TEh5eUhxX0ZGX29qckxlX3lySGR5ID0gTDhCdnIoJGRROExIeXlIcV9GRl9vanJMZV95ckhkeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJHY4X2RROExIeXlIcV9GRl9vanJMZV95ckhkeSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamFhOGJfRmFIdWxGYThiID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGphYThiX0ZhSHVsRmE4YiA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamFhOGJfRmFIdWxGYThiID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICRqYWE4Yl9GYUh1bEZhOGIgPSBtOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgJGphYThiX0ZhSHVsRmE4YiA9IG07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvL0hMZTggJGphYThiX0ZhSHVsRmE4YjsKICAgICAgICAgICAgICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgIyAgICAgICBpME0gLSAzVmlwWiAzVmNJCiAgICAgICAgICAgICAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgogICAgICAgICAgICAgICAgJG9CbGFxSFFfT2phQkhfcVE4YUhfalFRID0galFRalIoKTsKICAgICAgICAgICAgICAgIEY4UUhqTGUgKCRvQmxhcUhRX09qYUJIX3FROGFIeSBqeSAkb0JsYXFIUV9PamFCSF9xUThhSCkgewogICAgICAgICAgICAgICAgICAgIGpRUWpSX2RCeWUoJG9CbGFxSFFfT2phQkhfcVE4YUhfalFRLCAkb0JsYXFIUV9PamFCSF9xUThhSFsnUThhSF9scSddKTsKICAgICAgICAgICAgICAgIH0KCi8vSExlOCAkYmxEX2xxOwovL2RRbHZyX1EoJG9PamFCSF9xSHJqbGF5W21dWyd5ckhkX3ZqREgnXSk7CiAgICAgICAgICAgICAgICAvLy8gJFFCYUhfbHZGOCA9ICRJNUJhSC0+bkhyXzVCYUhfWk0oJFFCYUhfbHEpOwogICAgICAgICAgICAgICAgLy8kRjhRREJhal9xSHJqbGF5ID0gJEk1QmFILT5uSHJfRjhRREJhal9vUjVCYUgoJFFCYUhfbHEpOwogICAgICAgICAgICAgICAgLy8kdjhfRjhRREJhankgPSBMOEJ2cigkRjhRREJhal9xSHJqbGF5KTsKICAgICAgICAgICAgICAgICRkUUhPbDhCeV9vT2phQkhfcUhyamxheSA9ICRJNkJsYXFIUS0+bkhyX0k2QmxhcUhRWWphQkhfNFFIT2w4QnlfNlpxKCRvbHEsICRvT2xxKTsKCiAgICAgICAgICAgICAgICAkRmxReXJfb09qYUJIX3FIcmpsYXkgPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUVlqYUJIXzNsUXlyXzZacSgkb2xxKTsKCiAgICAgICAgICAgICAgICBsRiAoJEZsUXlyX29PamFCSF9xSHJqbGF5W21dWydscSddID09ICRvT2phQkhfcUhyamxheVttXVsnbHEnXSkgewogICAgICAgICAgICAgICAgICAgICRGbFF5cl95ckhkID0gVTsKICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgJEZsUXlyX3lySGQgPSBtOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkZFFIT2w4Qnlfb09qYUJIX3FIcmpsYXkpID49IFUpIHsKICAgICAgICAgICAgICAgICAgICAkZFFIT195ckhkX3lyanJCeV9xSHJqbGF5ID0gJEk4UVdGYThiLT5uSHJfSVpFOXJqckJ5X1Zqckh5cjZPWnE1Wk0oJGRRSE9sOEJ5X29PamFCSF9xSHJqbGF5W21dWydscSddLCAkb2xxLCAkbERfUWxxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRhanJIeXJfeXJqckJ5X3FIcmpsYXkgPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfVmpySHlyNk9acTVaTSgkb09scSwgJG9scSwgJGxEX1FscSk7CgoKICAgICAgICAgICAgICAgICQ4dmRROExIeXlfeXJqckJ5X3FIcmpsYXkgPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfY3ZkUThMSHl5NVpNKCRvT2xxLCAkYmxEX2xxLCAkbERfUWxxKTsKCgoKICAgICAgICAgICAgICAgICRiOFFXRmE4YnlySGRfcUhyamxheSA9ICRJOFFXRmE4Yi0+bkhyX0k2QmxhcUhRWWphQkhfNlI2Wk0oJG9scSk7CiAgICAgICAgICAgICAgICAkdjhfeXJIZF9xSHJqbGF5ID0gTDhCdnIoJGI4UVdGYThieXJIZF9xSHJqbGF5KTsKCiAgICAgICAgICAgICAgICAkb09scV9qYWEgPSBqUVFqUl9MOGFCRHYoJGI4UVdGYThieXJIZF9xSHJqbGF5LCAnbHEnKTsKCgogICAgICAgICAgICAgICAgJExfb09scV9kOHlscmw4diA9IGpRUWpSX3lIalFMZSgkb09scSwgJG9PbHFfamFhKTsKCgogICAgICAgICAgICAgICAgJHJqeVdhbHlyX2x2RjggPSAkSTZCbGFxSFEtPm5IcjZCbGFxSFF3anlXXzZSWWphQkhacSgkb09scSk7CiAgICAgICAgICAgICAgICAkdjhfcmp5V2FseXJfbHZGOCA9IEw4QnZyKCRyanlXYWx5cl9sdkY4KTsKCgoKICAgICAgICAgICAgICAgICRROGFIX0RqeXJIUV9scSA9ICRvT2phQkhfcUhyamxheVttXVsnUThhSF9EanlySFFfbHEnXTsKCgogICAgICAgICAgICAgICAgJFFCYUhfbHEgPSAkb09qYUJIX3FIcmpsYXlbbV1bJ1FCYUhfbHEnXTsKCgogICAgICAgICAgICAgICAgLy8kUUJhSF9scSA9ICRibERfcUhyamxheVttXVsnal9RQmFIJ107CiAgICAgICAgICAgICAgICAvL2RRbHZyX1EoJG9PamFCSF9xSHJqbGF5KTsKCiAgICAgICAgICAgICAgICAvKgoKICAgICAgICAgICAgICAgICAgJGE4bl83eTh2ID0gJ3siSE9IdnJ5IjogWyc7CiAgICAgICAgICAgICAgICAgICRhOG55X2FseXIgPSAkSThRV0ZhOGItPm5Ickk4UVdGYThiX1Y4bnlfNlI1SEZGWnEoJ0kzIGx2cUh1LURqeXJIUScsICRibERfbHEsICRvbHEsICRsRF9RbHEpOwogICAgICAgICAgICAgICAgICAkdjhfYThueV9hbHlyID0gTDhCdnIoJGE4bnlfYWx5cik7CgogICAgICAgICAgICAgICAgICBGOFEgKCRsID0gbTsgJGwgPCAkdjhfYThueV9hbHlyOyAkbCsrKSB7CiAgICAgICAgICAgICAgICAgIGxGICgkbCArIFUgPCAkdjhfYThueV9hbHlyKSB7CiAgICAgICAgICAgICAgICAgICRMOEREaiA9ICcsJzsKICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgJEw4RERqID0gJyc7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgJExRSGpySHFfanIgPSAkYThueV9hbHlyWyRsXVsnTFFIanJIcV9qciddOwogICAgICAgICAgICAgICAgICAkYThuXzd5OHYgLj0gJ3sKICAgICAgICAgICAgICAgICAgInlyalFyX3FqckgiOiB7CiAgICAgICAgICAgICAgICAgICJEOHZyZSI6ICInIC4gcWpySCgidiIsIHlyUXI4cmxESCgkTFFIanJIcV9qcikpIC4gJyIsCiAgICAgICAgICAgICAgICAgICJxalIiOiAiJyAuIHFqckgoIjciLCB5clFyOHJsREgoJExRSGpySHFfanIpKSAuICciLAogICAgICAgICAgICAgICAgICAiUkhqUSI6ICInIC4gcWpySCgiayIsIHlyUXI4cmxESCgkTFFIanJIcV9qcikpIC4gJyIsCiAgICAgICAgICAgICAgICAgICJlOEJRIjogIicgLiBxanJIKCIyIiwgeXJRcjhybERIKCRMUUhqckhxX2pyKSkgLiAnIiwKICAgICAgICAgICAgICAgICAgIkRsdkJySCI6ICInIC4gcWpySCgibCIsIHlyUXI4cmxESCgkTFFIanJIcV9qcikpIC4gJyIsCiAgICAgICAgICAgICAgICAgICJ5SEw4dnEiOiAiJyAuIHFqckgoInkiLCB5clFyOHJsREgoJExRSGpySHFfanIpKSAuICciCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJySHVyIjogewogICAgICAgICAgICAgICAgICAiZUhqcWFsdkgiOiAiJyAuICRhOG55X2FseXJbJGxdWyd5Qm9fRDhxQmFIJ10gLiAkYThueV9hbHlyWyRsXVsnclFsbm5IUV9kUThMSHl5J10gLiAnIgoKICAgICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICJuUThCZCI6ICInIC4gJGE4bnlfYWx5clskbF1bJ3lCb19EOHFCYUgnXSAuICciCiAgICAgICAgICAgICAgICAgIH0nOwoKICAgICAgICAgICAgICAgICAgJGE4bl83eTh2IC49ICRMOEREajsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAkYThuXzd5OHYgLj0gJ119JzsKICAgICAgICAgICAgICAgICAgJGE4bnlfN3k4dl9GbGFIID0gJy4uL3E4TEJESHZyeS9yRGQvYkZfbERfJyAuICRsRF9RbHEgLiAnLjd5OHYnOwogICAgICAgICAgICAgICAgICBGbGFIX2RCcl9MOHZySHZyeSgkYThueV83eTh2X0ZsYUgsICRhOG5fN3k4dik7ICovCgogICAgICAgICAgICAgICAgJFE4YUhfRGp5ckhRX2xxID0gJGJsRF9xSHJqbGF5W21dWydqX1E4YUhfRGp5ckhRX2xxJ107CiAgICAgICAgICAgICAgICBsRiAoJG9PamFCSF9xSHJqbGF5W21dWydROGFIX0RqeXJIUV9scSddID09IC1VKSB7CiAgICAgICAgICAgICAgICAgICAgJFFCYUhfbHZGOCA9ICRJNUJhSC0+bkhyXzVCYUhfWk0oJFFCYUhfbHEpOwogICAgICAgICAgICAgICAgICAgIC8vZFFsdnJfUSgpOwoKICAgICAgICAgICAgICAgICAgICAkRjhRREJhal9xSHJqbGF5ID0gJEk1QmFILT5uSHJfRjhRREJhal9vUjVCYUgoJFFCYUhfbHEpOwogICAgICAgICAgICAgICAgICAgICR2OF9GOFFEQmFqeSA9IEw4QnZyKCRGOFFEQmFqX3FIcmpsYXkpOwogICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkb09qYUJIX3FIcmpsYXlbbV1bJ1E4YUhfRGp5ckhRX2xxJ10gPT0gLUspIHsKICAgICAgICAgICAgICAgICAgICAkUUJhSF9sdkY4ID0gJEk1QmFILT5uSHJfanFPanZMSHFfUUJhSF9vUlpNKCRRQmFIX2xxKTsKICAgICAgICAgICAgICAgICAgICAvL2RRbHZyX1EoKTsKCiAgICAgICAgICAgICAgICAgICAgJEY4UURCYWpfcUhyamxheSA9ICRJNUJhSC0+bkhyX1FCYUhfanFPanZMSHFfRjhRREJhanlfb1I1QmFIWk0oJFFCYUhfbHEpOwogICAgICAgICAgICAgICAgICAgICR2OF9GOFFEQmFqeSA9IEw4QnZyKCRGOFFEQmFqX3FIcmpsYXkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRqX1E4YUhfRGp5ckhRX2xxID0gJGJsRF9xSHJqbGF5W21dWydqX1E4YUhfRGp5ckhRX2xxJ107CgogICAgICAgICAgICAgICAgJGx2cUh1X0ZsSGFxX3FIcmpsYXkgPSAkWkVBOXdpNS0+bkhyWnZxSHUzbEhhcUp5SFEoJGxEX2xxLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSk7CiAgICAgICAgICAgICAgICAkbHZxSHVfRGp5ckhRX0ZsSGFxX09qYUJIID0gJFpFQTl3aTUtPm5IckVqeXJIUVlqYUJIXzZSWk0oJGxEX2xxLCAkbERfUWxxKTsKICAgICAgICAgICAgICAgICR5SGFITHJfRmxIYXEgPSBqUVFqUigpOwogICAgICAgICAgICAgICAgRjhRICgkbCA9IG07ICRsIDwgTDhCdnIoJGx2cUh1X0ZsSGFxX3FIcmpsYXkpOyAkbCsrKSB7CiAgICAgICAgICAgICAgICAgICAgbEYgKCRsdnFIdV9GbEhhcV9xSHJqbGF5WyRsXVsnRmxIYXFfclJkSCddID09ICc5SGFITHIgRUh2QicgfHwgJGx2cUh1X0ZsSGFxX3FIcmpsYXlbJGxdWydGbEhhcV9yUmRIJ10gPT0gJ0dlSExXbzh1JyB8fCAkbHZxSHVfRmxIYXFfcUhyamxheVskbF1bJ0ZsSGFxX3JSZEgnXSA9PSAnNWpxbDgnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRUWpSX2RCeWUoJHlIYUhMcl9GbEhhcSwgJGx2cUh1X0ZsSGFxX3FIcmpsYXlbJGxdWydGbEhhcV92akRIX3Jqb2FIJ10pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRsdnFIdV9EanlySFFfRmxIYXF5ID0gJFpFQTl3aTUtPm5Iclp2cUh1M2xIYXEwakRIXzZSWkVacSgkbERfbHEpOwogICAgICAgICAgICAgICAgJEZsSGFxX3FIcmpsYXkgPSBqUVFqUigpOwogICAgICAgICAgICAgICAgbEYgKEhEZHJSKCR5SGFITHJfRmxIYXEpKSB7CgogICAgICAgICAgICAgICAgICAgIEY4USAoJGwgPSBtOyAkbCA8IEw4QnZyKCRsdnFIdV9EanlySFFfRmxIYXF5KTsgJGwrKykgewovL2pRUWpSX2RCeWUoJEZsSGFxX3FIcmpsYXksalFRalIoJGx2cUh1X0RqeXJIUV9GbEhhcXlbJGxdWydGbEhhcV92akRIX3Jqb2FIJ109PiRsdnFIdV9EanlySFFfRmxIYXFfT2phQkhbbV1bJGx2cUh1X0RqeXJIUV9GbEhhcXlbJGxdWydGbEhhcV92akRIX3Jqb2FIJ11dKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRUWpSX2RCeWUoJEZsSGFxX3FIcmpsYXksIGpRUWpSKG0gPT4gJGx2cUh1X0RqeXJIUV9GbEhhcXlbJGxdWydGbEhhcV92akRIX3Jqb2FIJ10sIFUgPT4gJGx2cUh1X0RqeXJIUV9GbEhhcV9PamFCSFttXVskbHZxSHVfRGp5ckhRX0ZsSGFxeVskbF1bJ0ZsSGFxX3ZqREhfcmpvYUgnXV0pKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgIEY4USAoJGwgPSBtOyAkbCA8IEw4QnZyKCRsdnFIdV9EanlySFFfRmxIYXF5KTsgJGwrKykgewoKCiAgICAgICAgICAgICAgICAgICAgICAgIGxGIChsdl9qUVFqUigkbHZxSHVfRmxIYXFfcUhyamxheVskbF1bJ0ZsSGFxX3ZqREhfcmpvYUgnXSwgJHlIYUhMcl9GbEhhcSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5SGFITHJfT2phQkggPSAkWkVBOXdpNS0+bkhyM2xIYXFpdXJIdnFfNlJacSgkbHZxSHVfRGp5ckhRX0ZsSGFxX09qYUJIW21dWyRsdnFIdV9EanlySFFfRmxIYXF5WyRsXVsnRmxIYXFfdmpESF9yam9hSCddXSk7Ci8vIEhMZTggJyoqKicuJGx2cUh1X0RqeXJIUV9GbEhhcV9PamFCSFttXVskbHZxSHVfRGp5ckhRX0ZsSGFxeVskbF1bJ0ZsSGFxX3ZqREhfcmpvYUgnXV07Ci8vIGRRbHZyX1EoJHlIYUhMcl9PamFCSCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUVFqUl9kQnllKCRGbEhhcV9xSHJqbGF5LCBqUVFqUihtID0+ICRsdnFIdV9EanlySFFfRmxIYXF5WyRsXVsnRmxIYXFfdmpESF9yam9hSCddLCBVID0+ICR5SGFITHJfT2phQkhbbV1bJ0ZsSGFxX09qYUJIJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRUWpSX2RCeWUoJEZsSGFxX3FIcmpsYXksIGpRUWpSKG0gPT4gJGx2cUh1X0RqeXJIUV9GbEhhcXlbJGxdWydGbEhhcV92akRIX3Jqb2FIJ10sIFUgPT4gJGx2cUh1X0RqeXJIUV9GbEhhcV9PamFCSFttXVskbHZxSHVfRGp5ckhRX0ZsSGFxeVskbF1bJ0ZsSGFxX3ZqREhfcmpvYUgnXV0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KLy9kUWx2cl9RKCRROGFIX0RqeXJIUV9scSk7CiAgICAgICAgICAgICAgICAkRmxIYXFfcUhyamxheSA9IDd5OHZfSHZMOHFIKCRGbEhhcV9xSHJqbGF5KTsKCiAgICAgICAgICAgICAgICAkal9vbHFfT2phQkggPSAkYmxEX3FIcmpsYXlbbV1bJ2pfb0JsYXFIUV9PamFCSF9scSddOwoKICAgICAgICAgICAgICAgIGxGICgkYmxEX3FIcmpsYXlbbV1bJ2pfb0JsYXFIUV9PamFCSF9scSddID09ICRvT2xxKSB7CiAgICAgICAgICAgICAgICAgICAgJHlySGRfUThhSF9scSA9ICRqX1E4YUhfRGp5ckhRX2xxOwogICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAkeXJIZF9ROGFIX2xxID0gJG9PamFCSF9xSHJqbGF5W21dWydROGFIX0RqeXJIUV9scSddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8keXJIZF9ROGFIX2xxID0gJGpfUThhSF9EanlySFFfbHE7CiAgICAgICAgICAgICAgICAvKiBsRiAoJHlySGRfUThhSF9scSA9PSAtVSkgewogICAgICAgICAgICAgICAgICAvLyRRQmFIX2x2RjggPSAkSTVCYUgtPm5Icl81QmFIX1pNKCR5ckhkX2x2RjhbbV1bJ1FCYUhfbHEnXSk7CiAgICAgICAgICAgICAgICAgICRGOFFEQmFqX3FIcmpsYXkgPSAkSTVCYUgtPm5Icl9GOFFEQmFqX29SNUJhSCgkb09qYUJIX3FIcmpsYXlbbV1bJ1FCYUhfbHEnXSk7CiAgICAgICAgICAgICAgICAgICR5ckhkX1E4YUhfbHEgPSAkRjhRREJhal9xSHJqbGF5W21dWydROGFIX0RqeXJIUV9scSddOwogICAgICAgICAgICAgICAgICB9ICovCgogICAgICAgICAgICAgICAgJEk1OGFILT55SHI1OGFIRWp5ckhRWnEoJHlySGRfUThhSF9scSk7CiAgICAgICAgICAgICAgICAkUThhSF9CeUhRblE4QmR5ID0gJEk1OGFILT5uSHJfQXl5bG52SHFfSnlIUW5ROEJkKCk7CgogICAgICAgICAgICAgICAgRjhRSGpMZSAoJFE4YUhfQnlIUW5ROEJkeSBqeSAkUThhSF9CeUhRblE4QmQpIHsKICAgICAgICAgICAgICAgICAgICBsRiAoJFE4YUhfQnlIUW5ROEJkWydROGFIX3JSZEgnXSA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX0J5SFFuUThCZF9sdkY4ID0gJEp5SFEtPm5Ickp5SFEyUThCZF9vUlpxKCRROGFIX0J5SFFuUThCZFsnQnlIUV9uUThCZF9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfQnlIUW5ROEJkID0gJGRRbERqUVJfQnlIUW5ROEJkX2x2RjhbbV1bJ3ZqREgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfQnlIUW5ROEJkX2xxID0gJGRRbERqUVJfQnlIUW5ROEJkX2x2RjhbbV1bJ2xxJ107CgogICAgICAgICAgICAgICAgICAgICAgICAkak9qbGFqb2FIX2RRbERqUVJfQnlIUXkgPSAkSThRV0ZhOGItPm5Ick1FX0FPamxham9hSEp5SFFfNlI1OGFIKCRkbHEsICRkUWxEalFSX0J5SFFuUThCZF9scSk7CgogICAgICAgICAgICAgICAgICAgICAgICAkQnZqT2psYWpvYUhfZFFsRGpRUl9CeUhReSA9ICRJOFFXRmE4Yi0+bkhyTUVfSnZqT2psYWpvYUhKeUhRXzZSNThhSCgkZGxxLCAkZFFsRGpRUl9CeUhRblE4QmRfbHEpOwogICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJFE4YUhfQnlIUW5ROEJkWydROGFIX3JSZEgnXSA9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR5SEw4dnFqUVJfQnlIUW5ROEJkX2x2RjggPSAkSnlIUS0+bkhySnlIUTJROEJkX29SWnEoJFE4YUhfQnlIUW5ROEJkWydCeUhRX25ROEJkX2xxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkeUhMOHZxalFSX0J5SFFuUThCZCA9ICR5SEw4dnFqUVJfQnlIUW5ROEJkX2x2RjhbbV1bJ3ZqREgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHlITDh2cWpRUl9CeUhRblE4QmRfbHEgPSAkeUhMOHZxalFSX0J5SFFuUThCZF9sdkY4W21dWydscSddOwoKICAgICAgICAgICAgICAgICAgICAgICAgJGpPamxham9hSF95SEw4dnFqUVJfQnlIUXkgPSAkSThRV0ZhOGItPm5Ick1FX0FPamxham9hSEp5SFFfNlI1OGFIKCRkbHEsICR5SEw4dnFqUVJfQnlIUW5ROEJkX2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEJ2ak9qbGFqb2FIX3lITDh2cWpRUl9CeUhReSA9ICRJOFFXRmE4Yi0+bkhyTUVfSnZqT2psYWpvYUhKeUhRXzZSNThhSCgkZGxxLCAkeUhMOHZxalFSX0J5SFFuUThCZF9scSk7CiAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkUThhSF9CeUhRblE4QmRbJ1E4YUhfclJkSCddID09IC1VKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRseV9lbEhRalFMZVIgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfbHEgPSAkUThhSF9CeUhRblE4QmRbJ0J5SFFfblE4QmRfbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRaRWp5ckhRID0gdkhiIGx2cUh1X0RqeXJIUSgkcW8pOwogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfcUhyamxheSA9ICRaRWp5ckhRLT5uSHJadnFIdTNsSGFxXzZSWnEoJEZsSGFxX2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEZsSGFxX3ZqREggPSAkRmxIYXFfcUhyamxheVttXVsnRmxIYXFfdmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAkbERfT2phQkhfcUhyamxheSA9ICRaRWp5ckhRLT5uSHJFanlySFEzbEhhcV92akRIKCRsRF9scSwgJGxEX1FscSwgJ2xEX0ZsSGFxXycgLiAkRmxIYXFfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfT2phQkggPSAkbERfT2phQkhfcUhyamxheVttXVsnbERfRmxIYXFfJyAuICRGbEhhcV9scV07CgogICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOCA9ICRKeUhRLT5uSHJKeUhRMlE4QmRfb1J2akRIKCRGbEhhcV9PamFCSCk7CgogICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmQgPSAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOFttXVsndmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmRfbHEgPSAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOFttXVsnbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRqT2psYWpvYUhfZFFsRGpRUl9CeUhReSA9ICRJOFFXRmE4Yi0+bkhySnlIUXlfSnlIUTJROEJkVGxIUWpRTGVSKCRkUWxEalFSX0J5SFFuUThCZF9scSk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgLy8kQnZqT2psYWpvYUhfZFFsRGpRUl9CeUhReVUgPSAkSThRV0ZhOGItPm5Ick1FX0p2ak9qbGFqb2FISnlIUV82UjU4YUgoJGRscSwgJGRRbERqUVJfQnlIUW5ROEJkX2xxVSk7CiAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkUThhSF9CeUhRblE4QmRbJ1E4YUhfclJkSCddID09IC1LKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRseV9lbEhRalFMZVIgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfbHEgPSAkUThhSF9CeUhRblE4QmRbJ0J5SFFfblE4QmRfbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRaRWp5ckhRID0gdkhiIGx2cUh1X0RqeXJIUSgkcW8pOwogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfcUhyamxheSA9ICRaRWp5ckhRLT5uSHJadnFIdTNsSGFxXzZSWnEoJEZsSGFxX2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEZsSGFxX3ZqREggPSAkRmxIYXFfcUhyamxheVttXVsnRmxIYXFfdmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAkbERfT2phQkhfcUhyamxheSA9ICRaRWp5ckhRLT5uSHJFanlySFEzbEhhcV92akRIKCRsRF9scSwgJGxEX1FscSwgJ2xEX0ZsSGFxXycgLiAkRmxIYXFfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfT2phQkggPSAkbERfT2phQkhfcUhyamxheVttXVsnbERfRmxIYXFfJyAuICRGbEhhcV9scV07CgogICAgICAgICAgICAgICAgICAgICAgICAkeUhMOHZxalFSX0J5SFFuUThCZF9sdkY4ID0gJEp5SFEtPm5Ickp5SFEyUThCZF9vUnZqREgoJEZsSGFxX09qYUJIKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHlITDh2cWpRUl9CeUhRblE4QmQgPSAkeUhMOHZxalFSX0J5SFFuUThCZF9sdkY4W21dWyd2akRIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICR5SEw4dnFqUVJfQnlIUW5ROEJkX2xxID0gJHlITDh2cWpRUl9CeUhRblE4QmRfbHZGOFttXVsnbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRqT2psYWpvYUhfeUhMOHZxalFSX0J5SFF5ID0gJEk4UVdGYThiLT5uSHJKeUhReV9KeUhRMlE4QmRUbEhRalFMZVIoJHlITDh2cWpRUl9CeUhRblE4QmRfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyRCdmpPamxham9hSF95SEw4dnFqUVJfQnlIUXlVID0gJEk4UVdGYThiLT5uSHJNRV9KdmpPamxham9hSEp5SFFfNlI1OGFIKCRkbHEsICR5SEw4dnFqUVJfQnlIUW5ROEJkX2xxVSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxGICgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSA9PSBVIHx8ICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddID09IFUpIHsKCiAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRqT2psYWpvYUhfZFFsRGpRUl9CeUhReSkgPiBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX3FIYUhuanJIID0gbTsKICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKEw4QnZyKCRqT2psYWpvYUhfeUhMOHZxalFSX0J5SFF5KSA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfcUhhSG5qckggPSBVOwogICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoTDhCdnIoJGpPamxham9hSF95SEw4dnFqUVJfQnlIUXkpIDw9IG0gJiYgTDhCdnIoJGpPamxham9hSF9kUWxEalFSX0J5SFF5KSA8PSBtKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9xSGFIbmpySCA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICR5SEw4dnFqUVJfcUhhSG5qckggPSBVOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSBVQykgewogICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBIYXlIIHsKLy9sRiAoTDhCdnIoJGpPamxham9hSF9kUWxEalFSX0J5SFF5KSA+IEw4QnZyKCRCdmpPamxham9hSF9kUWxEalFSX0J5SFF5KSkgewogICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkak9qbGFqb2FIX2RRbERqUVJfQnlIUXkpID4gbSkgewovL2RRbHZyX1EoalFRalJfTDhhQkR2KCRqT2psYWpvYUhfZFFsRGpRUl9CeUhReSwgJ2xxJykpOwovL0hMZTggJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGxGIChIRGRyUigkbHlfZWxIUWpRTGVSKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfbHFfalFRID0galFRalJfTDhhQkR2KCRqT2psYWpvYUhfZFFsRGpRUl9CeUhReSwgJ2xxJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9scV9qUVEgPSBqUVFqUl9MOGFCRHYoJGpPamxham9hSF9kUWxEalFSX0J5SFF5LCAnQnlIUV9scScpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRXSFIgPSBqUVFqUl95SGpRTGUoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10sICRkUWxEalFSX2xxX2pRUSk7CgovL0hMZTggJy8nLiRXSFI7CiAgICAgICAgICAgICAgICAgICAgICAgIGxGIChseV92QkRIUWxMKCRXSFIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyRkUWxEalFSX3FIYUhuanJIID0gbTsKLy9ITGU4ICcvJy4keXJIZF9qTExIeXk7Ci8vfSBIYXlIIGxGIChMOEJ2cigkak9qbGFqb2FIX3lITDh2cWpRUl9CeUhReSkgPiBMOEJ2cigkQnZqT2psYWpvYUhfeUhMOHZxalFSX0J5SFF5KSkgewogICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoTDhCdnIoJGpPamxham9hSF95SEw4dnFqUVJfQnlIUXkpID4gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9xSGFIbmpySCA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICR5SEw4dnFqUVJfbHFfalFRID0galFRalJfTDhhQkR2KCRqT2psYWpvYUhfeUhMOHZxalFSX0J5SFF5LCAnbHEnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRXSFIgPSBqUVFqUl95SGpRTGUoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10sICR5SEw4dnFqUVJfbHFfalFRKTsKICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGx5X3ZCREhRbEwoJFdIUikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGIChMOEJ2cigkak9qbGFqb2FIX3lITDh2cWpRUl9CeUhReSkgPD0gbSAmJiBMOEJ2cigkak9qbGFqb2FIX2RRbERqUVJfQnlIUXkpIDw9IG0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX3FIYUhuanJIID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgJHlITDh2cWpRUl9xSGFIbmpySCA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSA9PSAkb0JsYXFIUV9xSHJqbGF5W21dWydiOFFXRmE4Yl9EanZqbkhRJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy9ITGU4ICR5ckhkX2pMTEh5eTsKLy9kUWx2cl9RKCRibERfcUhyamxheSk7CiAgICAgICAgICAgICAgICAkYmxEX1FROGFIX0J5SFF5ID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfbERfQVE4YUh5XzZSNk9scTVacSgkbERfbHEsICRsRF9RbHEsICRvT2xxKTsKICAgICAgICAgICAgICAgIC8vZFFsdnJfUSgkYmxEX1FROGFIX0J5SFF5KTsKICAgICAgICAgICAgICAgICRibERfUVE4YUhfQnlIUXlfYWx5ciA9IGpRUWpSX0w4YUJEdigkYmxEX1FROGFIX0J5SFF5LCAnQnlIUV9scScpOwoKICAgICAgICAgICAgICAgIGxGICgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSA9PSBVIHx8ICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddID09IFUpIHsKCiAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRqT2psYWpvYUhfZFFsRGpRUl9CeUhReSkgPiBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX3FIYUhuanJIID0gbTsKICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKEw4QnZyKCRqT2psYWpvYUhfeUhMOHZxalFSX0J5SFF5KSA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfcUhhSG5qckggPSBVOwogICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoTDhCdnIoJGpPamxham9hSF95SEw4dnFqUVJfQnlIUXkpIDw9IG0gJiYgTDhCdnIoJGpPamxham9hSF9kUWxEalFSX0J5SFF5KSA8PSBtKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9xSGFIbmpySCA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICR5SEw4dnFqUVJfcUhhSG5qckggPSBVOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSBtKSB7IC8vNEh2cWx2bgogICAgICAgICAgICAgICAgICAgICAgICBsRiAoJG9PamFCSF9xSHJqbGF5W21dWydkUThMSHl5SHFfQnlIUSddID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJEZsUXlyX2pROGFIX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9sRF9BUThhSHlfNlI0Nk9scTVacV9jRkZ5SHIzbFF5cigkbERfbHEsICRsRF9RbHEsICRvT2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqYVFIanFSX2RROExIeXlIcV9CeUhRX2x2RjggPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfVmpySHlySjJROEJkNVpNKCRibERfcUhyamxheVttXVsnb0JsYXFIUV9scSddLCAkYmxEX3FIcmpsYXlbbV1bJ1FITDhRcV95SHJfbHEnXSwgJGJsRF9xSHJqbGF5W21dWydqX0J5SFFfblE4QmQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRqYVFIanFSX2RROExIeXlIcV9CeUhRX2x2RjhbbV1bJ0xRSGpySHFfb1InXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qYVFIanFSX2RROExIeXlIcV9CeUhRID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsRiAoJGJsRF9xSHJqbGF5W21dWydqX3lyanJCeSddID09ICdnJykgeyAvLzVIRkZIUQogICAgICAgICAgICAgICAgICAgICAgICBsRiAoJG9PamFCSF9xSHJqbGF5W21dWydkUThMSHl5SHFfQnlIUSddID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbFF5cl9qUThhSF9sdkY4ID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfbERfQVE4YUh5XzZSNDZPbHE1WnFfY0ZGeUhyM2xReXIoJGxEX2xxLCAkbERfUWxxLCAkb09scSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkRmxReXJfalE4YUhfbHZGOFttXVsnQnlIUV9scSddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgfSBIYXlIbEYgKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddID09ICRvQmxhcUhRX3FIcmpsYXlbbV1bJ2I4UVdGYThiX0RqdmpuSFEnXSkgewogICAgICAgICAgICAgICAgICAgIGxGICgkYmxEX3FIcmpsYXlbbV1bJ2pfeXJqckJ5J10gPT0gbSkgeyAvLzRIdnFsdm4KICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvT2phQkhfcUhyamxheVttXVsnZFE4TEh5eUhxX0J5SFEnXSA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRGbFF5cl9qUThhSF9sdkY4ID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfbERfQVE4YUh5XzZSNDZPbHE1WnFfY0ZGeUhyM2xReXIoJGxEX2xxLCAkbERfUWxxLCAkb09scSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamFRSGpxUl9kUThMSHl5SHFfQnlIUV9sdkY4ID0gJEk4UVdGYThiLT5uSHJfSVpFOXJqckJ5X1Zqckh5ckoyUThCZDVaTSgkYmxEX3FIcmpsYXlbbV1bJ29CbGFxSFFfbHEnXSwgJGJsRF9xSHJqbGF5W21dWydRSEw4UXFfeUhyX2xxJ10sICRibERfcUhyamxheVttXVsnal9CeUhRX25ROEJkJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkamFRSGpxUl9kUThMSHl5SHFfQnlIUV9sdkY4W21dWydMUUhqckhxX29SJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfamFRSGpxUl9kUThMSHl5SHFfQnlIUSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSAnZycpIHsgLy81SEZGSFEKICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvT2phQkhfcUhyamxheVttXVsnZFE4TEh5eUhxX0J5SFEnXSA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmxReXJfalE4YUhfbHZGOCA9ICRJNkJsYXFIUS0+bkhyX2I4UVdGYThiX2xEX0FROGFIeV82UjQ2T2xxNVpxX2NGRnlIcjNsUXlyKCRsRF9scSwgJGxEX1FscSwgJG9PbHEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJEZsUXlyX2pROGFIX2x2RjhbbV1bJ0J5SFFfbHEnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gVTsKICAgICAgICAgICAgICAgIH0gSGF5SCB7CgogICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkak9qbGFqb2FIX2RRbERqUVJfQnlIUXkpID4gbSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEhEZHJSKCRseV9lbEhRalFMZVIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9scV9qUVEgPSBqUVFqUl9MOGFCRHYoJGpPamxham9hSF9kUWxEalFSX0J5SFF5LCAnbHEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX2xxX2pRUSA9IGpRUWpSX0w4YUJEdigkak9qbGFqb2FIX2RRbERqUVJfQnlIUXksICdCeUhRX2xxJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJFdIUiA9IGpRUWpSX3lIalFMZSgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJGRRbERqUVJfbHFfalFRKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGxGIChseV92QkRIUWxMKCRXSFIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoTDhCdnIoJGpPamxham9hSF95SEw4dnFqUVJfQnlIUXkpID4gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9xSGFIbmpySCA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICR5SEw4dnFqUVJfbHFfalFRID0galFRalJfTDhhQkR2KCRqT2psYWpvYUhfeUhMOHZxalFSX0J5SFF5LCAnbHEnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRXSFIgPSBqUVFqUl95SGpRTGUoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10sICR5SEw4dnFqUVJfbHFfalFRKTsKICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGx5X3ZCREhRbEwoJFdIUikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGIChMOEJ2cigkak9qbGFqb2FIX3lITDh2cWpRUl9CeUhReSkgPD0gbSAmJiBMOEJ2cigkak9qbGFqb2FIX2RRbERqUVJfQnlIUXkpIDw9IG0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX3FIYUhuanJIID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgJHlITDh2cWpRUl9xSGFIbmpySCA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSA9PSAkb0JsYXFIUV9xSHJqbGF5W21dWydiOFFXRmE4Yl9EanZqbkhRJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgbEYgKCRMX0J5SFFfUUhGSFFRSHEgPT0gJ1UnICYmICRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSAneicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICB9CgovL0hMZTggJHlySGRfakxMSHl5OwovL0hMZTggTDhCdnIoJGJsRF9RUThhSF9CeUhReSk7Ci8vSExlOCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXTsKLy9kUWx2cl9RKCRibERfUVE4YUhfQnlIUXlfYWx5cik7CiAgICAgICAgICAgICAgICAgICAgLy9kUWx2cl9RKCRibERfUVE4YUhfQnlIUXkpOwogICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkYmxEX1FROGFIX0J5SFF5KSA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGx2X2pRUWpSKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddLCAkYmxEX1FROGFIX0J5SFF5X2FseXIpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSAnZycpIHsgLy81SEZGSFEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10gPT0gJGJsRF9xSHJqbGF5W21dWydqX0J5SFFfblE4QmQnXSB8fCAoJG9CbGFxSFFfcUhyamxheVttXVsnYjhRV0ZhOGJfclJkSCddID09IEsgKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvT2phQkhfcUhyamxheVttXVsnZFE4TEh5eUhxX0J5SFEnXSA9PSBVKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZsUXlyX2pROGFIX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9sRF9BUThhSHlfNlI0Nk9scTVacV9jRkZ5SHIzbFF5cigkbERfbHEsICRsRF9RbHEsICRvT2xxKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJG9CbGFxSFFfcUhyamxheVttXVsnYjhRV0ZhOGJfclJkSCddID09IEspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmxReXJfalE4YUhfbHZGOCA9ICRJNkJsYXFIUS0+bkhyX2I4UVdGYThiX2xEX0FROGFIeV82UjQ2T2xxNVpxX2NGRnlIcjNsUXlyX0p5SFE2anlIKCRsRF9scSwgJGxEX1FscSwgJG9PbHEsICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJEZsUXlyX2pROGFIX2x2RjhbbV1bJ0J5SFFfbHEnXSA9PSAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfcUhhSG5qckhxX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfcUhhSG5qckhxX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAkeXJIZF9qTExIeXkgPSBVOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbFF5cl9qUThhSF9sdkY4ID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfbERfQVE4YUh5XzZSNDZPbHE1WnFfY0ZGeUhyM2xReXIoJGxEX2xxLCAkbERfUWxxLCAkb09scSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvQmxhcUhRX3FIcmpsYXlbbV1bJ2I4UVdGYThiX3JSZEgnXSA9PSBLKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZsUXlyX2pROGFIX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9sRF9BUThhSHlfNlI0Nk9scTVacV9jRkZ5SHIzbFF5cl9KeUhRNmp5SCgkbERfbHEsICRsRF9RbHEsICRvT2xxLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRGbFF5cl9qUThhSF9sdkY4W21dWydCeUhRX2xxJ10gPT0gJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3FIYUhuanJIcV9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3FIYUhuanJIcV9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfQnlIUV9RSEZIUVFIcSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3FIYUhuanJIcV9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUhsRiAoJGRRSE9feXJIZF95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VtJykgeyAvL0FkZFE4T0g9Pkp5SFEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3FIYUhuanJIcV9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSAnVU4nKSB7IC8vTUhhSG5qckgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3FIYUhuanJIcV9yOF9CeUhRID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSAnVXonKSB7IC8vQXl5bG52SHEgcjggQnlIUQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfcUhhSG5qckhxX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2p5eWxudkhxX3I4X0J5SFEgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUhsRiAoJGJsRF9xSHJqbGF5W21dWydqX3lyanJCeSddID09IG0pIHsgLy80SHZxbHZuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvT2phQkhfcUhyamxheVttXVsnZFE4TEh5eUhxX0J5SFEnXSA9PSBVKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJEZsUXlyX3lySGQgPT0gVSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZsUXlyX2pROGFIX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9sRF9BUThhSHlfNlI0Nk9scTVacV9jRkZ5SHIzbFF5cigkbERfbHEsICRsRF9RbHEsICRvT2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqYVFIanFSX2RROExIeXlIcV9CeUhRX2xxID0gJEZsUXlyX2pROGFIX2x2RjhbbV1bJ0J5SFFfbHEnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqYVFIanFSX2RROExIeXlIcV9CeUhRX2x2RjggPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfVmpySHlySjJROEJkNVpNKCRibERfcUhyamxheVttXVsnb0JsYXFIUV9scSddLCAkYmxEX3FIcmpsYXlbbV1bJ1FITDhRcV95SHJfbHEnXSwgJGJsRF9xSHJqbGF5W21dWydqX0J5SFFfblE4QmQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamFRSGpxUl9kUThMSHl5SHFfQnlIUV9scSA9ICRqYVFIanFSX2RROExIeXlIcV9CeUhRX2x2RjhbbV1bJ0xRSGpySHFfb1InXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRqYVFIanFSX2RROExIeXlIcV9CeUhRX2xxID09ICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qYVFIanFSX2RROExIeXlIcV9CeUhRID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfamRkUThPSF9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3FIYUhuanJIcV9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qYVFIanFSX2RROExIeXlIcV9CeUhRID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkb0JsYXFIUV9xSHJqbGF5W21dWydiOFFXRmE4Yl9yUmRIJ10gPT0gSykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfamFRSGpxUl9kUThMSHl5SHFfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3FIYUhuanJIcV9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfQnlIUV9RSEZIUVFIcSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIbEYgKEhEZHJSKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSkpIHsgLy81SE9IUXlIIDVIN0hMckhxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfamRkUThPSF9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfQnlIUV9RSEZIUVFIcSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICghbHZfalFRalIoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10sICRibERfUVE4YUhfQnlIUXlfYWx5cikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGRRSE9feXJIZF95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VtJykgeyAvL0FkZFE4T0g9Pkp5SFEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10gPT0gVSB8fCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSA9PSBLIHx8ICRvQmxhcUhRX3FIcmpsYXlbbV1bJ2I4UVdGYThiX0RqdmpuSFEnXSA9PSAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSAnVU4nKSB7IC8vTUhhSG5qckgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10gPT0gVSB8fCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSA9PSBLIHx8ICRvQmxhcUhRX3FIcmpsYXlbbV1bJ2I4UVdGYThiX0RqdmpuSFEnXSA9PSAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGJsRF9xSHJqbGF5W21dWydqX3lyanJCeSddID09ICdnJykgeyAvLzVIRkhRUUhxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddID09ICRibERfcUhyamxheVttXVsnal9CeUhRX25ROEJkJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfcUhhSG5qckhxX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfcUhhSG5qckhxX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSA9PSBtKSB7IC8vNEh2cWx2bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSExlOCAkb09qYUJIX3FIcmpsYXlbbV1bJ2RROExIeXlIcV9CeUhRJ10uJyMnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkb09qYUJIX3FIcmpsYXlbbV1bJ2RROExIeXlIcV9CeUhRJ10gPT0gVSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRGbFF5cl95ckhkID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbFF5cl9qUThhSF9sdkY4ID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfbERfQVE4YUh5XzZSNDZPbHE1WnFfY0ZGeUhyM2xReXIoJGxEX2xxLCAkbERfUWxxLCAkb09scSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamFRSGpxUl9kUThMSHl5SHFfQnlIUV9scSA9ICRGbFF5cl9qUThhSF9sdkY4W21dWydCeUhRX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamFRSGpxUl9kUThMSHl5SHFfQnlIUV9sdkY4ID0gJEk4UVdGYThiLT5uSHJfSVpFOXJqckJ5X1Zqckh5ckoyUThCZDVaTSgkYmxEX3FIcmpsYXlbbV1bJ29CbGFxSFFfbHEnXSwgJGJsRF9xSHJqbGF5W21dWydRSEw4UXFfeUhyX2xxJ10sICRibERfcUhyamxheVttXVsnal9CeUhRX25ROEJkJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGphUUhqcVJfZFE4TEh5eUhxX0J5SFFfbHEgPSAkamFRSGpxUl9kUThMSHl5SHFfQnlIUV9sdkY4W21dWydMUUhqckhxX29SJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ITGU4ICJAIi4kYmxEX2xxLidAJy4kamFRSGpxUl9kUThMSHl5SHFfQnlIUV9scSAuJz09Jy4gJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkamFRSGpxUl9kUThMSHl5SHFfQnlIUV9scSA9PSAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfamFRSGpxUl9kUThMSHl5SHFfQnlIUSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvQmxhcUhRX3FIcmpsYXlbbV1bJ2I4UVdGYThiX3JSZEgnXSA9PSBLKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2phUUhqcVJfZFE4TEh5eUhxX0J5SFEgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfQnlIUV9RSEZIUVFIcSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfcUhhSG5qckhxX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2phUUhqcVJfZFE4TEh5eUhxX0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9qZGRROE9IX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX0J5SFFfUUhGSFFRSHEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfQnlIUV9RSEZIUVFIcSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfamRkUThPSF9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX2pkZFE4T0hfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9xSGFIbmpySHFfcjhfQnlIUSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAkTF9CeUhRX1FIRkhRUUhxID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgJExfamRkUThPSF9yOF9CeUhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgJExfcUhhSG5qckhxX3I4X0J5SFEgPSBtOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0hMZTggJExfQnlIUV9RSEZIUVFIcTsKICAgICAgICAgICAgICAgIC8vSExlOCAnTScuJHlySGRfakxMSHl5OwogICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgIC8vICAgICAgNThCcmx2bgogICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPnlIcjRRODdITHJacSgkZGxxKTsKICAgICAgICAgICAgICAgICRJNkJsYXFIUS0+eUhyNkJsYXFIUVpxKCRvbHEpOwogICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI2QmxhcUhRWWphQkhacSgkb09scSk7CiAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPnlIcndRbG5uSFF3UmRIKCdqX0YnKTsKICAgICAgICAgICAgICAgICRqRl9ROEJySF9sdkY4ID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfb0JsYXFIUV9ROEJybHZuKCk7CiAgICAgICAgICAgICAgICAkakZfclFsbm5IUV95ckhkX2pRUSA9IGpRUWpSX0w4YUJEdigkakZfUThCckhfbHZGOCwgJ3JRbG5uSFFfeXJIZCcpOwoKICAgICAgICAgICAgICAgICRJNkJsYXFIUS0+eUhyd1Fsbm5IUXdSZEgoJ1FfRicpOwogICAgICAgICAgICAgICAgJFFGX1E4QnJIX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9vQmxhcUhRX1E4QnJsdm4oKTsKICAgICAgICAgICAgICAgICRRRl9yUWxubkhRX3lySGRfalFRID0galFRalJfTDhhQkR2KCRRRl9ROEJySF9sdkY4LCAnclFsbm5IUV95ckhkJyk7CgogICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHJ3UWxubkhRd1JkSCgnUV9vJyk7CiAgICAgICAgICAgICAgICAkUW9fUThCckhfbHZGOCA9ICRJNkJsYXFIUS0+bkhyX2I4UVdGYThiX29CbGFxSFFfUThCcmx2bigpOwogICAgICAgICAgICAgICAgJFFvX3JRbG5uSFFfeXJIZF9qUVEgPSBqUVFqUl9MOGFCRHYoJFFvX1E4QnJIX2x2RjgsICdyUWxubkhRX3lySGQnKTsKCgogICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgIC8vICAgICAgTVJ2akRsTCAzOFFEeQogICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICRJNkJsYXFIUS0+eUhyNFE4N0hMclpxKCRkbHEpOwogICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI2QmxhcUhRWnEoJG9scSk7CiAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPnlIcjZCbGFxSFFZamFCSFpxKCRvT2xxKTsKICAgICAgICAgICAgICAgIC8vJEk2QmxhcUhRLT55SHJJbERacSgkYmxEX2xxKTsKICAgICAgICAgICAgICAgIC8vJEk2QmxhcUhRLT55SHI1SEw4UXE5SHJacSgkbERfUWxxKTsKCiAgICAgICAgICAgICAgICAkeXJIZF9xUnZqRGxMX0Y4UUR5ID0gJEk2QmxhcUhRLT5uSHJfSTZCbGFxSFFfcUY4UURfNk9scSgpOwogICAgICAgICAgICAgICAgJHY4X3lySGRfcVJ2akRsTF9GOFFEeSA9IEw4QnZyKCR5ckhkX3FSdmpEbExfRjhRRHkpOwoKICAgICAgICAgICAgICAgICRkUUhPbDhCeV9xUnZqRGxMX0Y4UUR5ID0gJEk2QmxhcUhRLT5uSHJfSTZCbGFxSFFfcUY4UURfZFFIT2w4QnkoKTsKICAgICAgICAgICAgICAgICR2OF9kUUhPbDhCeV9xUnZqRGxMX0Y4UUR5ID0gTDhCdnIoJGRRSE9sOEJ5X3FSdmpEbExfRjhRRHkpOwoKCiAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+CiAgICAgICAgICAgICAgICAjIyMgICAgICA5cmpybEwgMzhRRHkKICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4KICAgICAgICAgICAgICAgICRJNkJsYXFIUS0+eUhyNFE4N0hMclpxKCRkbHEpOwogICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI2QmxhcUhRWnEoJG9scSk7CiAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPnlIcjZCbGFxSFFZamFCSFpxKCRvT2xxKTsKCiAgICAgICAgICAgICAgICAkeXJIZF95cmpybExfRjhRRHkgPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUV95RjhRRF82T2xxKCk7CiAgICAgICAgICAgICAgICAkdjhfeXJIZF95cmpybExfRjhRRHkgPSBMOEJ2cigkeXJIZF95cmpybExfRjhRRHkpOwoKICAgICAgICAgICAgICAgICRkUUhPbDhCeV95cmpybExfRjhRRHkgPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUV95RjhRRF9kUUhPbDhCeSgpOwogICAgICAgICAgICAgICAgJHY4X2RRSE9sOEJ5X3lyanJsTF9GOFFEeSA9IEw4QnZyKCRkUUhPbDhCeV95cmpybExfRjhRRHkpOwoKCiAgICAgICAgICAgICAgICAkWkVBOXdpNS0+eUhyNFE4N0hMclpxKCRkbHEpOwogICAgICAgICAgICAgICAgJERqeXJIUV9sdkY4ID0gJFpFQTl3aTUtPm5Iclp2cUh1RWp5ckhRNlIwakRIKCdpMDNBJyk7CiAgICAgICAgICAgICAgICBsRiAoJGx2cUh1X0RqeXJIUV9xSHJqbGF5W21dWydscSddID09ICREanlySFFfbHZGOFttXVsnbHEnXSkgewogICAgICAgICAgICAgICAgICAgICRpMDNBID0gdkhiIEh2RmooJHFvKTsKICAgICAgICAgICAgICAgICAgICAkSHZGal9xSHJqbGF5ID0gJGkwM0EtPm5Icml2RmpxSHJqbGF5XzZSNVpxKCRsRF9RbHEpOwogICAgICAgICAgICAgICAgICAgICRvbHFxSFFfcUhyamxheSA9ICRpMDNBLT5uSHI2bHFxSFFNSHJqbGF5XzZSaXZGalpxKCRIdkZqX3FIcmpsYXlbbV1bJ2xxJ10sICRsRF9RbHEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgIDwhTWNHd2s0aSBlckRhPgogICAgICAgICAgICAgICAgPGVyRGE+CiAgICAgICAgICAgICAgICAgICAgPGVIanE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxESHJqIExlalF5SHI9IkJyRi16Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPERIcmogTGVqUXlIcj0iWjljLXp6Q1AtVSIgTDh2ckh2ci13UmRIPSJySHVyL2VyRGEiPgogICAgICAgICAgICAgICAgICAgICAgICA8cmxyYUg+cUVBR3ggLSBNRTk8L3JscmFIPgogICAgICAgICAgICAgICAgICAgICAgICA8REhyaiB2akRIPSJPbEhiZDhRciIgTDh2ckh2cj0iYmxxcmU9cUhPbExILWJscXJlLCBsdmxybGphLXlMamFIPVUubSI+ICAKICAgICAgICAgICAgICAgICAgICAgICAgPERIcmogdmpESD0icUh5TFFsZHJsOHYiIEw4dnJIdnI9InFFQUd4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPERIcmogdmpESD0iakJyZThRIiBMOHZySHZyPSI5UWwgc1FseWV2anYiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPERIcmogZXJyZC1pdEJsTz0iR2pMZUgtRzh2clE4YSIgRzh2ckh2cj0idjgtTGpMZUgiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxESHJqIGVycmQtaXRCbE89IjRRam5EaiIgRzh2ckh2cj0idjgtTGpMZUgiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxESHJqIGVycmQtaXRCbE89Iml1ZGxRSHkiIEc4dnJIdnI9Im0iIC8+CgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHlyUmFIeSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9vODhyeXJRamQuTHl5IiBRSGE9InlyUmFIeWVISHIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5Lzd0QkhRUi5uUWxyckhRLkx5eSIgUUhhPSJ5clJhSHllSEhyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9vODhyeXJRamQtUUh5ZDh2eWxPSC5MeXkiIFFIYT0ieXJSYUh5ZUhIciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIFFIYT0ieXJSYUh5ZUhIciIgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9GOHZyLWpiSHk4REguTHl5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiBlUUhGPSIuLi9RSHk4QlFMSHkvRjh2ci1qYkh5OERIL0x5eS9GOHZyLWpiSHk4REguRGx2Lkx5eSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS15anY3alIgTHl5LS0tLS0tLT4KICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9MeXkvcURqTHQuTHl5IiBRSGE9InlyUmFIeWVISHIiPgogICAgICAgICAgICA8IS0tLS0tOWp2N2pSLS0tLS0tLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1bbEYgWmkgZ10+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIFFIYT0ieXJSYUh5ZUhIciIgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9GOHZyLWpiSHk4REgtbEhnLkRsdi5MeXkiPgogICAgICAgICAgICAgICAgICAgICAgICA8IVtIdnFsRl0tLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9yam9hSExhOHJlLkx5eSIgUUhhPSJ5clJhSHllSEhyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9MZTh5SHYuTHl5IiBRSGE9InlyUmFIeWVISHIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5L3lyUmFIeS5MeXkiIFFIYT0ieXJSYUh5ZUhIciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9MeXkvRkJhYUxqYUh2cWpRLkx5eSIgUUhhPSJ5clJhSHllSEhyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9GbGFIX0RqdmpuSFEuTHl5IiBRSGE9InlyUmFIeWVISHIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5Lzd0QkhRUi5MeXkiIFFIYT0ieXJSYUh5ZUhIciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIFFIYT0ieXJSYUh5ZUhIciIgclJkSD0ickh1ci9MeXkiIGVRSEY9Ii4uL1FIeThCUUxIeS9MeXkvcmxkZEhxLkx5eSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5L3liSEhyLWphSFFyLkx5eSIgUUhhPSJ5clJhSHllSEhyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVtsRiBaaSBnXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiByUmRIPSJySHVyL0x5eSIgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9sSC9sSGcuTHl5IiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8IVtIdnFsRl0tLT4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVtsRiBaaSB6XT4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiByUmRIPSJySHVyL0x5eSIgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9sSC9sSHouTHl5IiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8IVtIdnFsRl0tLT4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLVtsRiBaaSBQXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiByUmRIPSJySHVyL0x5eSIgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS9sSC9sSFAuTHl5IiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8IVtIdnFsRl0tLT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1Gak8ganZxIHI4QkxlIGxMOHZ5IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBRSGE9InllOFFyTEJyIGxMOHYiIGVRSEY9Ii4uL1FIeThCUUxIeS9sTDgvRmpPbEw4di5sTDgiPgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBRSGE9ImpkZGFILXI4QkxlLWxMOHYtZFFITDhEZDh5SHEiIHlsU0h5PSJVaGh1VWhoIiBlUUhGPSIuLi9RSHk4QlFMSHkvbEw4L2pkZGFILXI4QkxlLWxMOHYtVWhoLWRRSEw4RGQ4eUhxLmR2biI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIFFIYT0iamRkYUgtcjhCTGUtbEw4di1kUUhMOERkOHlIcSIgeWxTSHk9IlVVaHVVVWgiIGVRSEY9Ii4uL1FIeThCUUxIeS9sTDgvamRkYUgtcjhCTGUtbEw4di1VVWgtZFFITDhEZDh5SHEuZHZuIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJqZGRhSC1yOEJMZS1sTDh2LWRRSEw4RGQ4eUhxIiB5bFNIeT0iZ0t1Z0siIGVRSEY9Ii4uL1FIeThCUUxIeS9sTDgvamRkYUgtcjhCTGUtbEw4di1nSy1kUUhMOERkOHlIcS5kdm4iPgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBRSGE9ImpkZGFILXI4QkxlLWxMOHYtZFFITDhEZDh5SHEiIGVRSEY9Ii4uL1FIeThCUUxIeS9sTDgvamRkYUgtcjhCTGUtbEw4di1DZy1kUUhMOERkOHlIcS5kdm4iPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tPT09PT09PT09PT09IDdqT2p5TFFsZHIgPT09PT09PT09PT0tLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVIuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi1CbC1VLlVtLlUuTEJ5cjhELkRsdi43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvbzg4cnlyUWpkLjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9vODhybzh1Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVIueWRqUVdhbHZILjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciByUmRIPSJySHVyLzdqT2p5TFFsZHIiIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L3llaktDTi43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgclJkSD0ickh1ci83ak9qeUxRbGRyIiB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVIuN0xRUmRybDh2LlguVS5tLjd5Ij48L3lMUWxkcj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvN3RCSFFSLk9qYWxxanJILjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVIuREhyanFqcmouN3kiPjwveUxRbGRyPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9vODhyeXJRamQtRmxhSEJkYThqcS43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvakxMOFFxbDh2LnZqTy43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvN3RCSFFSLnJqbnlsdmRCci43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvTGU4eUh2Ljd0QkhRUi43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvbzg4cnlyUWpkLUw4YThRZGxMV0hRLjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9vODhyeXJRamQtcWpySHJsREhkbExXSFEuRGx2Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9xanJILjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9xanJIUWp2bkhkbExXSFEuN3kiPjwveUxRbGRyPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVIuREhyanFqcmouN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5yam9hSHk4UXJIUS5EbHYuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5yam9hSExhOHJlLjd5Ij48L3lMUWxkcj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvN3RCSFFSLkZhOHIuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5GYThyLnlIYUhMcmw4di43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvSHVManZPankuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5GYThyLmRsSC43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvN3RCSFFSLkZhOHIueXJqTFcuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5GYThyLnJsREguN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5GYThyLnI4OGFybGQuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5GYThyLlFIeWxTSC43eSI+PC95TFFsZHI+CgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5MOGFhamR5bG9hSC43eSI+PC95TFFsZHI+CgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5uUWxyckhRLjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9ybHZSX0RMSC83dEJIUVIucmx2UkRMSC43eSI+PC95TFFsZHI+CgoKICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9MQnlyOEQuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L1FIeWQ4dnEuRGx2Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9sOHktOFFsSHZyanJsOHZMZWp2bkgtRmx1Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9qN2p1X0w4REQ4dl9RSHRCSHlyLjd5Ij48L3lMUWxkcj4KCgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L1FIeWQ4dnlsT0gtcmpvYUh5Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVIucmpvYUhMYThyZS43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvN3RCSFFSLnFqcmp3am9hSHkuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L2ZIUThHYWxkbzhqUXEuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L3Fqcmp3am9hSHkubzg4cnlyUWpkLjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS93am9hSHc4OGF5Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9GQmFhTGphSHZxalEuRGx2Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS9yUmRIamVIanEuN3kiPjwveUxRbGRyPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5L3lIYUhMci5xanJqd2pvYUh5LkRsdi5MeXkiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgclJkSD0ickh1ci83ak9qeUxRbGRyIiBlUUhGPSIuLi9RSHk4QlFMSHkvN3kvcWpyandqb2FIeS55SGFITHIuRGx2Ljd5Ij48L3lMUWxkcj4KCgoKICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5L284OHJ5clFqZC15YmxyTGUuTHl5IiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L284OHJ5clFqZC15YmxyTGUuN3kiPjwveUxRbGRyPgoKCiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9MeXkvbzg4cnlyUWpkLURCYXJseUhhSExyLkx5eSIgUUhhPSJ5clJhSHllSEhyIj4gICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L284OHJ5clFqZC1EQmFybHlIYUhMci43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgclJkSD0ickh1ci83ak9qeUxRbGRyIiB5UUw9Ii4uL1FIeThCUUxIeS83eS95ZGx2dkhReS5EbHYuN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHJSZEg9InJIdXIvN2pPanlMUWxkciIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvcmxkZEhxLjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciByUmRIPSJySHVyLzdqT2p5TFFsZHIiIHlRTD0iLi4vUUh5OEJRTEh5Lzd5Lzd0QkhRUi5MODhXbEguN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHJSZEg9InJIdXIvN2pPanlMUWxkciIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvN3RCSFFSLmE4bmx2Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciByUmRIPSJySHVyLzdqT2p5TFFsZHIiIHlRTD0iLi4vUUh5OEJRTEh5Lzd5L3lySGRSLjd0QkhRUi43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIFFIYT0ieXJSYUh5ZUhIciIgIHlRTD0iLi4vUUh5OEJRTEh5L2RhQm5sdnkvN3lyUUhIL3FseXIvcmVIREh5L3FIRmpCYXIveXJSYUhfclFISC5MeXkiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgIHJSZEg9InJIdXIvN2pPanlMUWxkciIgZVFIRj0iLi4vUUh5OEJRTEh5L2RhQm5sdnkvN3lyUUhIL3FseXIvN3lyUUhILkRsdi43eSI+PC95TFFsZHI+CgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBlUUhGPSIuLi9RSHk4QlFMSHkvZGFCbmx2eS9vODhyeXJRamQteWJsckxlL3E4THkvTHl5L2VsbmVhbG5lci5MeXkiIFFIYT0ieXJSYUh5ZUhIciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L284OHJ5clFqZC15YmxyTGUvcWx5ci9MeXkvbzg4cnlyUWpkWC9vODhyeXJRamQteWJsckxlLkx5eSIgUUhhPSJ5clJhSHllSEhyIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvZGFCbmx2eS9vODhyeXJRamQteWJsckxlL3E4THkvN3kvZWxuZWFsbmVyLjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L284OHJ5clFqZC15YmxyTGUvcWx5ci83eS9vODhyeXJRamQteWJsckxlLjd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUwgPSAiLi4vUUh5OEJRTEh5L2RhQm5sdnkvbzg4cnlyUWpkLXlibHJMZS9xOEx5Lzd5L0RqbHYuN3kiID48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L1RsbmVMZWpRcnkvN3kvZWxuZUxlalFyeS43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvZGFCbmx2eS9UbG5lTGVqUXJ5Lzd5L0Q4cUJhSHkvcVFsYWFxOGJ2Ljd5Ij48L3lMUWxkcj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiBlUUhGPSIuLi9RSHk4QlFMSHkvZGFCbmx2eS83eTRqdkhhLVguaC5VL3k4QlFMSC83dEJIUVIuN3lkanZIYS5MeXkiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciByUmRIPSJySHVyLzdqT2p5TFFsZHIiIHlRTD0iLi4vUUh5OEJRTEh5L2RhQm5sdnkvN3k0anZIYS1YLmguVS95OEJRTEgvN3RCSFFSLjd5ZGp2SGEuRGx2Ljd5Ij48L3lMUWxkcj4KCgogICAgICAgICAgICAgICAgICAgICAgICA8YWx2VyBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5L2FvUi1Eamx2Lkx5eSIgUUhhPSJ5clJhSHllSEhyIiByUmRIPSJySHVyL0x5eSIgREhxbGo9InlMUUhIdiIgTGVqUXlIcj0iQnJGLXoiID4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgZVFIRj0iLi4vUUh5OEJRTEh5L0x5eS83dEJIUVItYWpvSGFqQnJSLkx5eSIgUUhhPSJ5clJhSHllSEhyIiByUmRIPSJySHVyL0x5eSIgREhxbGo9InlMUUhIdiIgTGVqUXlIcj0iQnJGLXoiID4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVItYWpvSGFqQnJSLjd5Ij48L3lMUWxkcj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L2xMZUhMVy95V2x2eS95dEJqUUgvUUhxLkx5eSIgUUhhPSJ5clJhSHllSEhyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgZVFIRj0iLi4vUUh5OEJRTEh5L2RhQm5sdnkvbExlSExXL3lXbHZ5L3l0QmpRSC9uUUhIdi5MeXkiIFFIYT0ieXJSYUh5ZUhIciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L2xMZUhMVy95V2x2eS95dEJqUUgvb2FCSC5MeXkiIFFIYT0ieXJSYUh5ZUhIciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L2xMZUhMVy95V2x2eS9GYWpyL1FIcS5MeXkiIFFIYT0ieXJSYUh5ZUhIciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhbHZXIGVRSEY9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L2xMZUhMVy95V2x2eS9GYWpyL25RSEh2Lkx5eSIgUUhhPSJ5clJhSHllSEhyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHlMUWxkciB5UUw9Ii4uL1FIeThCUUxIeS9kYUJubHZ5L2xMZUhMVy9sTGVITFcuN3k/Tz1VLm0uSyI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5clJhSCByUmRIPSJySHVyL0x5eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuN3k0anZIYS1ybHJhSCBlVSwgZUssIGVYIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHZILWVIbG5lcjogS21kdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgPC95clJhSD4KICAgICAgICAgICAgICAgICAgICAgICAgPGFsdlcgUUhhPSJ5clJhSHllSEhyIiBlUUhGPSIuLi9RSHk4QlFMSHkvTHl5L3I4V0h2LWx2ZEJyLUZqTEhvODhXLkx5eSIgclJkSD0ickh1ci9MeXkiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgclJkSD0ickh1ci83ak9qeUxRbGRyIiB5UUw9Ii4uL1FIeThCUUxIeS83eS83dEJIUVIucjhXSHZsdmRCci43eSI+PC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHlRTD0iLi4vUUh5OEJRTEh5L2RhQm5sdnkvRmx2SEJkYThqcUhRLVguZy5VL2RqVzguN3kiPjwveUxRbGRyPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHlyUmFIPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yci1xUThkcThidi1ESHZCIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHFyZTogVW1tJTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEalFubHYtcjhkOiBLZHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGpxcWx2bjogQ2R1IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2pMV25ROEJ2cS1MOGE4UTogI0ZGRjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOFFxSFE6IFVkdSB5OGFscSAjTExMOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84UXFIUTogVWR1IHk4YWxxIFFub2oobSxtLG0sLkspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvOFFxSFEtUWxuZXItYmxxcmU6IEtkdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbzhRcUhRLW84cnI4RC1ibHFyZTogS2R1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1iSG9XbHItbzhRcUhRLVFqcWxCeTogTmR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EOFMtbzhRcUhRLVFqcWxCeTogTmR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84UXFIUS1RanFsQnk6IE5kdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtYkhvV2xyLW84dS15ZWpxOGI6IG0gQ2R1IFVtZHUgUW5vaihtLG0sbSwuSyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLUQ4Uy1vOHUteWVqcThiOiBtIENkdSBVbWR1IFFub2oobSxtLG0sLkspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84dS15ZWpxOGI6IG0gQ2R1IFVtZHUgUW5vaihtLG0sbSwuSyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWJIb1dsci1vakxXblE4QnZxLUxhbGQ6IGRqcXFsdm4tbzh1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EOFMtb2pMV25ROEJ2cS1MYWxkOiBkanFxbHZuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9qTFduUThCdnEtTGFsZDogZGpxcWx2bi1vOHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJyLXlCbm5IeXJsOHYgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFseWRhalI6IG9hOExXOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRqcXFsdm46IFhkdSBLbWR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yci15Qm5uSHlybDh2LnJyLWx5LUJ2cUhRLUxCUXk4USB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDhhOFE6ICNGRkY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2pMV25ROEJ2cS1MOGE4UTogI21telVMSzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvakxXblE4QnZxLWxEam5IOiAtRDhTLWFsdkhqUS1uUWpxbEh2cihyOGQsICNtbXp6TEwsICNtbWdnb1gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9qTFduUThCdnEtbERqbkg6IC1iSG9XbHItblFqcWxIdnIoYWx2SGpRLCBtIG0sIG0gVW1tJSwgRlE4RCgjbW16ekxMKSwgcjgoI21tZ2dvWCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9qTFduUThCdnEtbERqbkg6IC1iSG9XbHItYWx2SGpRLW5RanFsSHZyKHI4ZCwgI21tenpMTCwgI21tZ2dvWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2pMV25ROEJ2cS1sRGpuSDogLTgtYWx2SGpRLW5RanFsSHZyKHI4ZCwgI21tenpMTCwgI21tZ2dvWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2pMV25ROEJ2cS1sRGpuSDogYWx2SGpRLW5RanFsSHZyKHI4IG84cnI4RCwgI21tenpMTCwgI21tZ2dvWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2pMV25ROEJ2cS1RSGRIanI6IFFIZEhqci11OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXJIUTogZFE4bmxxOk1wWkRqbkh3UWp2eUY4UUQuRWxMUTh5OEZyLm5RanFsSHZyKHlyalFyRzhhOFF5clE9JyNGRm1tenpMTCcsIEh2cUc4YThReXJRPScjRkZtbWdnb1gnLCAyUWpxbEh2cndSZEg9bSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucnIteUJubkh5cmw4di5yci1seS1CdnFIUS1MQlF5OFEgaiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDhhOFE6ICNGRkY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJyLXlCbm5IeXJsOHYgZCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGpRbmx2OiBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJyLWVsdnJ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxxcmU6IGhnbWR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vQnJyOHZvYWx2V3sKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2pMV25ROEJ2cS1MOGE4UTogI0xtUHpDWDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOFFxSFE6IEtkdSB5OGFscTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOHZyLXlsU0g6IFVVZHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDhhOFE6ICNGRkY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzhRcUhRLVFqcWxCeTogQ2R1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERqUW5sdi1yOGQ6IC1LZHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubzg4cm84dSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84UXFIUTogI21tbSBLZHUgeThhbHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgPC95clJhSD4KICAgICAgICAgICAgICAgICAgICAgICAgIDx5TFFsZHIgeVFMPSIuLi9RSHk4QlFMSHkvN3kvbzg4cm84dV9ZTi5tLm0uN3kiPjwveUxRbGRyPgogICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHY4dkxIPSI8P2RlZCBITGU4ICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUXY4dkxIJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLlFIanFSKEZCdkxybDh2ICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIub0Jycjh2b2FsdlciKS44digiTGFsTFciLCBGQnZMcmw4dihIT0h2cikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNEOHFqYV95cmpyQnlfcWp5ZW84alFxJykuRDhxamEoJ3I4bm5hSCcpOwogICAgLypvODhybzh1Lkw4dkZsUUQoewogICAgICAgICAgTGE4eUg2QnJyOHY6IEZqYXlILAogICAgICAgICAgICBESHl5am5IOiAiTTggTGVITFcgcmVqciBqYWEgcmVIIHE4TEJESHZyeSBCZGE4anFIcSBvUiBSOEIgalFIIGx2cUh1SHEgb0hGOFFIIDlsbnYtY0ZGPyIsCiAgICAgICAgICAgIG9CcnI4dnk6IHsKICAgICAgICAgICAgICAgIExqdkxIYTogewogICAgICAgICAgICAgICAgICAgIGFqb0hhOiAiR2p2TEhhIiwKICAgICAgICAgICAgICAgICAgICBMYWp5eTBqREg6ICJvcnYtcUhGakJhciIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBMOHZGbFFEOiB7CiAgICAgICAgICAgICAgICAgICAgYWpvSGE6ICJMOHZGbFFEIiwKICAgICAgICAgICAgICAgICAgICBMYWp5eTBqREg6ICJvcnYteUJMTEh5eSAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIExqYWFvakxXOiBGQnZMcmw4dihRSHlCYXIpIHsKICAgICAgICAgICAgICAgIGxGIChRSHlCYXIpIHsKICAgICAgICAgICAgICAgICAkKCcjRDhxamFfeXJqckJ5X3FqeWVvOGpRcScpLkQ4cWphKCdyOG5uYUgnKTsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICB9KTsqLwogIH0pOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAkKHE4TEJESHZyKS44digiTGFsTFciLCAiLm9CcnI4dm9hbHZXIiwgRkJ2THJsOHYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgSC55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgSC55cjhkWkRESHFsanJINFE4ZGpuanJsOHYoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIE9qUSBMRlFEID0gbzg4cm84dS5MOHZGbFFEKCJNOCBMZUhMVyByZWpyIGphYSByZUggcThMQkRIdnJ5IEJkYThqcUhxIG9SIFI4QiBqUUggbHZxSHVIcSBvSEY4UUggOWxudi1jRkY/IiwgRkJ2THJsOHYgKFFIeUJhcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgbEYgKFFIeUJhcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgJCgnI0Q4cWphX3lyanJCeV9xanllbzhqUXEnKS5EOHFqYSgncjhubmFIJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9KTsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCdMYWxMVycsICcub3J2X09IdnE4UV9IcWxyX0Y4UUQnLCBGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBRSEYgPSAkKHJlbHkpLkxhOHlIeXIoJ2onKS5kUThkKCdRSGEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGpRSHZyLmJsdnE4Yi5hOExqcmw4diA9IFFIRjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3lIYUhMcmphYSIpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLkxqeUgnKS5kUThkKCdMZUhMV0hxJywgcmVseS5MZUhMV0hxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuTGp5SCIpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCQoIi5ManlIIikuYUh2bnJlID09ICQoIi5ManlIOkxlSExXSHEiKS5hSHZucmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiN5SGFITHJqYWEiKS5kUThkKCJMZUhMV0hxIiwgIkxlSExXSHEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiN5SGFITHJqYWEiKS5kUThkKCJMZUhMV0hxIiwgRmpheUgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIERSZGp2SGEgPSAndjhfZGp2JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIucjgtYWpvSGFqQnJSIikuYWpvSGFqQnJSKHt5akRIX2JscXJlOiByUUJIfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLnI4LWFqb0hhakJyUi1sTDh2IikuYWpvSGFqQnJSKHtham9IYTogRmpheUh9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuTGVTdi15SGFITHIiKS5MZTh5SHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuTGVTdi15SGFITHItcUh5SGFITHIiKS5MZTh5SHYoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYWE4Yl95bHZuYUhfcUh5SGFITHI6IHJRQkgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuTGVITFdfRicpLmxHZUhMVyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlSExXbzh1R2FqeXk6ICdsTGVITFdvOHVfeXRCalFILVFIcScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFqcWw4R2FqeXk6ICdsUWpxbDhfeXRCalFILVFIcScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx2TFFIanlIQVFIajogJ0ttJScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuTGVITFdfeXJqckJ5TGVXJykubEdlSExXKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVITFdvOHVHYWp5eTogJ2xMZUhMV284dV95dEJqUUgtb2FCSCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFqcWw4R2FqeXk6ICdsUWpxbDhfeXRCalFILW9hQkgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdkxRSGp5SEFRSGo6ICdLbSUnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5RanFsOF9RXzhkcicpLmxHZUhMVyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlSExXbzh1R2FqeXk6ICdsTGVITFdvOHVfeXRCalFILVFIcScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFqcWw4R2FqeXk6ICdsUWpxbDhfeXRCalFILVFIcScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx2TFFIanlIQVFIajogJ0ttJScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIHdqeVcgVmx5cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoIkxhbExXIiwgIi5qX3ZIYl9yanlXX0w4RERIdnIiLCBGQnZMcmw4diAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgb09scSA9ICQoIiNvT2xxIikuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHJqeVdfbHEgPSAkKHJlbHkpLmRROGQoImxxIikueWRhbHIoJ18nKVttXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHJqeVdfTGVsYXFfbHEgPSAkKHJlbHkpLmRROGQoImxxIikueWRhbHIoJ18nKVtVXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkWkRESHFsanJINFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCQocmVseSkuZWp5R2FqeXkoJ3FseWpvYUhfanFxJykgPT0gclFCSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHFseWpvYUhfanFxID0gJ1UnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHFseWpvYUhfanFxID0gJ20nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRjg4ckhRX2Q4ZEJkX2RRbERqUVIgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogIjxvQnJyOHYgclJkSD0nb0Jycjh2Jz48L29CcnI4dj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1kUWxEalFSIG9ydi15RCBvcnZfanFxX3JqeVdfTDhEREh2ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J2ckh1cjogIiBBcXEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExqYWFvakxXOiBGQnZMcmw4diAoSE9IdnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKHFseWpvYUhfanFxID09ICdtJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnIueXI4ZDRROGRqbmpybDh2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgcmp5V19scSA9ICQoIiNyanlXX2xxIikuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSByanlXX0xlbGFxX2xxID0gJCgiI3JqeVdfTGVsYXFfbHEiKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIEJRYSA9ICcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9yanlXX0w4RERIdnJqcXEuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5qN2p1KHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESHJlOHE6ICI0Yzl3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6IEJRYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxanJqOiAkKCIjRjhRRF9yanlXX0w4RERIdnIiKS55SFFsamFsU0goKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucTh2SChGQnZMcmw4diAoRHluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5uUWxyckhRLmpxcSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJscmFIOiAnRUh5eWpuSCEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBySHVyOiBEeW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9yanlXX0w4RERIdnJhbHlyX2o3anUuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4mcmp5V19scT0nICsgcmp5V19scSArICcmcmp5V19MZWxhcV9scT0nICsgcmp5V19MZWxhcV9scSwgJ3FsT19yanlXX0w4RERIdnJ5X2FseXInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxySEQ6ICI8b0Jycjh2IHJSZEg9J29CcnI4dic+PC9vQnJyOHY+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2cjogN3k0anZIYS5IT3I5cmpRciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnZMYWp5eTogIm9ydiBvcnYtcWp2bkhRIG9ydi15RCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J2ckh1cjogIiBHYTh5SCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGphYW9qTFc6IEZCdkxybDh2IChIT0h2cikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnIucWpyai5MYTh5SCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHJvID0gJzxsIExhanl5PSJGaiBGai1CeUhRIj48L2w+PGwgTGFqeXk9IkZqIEZqLUw4biI+ICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChEUmRqdkhhICE9ICJ2OF9kanYiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUmRqdkhhLkxhOHlIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJkanZIYSA9ICQuN3k0anZIYSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyOWxTSDoge2JscXJlOiBnQ20sIGVIbG5lcjogWHptfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVIanFIUXdscmFIOiAnIHdqeVcgRzhEREh2cnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVIREg6ICdxanZuSFEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2ckE3anU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6ICcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9yanlXX0w4RERIdnJhbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JnJqeVdfbHE9JyArIHJqeVdfbHEgKyAnJnJqeVdfTGVsYXFfbHE9JyArIHJqeVdfTGVsYXFfbHEgKyAnJnFseWpvYUhfanFxPScgKyBxbHlqb2FIX2pxcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqQnI4YThqcTogclFCSAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEY4OHJIUXc4OGFvalE6IEY4OHJIUV9kOGRCZF9kUWxEalFSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJsRkdhbExXSHEiLCAiLkxhanl5X3JqeVdfTGVsYXFfT2phQkgiLCBGQnZMcmw4diAoSCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkWkRESHFsanJINFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHJqeVdfbHEgPSAkKHJlbHkpLmRROGQoIk9qYUJIIikueWRhbHIoJzonKVttXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIExlbGFxX2xxID0gJChyZWx5KS5kUThkKCJPamFCSCIpLnlkYWxyKCc6JylbVV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBsdmRCcl9yUmRIID0gJChyZWx5KS5kUThkKCJyUmRIIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBvX3JqeVdfbHEgPSAkKHJlbHkpLmpyclEoImxySERRSEYiKS55ZGFscignOicpW21dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgb09scSA9ICQocmVseSkuanJyUSgibHJIRFFIRiIpLnlkYWxyKCc6JylbVV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkKHJlbHkpLmRROGQoIkxlSExXSHEiKSA9PSByUUJIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgakxybDh2ID0gJ1FIRDhPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgakxybDh2ID0gJ2pxcSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkKHJlbHkpLmVqeUdhanl5KCJMYWp5eV9yanlXX0xlbGFxX3ZqIikgPT0gclFCSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIG9ydl9yUmRIID0gJ3ZqJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBvcnZfclJkSCA9ICdPamEnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgUWp2cSA9IHZIYiBNanJIKCkubkhyd2xESCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgQlFhID0gJy4uL2I4UVdGYThiL2JsRF9IcWxyX3JqeVdMZWxhcS5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4mb09scT0nICsgb09scSArICcmUWp2cT0nICsgUWp2cSArICcmb3J2X3JSZEg9JyArIG9ydl9yUmRIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmo3anUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhyZThxOiAiMml3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJRYTogQlFhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWpyajoge3JqeVdfbHE6IHJqeVdfbHEsIG9fcmp5V19scTogb19yanlXX2xxLCBsdmRCcl9yUmRIOiBsdmRCcl9yUmRILCBqTHJsOHY6IGpMcmw4diwgTGVsYXFfbHE6IExlbGFxX2xxfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5xOHZIKEZCdkxybDh2IChEeW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQublFscnJIUS5qcXEoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJscmFIOiAnRUh5eWpuSCEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJIdXI6IER5bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgNUh5ZDh2eWxvYUggSnlIUSBWbHlyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJMYWxMVyIsICIub3J2X0J5SFF5X2FseXIiLCBGQnZMcmw4diAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGRaRERIcWxqckg0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbHJIRFFIRiA9ICQocmVseSkuanJyUSgnbHJIRFFIRicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbHJIRHJSZEggPSAkKHJlbHkpLmpyclEoJ2xySERyUmRIJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRjg4ckhRX2Q4ZEJkX2RRbERqUVIgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogIjxvQnJyOHYgclJkSD0nb0Jycjh2Jz48L29CcnI4dj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1xanZuSFEgb3J2LXlEIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnZySHVyOiAiIEdhOHlIIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMamFhb2pMVzogRkJ2THJsOHYgKEhPSHZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci5xanJqLkxhOHlIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoRFJkanZIYSAhPSAidjhfZGp2IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJkanZIYS5MYTh5SCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBybyA9ICc8bCBMYWp5eT0iRmogRmotQnlIUSI+PC9sPjxsIExhanl5PSJGaiBGai1MOG4iPiAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUmRqdkhhID0gJC43eTRqdkhhKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnI5bFNIOiB7YmxxcmU6IHpDbSwgZUhsbmVyOiBYbW19LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZUhqcUhRd2xyYUg6ICcgIEp5SFF5IFZseXIgLSBKeUhRIDJROEJkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlSERIOiAndzhEanI4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnJBN2p1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlFhOiAnLi4vYjhRV0ZhOGIval9ROGFIX0J5SFFfYWx5ci5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJExhV19vT2xxOyA/PiZRQmFIX2xxPTw/ZGVkIEhMZTggJFFCYUhfbHE7ID8+JlE4YUhfRGp5ckhRX2xxPTw/ZGVkIEhMZTggJFE4YUhfRGp5ckhRX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZ5SGFfbmxxPScgKyBsckhEUUhGICsgJyZROGFIX0J5SFFyUmRIPScgKyBsckhEclJkSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqQnI4YThqcTogclFCSAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnJjT0hRRmE4YjogJ3lMUThhYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGODhySFF3ODhhb2pROiBGODhySFFfZDhkQmRfZFFsRGpRUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44digiTGFsTFciLCAnLkxlanJfeUh2cV9vcnYnLCBGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9qeWxMX0Y4UURfeUJvRGxyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9MOERESHZyYWx5cl95ZGFsci5kZWQ/TF9qTHJsOHY9anFxJmpfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JlFqdnE9PD9kZWQgSExlOCBRanZxKFBQUCwgUFBQUFBQKTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9fTGVqcl9MOERESHZyeV9hbHlyJywgJ0Y4UURfTGVqcicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2pbZVFIRj0iI0w4RERIdnJ5LWQ4eXIiXScpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfTDhEREh2cmFseXJfeWRhbHIuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JlFqdnE9PD9kZWQgSExlOCBRanZxKFBQUCwgUFBQUFBQKTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9fTGVqcl9MOERESHZyeV9hbHlyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2pbZVFIRj0iI3RCSFFSLXlITHJsOHYtZDh5ciJdJykuTGFsTFcoRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF90QkhRUmFseXJfeWRhbHIuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JlFqdnE9PD9kZWQgSExlOCBRanZxKFBQUCwgUFBQUFBQKTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9fTGVqcl90QkhRUl9hbHlyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJMYWxMVyIsICcudEJIUVJfeUh2cV9vcnYnLCBGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSB0QkhRUl9MOERESHZyID0gJCgnI3RCSFFSX0w4RERIdnInKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqYUhRcih0QkhRUl9MOERESHZyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2p5bExfRjhRRF95Qm9EbHIoJy4uL2I4UVdGYThiL2I4UVdGYThiX2xEX3RCSFFSYWx5cl95ZGFsci5kZWQ/TF9qTHJsOHY9anFxJmpfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JlFqdnE9PD9kZWQgSExlOCBRanZxKFBQUCwgUFBQUFBQKTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicrICcmdEJIUVJfTDhEREh2cj0nICsgdEJIUVJfTDhEREh2ciwgJ3FsT19MZWpyX3RCSFFSX2FseXInLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJ2pbZVFIRj0iI2I4UVdGYThiX2E4bnkiXScpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9qN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9hOG5hbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmxEX2xxPTw/ZGVkIEhMZTggJGxEX2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9fYThueV9hbHlyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9qN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9qcnJqTGVhbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JmxEX2xxPTw/ZGVkIEhMZTggJGxEX2xxOyA/PiZ5ckhkX2pMTEh5eT08P2RlZCBITGU4ICR5ckhkX2pMTEh5eSA/PiZqX3lySGRfNzhsdj08P2RlZCBITGU4ICRqX3lySGRfNzhsdjsgPz4nLCAncWxPX2pycmpMZURIdnJ5Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9qN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9EamxhYWx5ci5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9fRGpsYXknKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIEVBWlY5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoIkxhbExXIiwgIi5qX3ZIYl9EamxheSIsIEZCdkxybDh2IChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBvT2xxID0gJCgiI29PbHEiKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGRaRERIcWxqckg0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRjg4ckhRX2Q4ZEJkX2RRbERqUVIgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogIjxvQnJyOHYgclJkSD0nb0Jycjh2Jz48L29CcnI4dj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1kUWxEalFSIG9ydi15RCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J2ckh1cjogIiA5SHZxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMamFhb2pMVzogRkJ2THJsOHYgKEhPSHZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgQlFhID0gJy4uL2I4UVdGYThiL2I4UVdGYThiX2xEX0RqbGFqcXEuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmo3anUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhyZThxOiAiNGM5dyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6IEJRYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFqcmo6ICQoIiNGOFFEX0RqbGF5IikueUhRbGphbFNIKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucTh2SChGQnZMcmw4diAoRHluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLm5RbHJySFEuanFxKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybHJhSDogJ0VIeXlqbkghJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBySHVyOiBEeW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnIucWpyai5MYTh5SCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfRGpsYWFseXIuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4nLCAncWxPX0RqbGF5Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogIjxvQnJyOHYgclJkSD0nb0Jycjh2Jz48L29CcnI4dj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1xanZuSFEgb3J2LXlEIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnZySHVyOiAiIEdhOHlIIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMamFhb2pMVzogRkJ2THJsOHYgKEhPSHZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci5xanJqLkxhOHlIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgcm8gPSAnPGwgTGFqeXk9IkZqIEZqLUJ5SFEiPjwvbD48bCBMYWp5eT0iRmogRmotTDhuIj4gJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKERSZGp2SGEgIT0gInY4X2RqdiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSZGp2SGEuTGE4eUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUmRqdkhhID0gJC43eTRqdkhhKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnI5bFNIOiB7YmxxcmU6IGdDbSwgZUhsbmVyOiBoQ219LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZUhqcUhRd2xyYUg6ICcgRzhEZDh5SCBFamxhJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlSERIOiAnY2FsT0gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2ckE3anU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6ICcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9EamxhRjhRRC5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgakJyOGE4anE6IHJRQkgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGODhySFF3ODhhb2pROiBGODhySFFfZDhkQmRfZFFsRGpRUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44digiTGFsTFciLCAiLm9ydl9EamxheV9RSEQ4T0giLCBGQnZMcmw4diAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgb09scSA9ICQoIiNvT2xxIikuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkWkRESHFsanJINFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGxxID0gJChyZWx5KS5qcnJRKCJsckhEUUhGIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBCUWEgPSAnLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfRGpsYXFIYUhySC5kZWQnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmo3anUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhyZThxOiAiNGM5dyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6IEJRYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFqcmo6IHtscTogbHEsIGxEX1FscTogPD9kZWQgSExlOCAkbERfUWxxOyA/Piwgal9vQmxhcUhRX09qYUJIX2xxOiAiPD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnE4dkgoRkJ2THJsOHYgKER5bikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5uUWxyckhRLmpxcSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmxyYUg6ICdFSHl5am5IIScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgckh1cjogRHluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL2I4UVdGYThiL2I4UVdGYThiX2xEX0RqbGFhbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JywgJ3FsT19EamxheScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44digiTGFsTFciLCAiLm9ydl9EamxheV9PbEhiIiwgRkJ2THJsOHYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIG9PbHEgPSAkKCIjb09scSIpLmRROGQoIk9qYUJIIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgueXI4ZDRROGRqbmpybDh2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgueXI4ZFpEREhxbGpySDRROGRqbmpybDh2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBscSA9ICQocmVseSkuanJyUSgibHJIRFFIRiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRjg4ckhRX2Q4ZEJkX2RRbERqUVIgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogIjxvQnJyOHYgclJkSD0nb0Jycjh2Jz48L29CcnI4dj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1xanZuSFEgb3J2LXlEIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnZySHVyOiAiIEdhOHlIIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMamFhb2pMVzogRkJ2THJsOHYgKEhPSHZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci5xanJqLkxhOHlIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgcm8gPSAnPGwgTGFqeXk9IkZqIEZqLUJ5SFEiPjwvbD48bCBMYWp5eT0iRmogRmotTDhuIj4gJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKERSZGp2SGEgIT0gInY4X2RqdiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSZGp2SGEuTGE4eUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUmRqdkhhID0gJC43eTRqdkhhKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnI5bFNIOiB7YmxxcmU6IENDbSwgZUhsbmVyOiBoQ219LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZUhqcUhRd2xyYUg6ICcgRWpsYSBadkY4UURqcmw4dicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqQnI4ZDh5bHJsOHY6IEZqYXlILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDh5bHJsOHY6ICdRbG5lci1vOHJyOEQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVIREg6ICc5bEh2dmonLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2ckE3anU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6ICcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9EamxhT2xIYi5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PiZscT0nICsgbHEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgakJyOGE4anE6IHJRQkgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyY09IUUZhOGI6ICd5TFE4YWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjg4ckhRdzg4YW9qUTogRjg4ckhRX2Q4ZEJkX2RRbERqUVIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICBNY0ctOWl3IC8gQXd3QUdURWkwdzkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44dignTGFsTFcnLCAnLm9ydi1qcnJqTGUtcUhhSHJIJywgRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgT2phID0gJChyZWx5KS5kUThkKCdscScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgTEZRRCA9IG84OHJvOHUuTDh2RmxRRCgiQVFIIFI4QiB5QlFIPyIsIEZCdkxybDh2IChRSHlCYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChRSHlCYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgZGxxID0gIjw/ZGVkIEhMZTggJGRscTsgPz4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL3FEeS9xRHlfcUhhSHJILmRlZD9scT0nICsgT2phICsgJyZkbHE9JyArIGRscSwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9PalEgRFJ3am9VX2pMcmxPSCA9ICQoIkJhI0RSd2pvVSBhbC5qTHJsT0ggaiIpLmpyclEoJ2VRSEYnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xGIChEUndqb1VfakxybE9IID09ICIjcmpvLXE4THlIciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQocThMQkRIdnIpLjh2KCdMYWxMVycsICcjRFJ3am9VIEJhIGFsIGpbZVFIRj0iI3Jqby1GbGFIeSJdJywgRkJ2THJsOHYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdqW2VRSEY9IiNyam8tRmxhSHkiXScpLkxhbExXKEZCdkxybDh2ICgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSByam9hSCA9ICQoJyNxOExfeUhyX3Fqcmpyam9hSCcpLnFqcmp3am9hSCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib01IeXJROFIiOiByUUJILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm80UThMSHl5bHZuIjogclFCSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvOUhRT0hROWxxSCI6IHJRQkgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibE1seWRhalJWSHZucmUiOiBDLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpWSHZucmVFSHZCIjogW1tDLCBVbSwgQ21dLCBbQywgVW0sIENtXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibzRqbmx2anJIIjogclFCSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvM2xhckhRIjogRmpheUgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibzk4UXIiOiBGamF5SCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vInk5TFE4YWFrIjogIlVtbWR1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzbHVIcVRIanFIUSI6IHJRQkgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieUE3anU5OEJRTEgiOiAnLi4vYjhRV0ZhOGIvYjhRV19GYThiX0hxbHJfcWpyai5kZWQ/b2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZsRF9scT08P2RlZCBITGU4ICRsRF9scTsgPz4meXJIZF9qTExIeXk9PD9kZWQgSExlOCAkeXJIZF9qTExIeXkgPz4mal9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb2xxX09qYUJIOyA/PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiamo5OFFybHZuIjogW1ttLCAicUh5TCJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqOEc4YUJEdk1IRnkiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiandqUW5IcnkiOiBbbV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvOThRcmpvYUgiOiBGamF5SCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqd2pRbkhyeSI6IFtYXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm85OFFyam9hSCI6IEZqYXlILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnY5SFFPSFFNanJqIjogRkJ2THJsOHYgKHk5OEJRTEgsIGo4TWpyaiwgRnZHamFhb2pMVykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQubkhyMTljMCh5OThCUUxILCBqOE1qcmosIEZCdkxybDh2ICg3eTh2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE04IGJlanJIT0hRIGpxcWxybDh2amEgZFE4TEh5eWx2biBSOEIgYmp2ciA4diByZUggTGphYW9qTFcsIHJlSHYgckhhYSBNanJqd2pvYUh5ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ2R2phYW9qTFcoN3k4dik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vamFIUXIoMTljMC55clFsdm5sRlIoN3k4dikpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnY5SFFPSFE0alFqRHkiOiBGQnZMcmw4diAoajhNanJqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajhNanJqLmRCeWUoeyJ2akRIIjogImx2cUh1X0RqeXJIUV9PamFCSCIsICJPamFCSCI6ICI8P2RlZCBITGU4ICRsdnFIdV9PamFCSF9xSHJqbGF5W21dWydscSddOyA/PiJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqOE1qcmouZEJ5ZSh7InZqREgiOiAiZGxxIiwgIk9qYUJIIjogIjw/ZGVkIEhMZTggJGRscTsgPz4ifSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajhNanJqLmRCeWUoeyJ2akRIIjogImx2cUh1X0RqeXJIUV9scSIsICJPamFCSCI6ICI8P2RlZCBITGU4ICRsRF9scTsgPz4ifSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdqW2VRSEY9IiNyam8tcThMeUhyLURseXlsdm4iXScpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfcThMX3lIcl9hbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JywgJ3E4THlIci1EbHl5bHZuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJMYWxMVyIsICIual92SGJfanJyakxlREh2ciIsIEZCdkxybDh2IChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBvT2xxID0gJCgiI29PbHEiKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGRaRERIcWxqckg0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRjg4ckhRX2Q4ZEJkX2RRbERqUVIgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogIjxvQnJyOHYgclJkSD0nb0Jycjh2Jz48L29CcnI4dj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1kUWxEalFSIG9ydi15RCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J2ckh1cjogIiBKZGE4anEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExqYWFvakxXOiBGQnZMcmw4diAoSE9IdnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnIueXI4ZDRROGRqbmpybDh2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBCUWEgPSAnLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfanJyakxlQmRhOGpxLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JmxEX2xxPTw/ZGVkIEhMZTggJGxEX2xxOyA/Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuajdqdSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESHJlOHE6ICI0Yzl3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJRYTogQlFhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGpMZUg6IEZqYXlILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWpyajogJCgiI0Y4UURfanJyakxlREh2ciIpLnlIUWxqYWxTSCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb0hGOFFIOUh2cTogRkJ2THJsOHYgKHVlUSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiLjQ4ZEJkNGp2SGFfYkYiKS55ZThiKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5uUWxyckhRLmpxcSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJscmFIOiAnNGFIanlIIGJqbHIuIDRROExIeXkgeXJqUXJIcS4uISEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBySHVyOiAiICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucTh2SChGQnZMcmw4diAoRHluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcublFscnJIUS1sckhELWJRamRkSFEnKS5RSEQ4T0goKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiLjQ4ZEJkNGp2SGFfYkYiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoIiNycV9yanlXX0xlbGFxX09qYUJIeV8iICsgbHEpLmVyRGEoRHluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQublFscnJIUS5qcXEoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh5clFsdm4gfCBEanZxanI4UVIpIHJlSCBlSGpxbHZuIDhGIHJlSCB2OHJsRmxManJsOHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybHJhSDogJ0VIeXlqbkghJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoeXJRbHZuIHwgRGp2cWpyOFFSKSByZUggckh1ciBsdnlscUggcmVIIHY4cmxGbExqcmw4dgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJIdXI6IER5bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci5xanJqLkxhOHlIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9qcnJqTGVhbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JmxEX2xxPTw/ZGVkIEhMZTggJGxEX2xxOyA/PiZ5ckhkX2pMTEh5eT08P2RlZCBITGU4ICR5ckhkX2pMTEh5eSA/PicsICdxbE9fanJyakxlREh2cnknKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL2I4UVdGYThiL2I4UVdGYThiX2xEX3E4TF95SHJfYWx5ci5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxOEx5SHItRGx5eWx2bicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy83eEJIUVIoJyNxanJqLXJqb2FIJykucWpyandqb2FIKCkuRnZNUWpiKHJRQkgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9qYUhRcigneXFGRicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgN3hCSFFSKCcjcThMX3lIcl9xanJqcmpvYUgnKS5xanJqd2pvYUgoKS5Gdk1RamIoclFCSCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogIjxvQnJyOHYgclJkSD0nb0Jycjh2Jz48L29CcnI4dj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1xanZuSFEgb3J2LXlEIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnZySHVyOiAiIEdhOHlIIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMamFhb2pMVzogRkJ2THJsOHYgKEhPSHZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci5xanJqLkxhOHlIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoRFJkanZIYSAhPSAidjhfZGp2IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJkanZIYS5MYTh5SCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBybyA9ICc8bCBMYWp5eT0iRmogRmotQnlIUSI+PC9sPjxsIExhanl5PSJGaiBGai1MOG4iPiAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUmRqdkhhID0gJC43eTRqdkhhKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnI5bFNIOiB7YmxxcmU6IGdDbSwgZUhsbmVyOiBYbW19LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lSGpxSFFHOHZyUThheToge0w4dnJROGF5OiAiTGE4eUg4dmFSIn0sCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZUhqcUhRd2xyYUg6ICcgSmRhOGpxIEFycmpMZURIdnIgM2xhSCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyY09IUUZhOGI6ICc5TFE4YWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9RSHlsU2pvYUg6ICJxbHlqb2FIcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0w4dnJIdnI6ICAgICAgICB5ckJGRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlSERIOiAnY2FsT0gnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2ckE3anU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6ICcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9qcnJqTGVGOFFELmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JmxEX2xxPTw/ZGVkIEhMZTggJGxEX2xxOyA/PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgakJyOGE4anE6IHJRQkgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGODhySFF3ODhhb2pROiBGODhySFFfZDhkQmRfZFFsRGpRUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCQkJCQkJCQkgCgkJCQkJCQkJJCgiI3FsT19GbGFIX2RRSE9sSGJfTGFsTFciKS5MYWxMVyhGQnZMcmw4diAoKSB7CgkJCQkJCQkJCSAKCQkJCQkJCQkJICQoJyNxbE9fRmxhSF9sdkY4JykuZWxxSCgpOwoJCQkJCQkJCQkkKCcjcWxPX0ZsYUhfZFFIT2xIYicpLnllOGIoKTsKCQkJCQkJCQkJCgkJCQkJCQkJfSk7CgkJCQkJCQkJCgkJCQkJCQkJJCgiI3FsT19GbGFIX2x2RjhfTGFsTFciKS5MYWxMVyhGQnZMcmw4diAoKSB7CgkJCQkJCQkJCQoJCQkJCQkJCQkkKCcjcWxPX0ZsYUhfZFFIT2xIYicpLmVscUgoKTsKCQkJCQkJCQkJJCgnI3FsT19GbGFIX2x2RjgnKS55ZThiKCk7CgkJCQkJCQkJCQoJCQkJCQkJCX0pOwoJCQkJCQkJCQoJCQkJCQkJCQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJMYWxMVyIsICcub3J2X0ZsYUhfZFFIT2xIYicsIEZCdkxybDh2ICgpIHsKCQkJCQkJCQkKCQkJCQkJCQkKCQkJCQkJCQkgICAkKCcjcWxPX0ZsYUhfZFFIT2xIYicpLnllOGIoKTsKCQkJCQkJCQkJJCgnI3FsT19GbGFIX2x2RjgnKS5lbHFIKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbHFfalFRID0gJChyZWx5KS5kUThkKCdscScpLnlkYWxyKCdfJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBkbHEgPSBscV9qUVFbVV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBxOExfbHEgPSBscV9qUVFbS107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBRanZxID0gRWpyZS5RanZxOEQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGFsdldfclJkSCA9IGxxX2pRUVttXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGxEX29CbGFxSFFfcUhyamxheSA9ICI8P2RlZCBITGU4ICRsRF9vQmxhcUhRX3FIcmpsYXk7ID8+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGFsdldfclJkSCA9PSAnRmxhSCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL2I4UVdGYThiL2I4UVdGYThiX0ZsYUhfZFFIT2xIYi5kZWQ/UWp2cT0nICsgUWp2cSArICcmZGxxPScgKyBkbHEgKyAnJmxEX29CbGFxSFFfcUhyamxheT0nICsgbERfb0JsYXFIUV9xSHJqbGF5ICsgJyZscT0nICsgcThMX2xxLCAncWxPX0ZsYUhfZFFIT2xIYicpOwoJCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9GbGFIX2x2RjguZGVkP1FqdnE9JyArIFFqdnEgKyAnJmRscT0nICsgZGxxICsgJyZscT0nICsgcThMX2xxLCAncWxPX0ZsYUhfbHZGOCcpOwoJCQkJCQkJCQkJJCgnI0ZsYUhfZFFIT2xIYicpLkQ4cWphKCd5ZThiJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoYWx2V19yUmRIID09ICdqcnJqTGUnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfRmxhSF9kUUhPbEhiLmRlZD9RanZxPScgKyBRanZxICsgJyZkbHE9JyArIGRscSArICcmbERfb0JsYXFIUV9xSHJqbGF5PScgKyBsRF9vQmxhcUhRX3FIcmpsYXkgKyAnJmxxPScgKyBxOExfbHEsICdxbE9fRmxhSF9kUUhPbEhiJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9GbGFIX2x2RjguZGVkP1FqdnE9JyArIFFqdnEgKyAnJmRscT0nICsgZGxxICsgJyZscT0nICsgcThMX2xxLCAncWxPX0ZsYUhfbHZGOCcpOwoJCQkJCQkJCQkJJCgnI0ZsYUhfZFFIT2xIYicpLkQ4cWphKCd5ZThiJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44digiTGFsTFciLCAnLm9ydl9GbGFIX2RRSE9sSGJVJywgRkJ2THJsOHYgKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGxxX2pRUSA9ICQocmVseSkuZFE4ZCgnbHEnKS55ZGFscignXycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgZGxxID0gbHFfalFRW1VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgcThMX2xxID0gbHFfalFRW0tdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgUWp2cSA9IEVqcmUuUWp2cThEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBhbHZXX3JSZEggPSBscV9qUVFbbV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBsRF9vQmxhcUhRX3FIcmpsYXkgPSAiPD9kZWQgSExlOCAkbERfb0JsYXFIUV9xSHJqbGF5OyA/PiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChhbHZXX3JSZEggPT0gJ0ZsYUh5JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfRmxhSF9kUUhPbEhiLmRlZD9RanZxPScgKyBRanZxICsgJyZkX09yPTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJ2pxT2p2TEhxJywgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+JmRscT0nICsgZGxxICsgJyZsRF9vQmxhcUhRX3FIcmpsYXk9JyArIGxEX29CbGFxSFFfcUhyamxheSArICcmbHE9JyArIHE4TF9scSwgJ3FsT19GbGFIX2RRSE9sSGInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL2I4UVdGYThiL2I4UVdGYThiX0ZsYUhfbHZGOC5kZWQ/UWp2cT0nICsgUWp2cSArICcmZGxxPScgKyBkbHEgKyAnJmxxPScgKyBxOExfbHEsICdxbE9fRmxhSF9sdkY4Jyk7CgkJCQkJCQkJCQkkKCcjRmxhSF9kUUhPbEhiJykuRDhxamEoJ3llOGInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGIChhbHZXX3JSZEggPT0gJ2pycmpMZScpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9GbGFIX2RRSE9sSGIuZGVkP1FqdnE9JyArIFFqdnEgKyAnJmRfT3I9PD9kZWQgSExlOCBIdkxRUmRyX0JRYSgnanFPanZMSHEnLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4mZGxxPScgKyBkbHEgKyAnJmxEX29CbGFxSFFfcUhyamxheT0nICsgbERfb0JsYXFIUV9xSHJqbGF5ICsgJyZscT0nICsgcThMX2xxLCAncWxPX0ZsYUhfZFFIT2xIYicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfRmxhSF9sdkY4LmRlZD9RanZxPScgKyBRanZxICsgJyZkbHE9JyArIGRscSArICcmbHE9JyArIHE4TF9scSwgJ3FsT19GbGFIX2x2RjgnKTsKCQkJCQkJCQkJCSQoJyNGbGFIX2RRSE9sSGInKS5EOHFqYSgneWU4YicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCdMYWxMVycsICcub3J2LUZsYUgtcUhhSHJIJywgRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgT2phID0gJChyZWx5KS5kUThkKCdscScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgTEZRRCA9IG84OHJvOHUuTDh2RmxRRCgiQVFIIFI4QiB5QlFIPyIsIEZCdkxybDh2IChRSHlCYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChRSHlCYXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgZGxxID0gIjw/ZGVkIEhMZTggJGRRODdITHJfcUhyamxheVttXVsnbHEnXTsgPz4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL3FEeS9xRHlfcUhhSHJILmRlZD9scT0nICsgT2phICsgJyZkbHE9JyArIGRscSwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pakxlIE04TEJESHZyIEc4RERIdnIgOXJqUXJ5IFRIUUgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44digiTGFsTFciLCAnLm9ydl9MOERESHZyeV9kUUhPbEhiJywgRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgcThMX2xxX2pRUSA9ICQocmVseSkuZFE4ZCgnbHEnKS55ZGFscignXycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgZGxxID0gcThMX2xxX2pRUVtVXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHE4TGxxID0gcThMX2xxX2pRUVtLXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI0w4RERxOExfbHEiKS5PamEocThMbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9xOExfTDhEREh2cmFseXJfeWRhbHIuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JlFqdnE9PD9kZWQgSExlOCBRanZxKFBQUCwgUFBQUFBQKTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PiZMOEREcThMX2xxPScgKyBxOExscSwgJ3FsT19MZWpyX0w4RERIdnJ5X1FIeUJhcicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjRDhxamFfTDhEREh2cnlfZDh5ciIpLkQ4cWphKCJyOG5uYUgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoIkxhbExXIiwgJy5MZWpyX0w4RERfeUh2cV9vcnYnLCBGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9qeWxMX0Y4UURfeUJvRGxyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9xOExfTDhEREh2cmFseXJfeWRhbHIuZGVkP0xfakxybDh2PWpxcSZqX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZRanZxPTw/ZGVkIEhMZTggUWp2cShQUFAsIFBQUFBQUCk7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4nLCAncWxPX0xlanJfTDhEREh2cnlfUUh5QmFyJywgJ0w4RERfRjhRRF9MZWpyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5sRG5fTGE4eUhfRDhxamFfQmRxanJIX0w4RERIdnJ5X0Y4UUQnKS44dignTGFsTFcnLCBGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGE4TGpybDh2LlFIYThqcSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWpMZSBNOExCREh2ciBHOERESHZyIGl2cXkgVEhRSAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44digiTGFsTFciLCAiLkxhanl5X2Q4ZEJkX1FCYUhsdkY4IiwgRkJ2THJsOHYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIFFCYUhfbHEgPSAkKHJlbHkpLmRROGQoImxxIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBRanZxID0gRWpyZS5RanZxOEQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBCUWEgPSAnYjhRV0ZhOGIvYjhRV0ZhOGJfUUJhSF9sdkY4LmRlZD9RanZxPScgKyBRanZxICsgJyZRQmFIX2xxPScgKyBRQmFIX2xxICsgJyZkbHE9PD9kZWQgSExlOCAkZGxxOyA/Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBybHJhSCA9ICI8bCBMYWp5eT0nRmogRmotYmRGOFFEeSc+PC9sPiAgNUJhSCBadkY4IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGQ4eWxybDh2ID0gIlFsbmVyLUxIdnJIUSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBkX3JlSERIID0gJ004cW5IUTZhQkgnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgZF9ibHFyZSA9IE5nbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGRfZUhsbmVyID0gQ2htOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx2cThiLmRqUUh2ci44ZEh2Xzd5ZGp2SGEoQlFhLCBybHJhSCwgZDh5bHJsOHYsIGRfcmVIREgsIGRfYmxxcmUsIGRfZUhsbmVyKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgalFRID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJIRDogJzxvQnJyOHYgTGFqeXk9Ii4uLiIgclJkSD0ib0Jycjh2Ij48eWRqdiBMYWp5eT0iLi4uIj48L3lkanY+IEdhOHlIPC9vQnJyOHY+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiAnTGFsTFcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGphYW9qTFc6IEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvX2RqdkhhLkxhOHlIKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRm9fZGp2SGEgPSAkLjd5NGp2SGEoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2cmNPSFFGYThiOiAneUxROGFhJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVIanFIUXdscmFIOiAnNUJhSCBadkY4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlSERIOiAnTThxbkhRNmFCSCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByODhhb2pRMzg4ckhROiBqUVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyOWxTSDoge2JscXJlOiBOZ20sIGVIbG5lcjogQ2htfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnJBN2p1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6ICcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9RQmFIX2x2RjguZGVkP1FqdnE9JyArIFFqdnEgKyAnJlFCYUhfbHE9JyArIFFCYUhfbHEgKyAnJmRscT08P2RlZCBITGU4ICRkbHE7ID8+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpCcjhhOGpxOiByUUJILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgakJyOFFIeWxTSDogclFCSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpCcjhRSGQ4eWxybDh2OiByUUJICiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44digiTGFsTFciLCAiLkxhanl5X0ZsYUhfZDhkQmQiLCBGQnZMcmw4diAoSCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGxxX2pRUSA9ICQocmVseSkuZFE4ZCgnbHEnKS55ZGFscignXycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgZGxxID0gbHFfalFRW1VdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgcThMX2xxID0gbHFfalFRW0tdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgUWp2cSA9IEVqcmUuUWp2cThEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBhbHZXX3JSZEggPSBscV9qUVFbbV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBsRF9vQmxhcUhRX3FIcmpsYXkgPSAiPD9kZWQgSExlOCAkbERfb0JsYXFIUV9xSHJqbGF5OyA/PiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuN3k0anZIYSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyY09IUUZhOGI6ICd5TFE4YWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZUhqcUhRd2xyYUg6ICczbGFIIDRRSE9sSGInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVIREg6ICdNOHFuSFE2YUJIJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEw4dnJIdnI5bFNIOiB7YmxxcmU6IGhnbSwgZUhsbmVyOiBYaG19LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2ckE3anU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCUWE6ICcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9GbGFIX2RRSE9sSGIuZGVkP1FqdnE9JyArIFFqdnEgKyAnJmRscT0nICsgZGxxICsgJyZsRF9vQmxhcUhRX3FIcmpsYXk9JyArIGxEX29CbGFxSFFfcUhyamxheSArICcmbHE9JyArIHE4TF9scSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqQnI4YThqcTogclFCSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqQnI4UUh5bFNIOiByUUJILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpCcjhRSGQ4eWxybDh2OiByUUJICiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCQkJCQkJCQkJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIDl3QXdKOQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1E4YWFfb2pMVyIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX2pkZFE4T0hfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX29qTFdialFxIikuZWxxSCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl84ZHJsOHZ5IikuZWxxSCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIuTGVITFdfeXJqckJ5TGVXIikuOHYoImxGR2VITFdIcSIsIEZCdkxybDh2IChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSB5SGFfeXJqckJ5ID0gJCgnbHZkQnJbdmpESD15cmpyQnldOkxlSExXSHEnKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkWkRESHFsanJINFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9PalEgeUhhX3lyanJCeSA9ICQocmVseSkuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9qYUhRcih5SGFfeXJqckJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2eThhSC5hOG4oJ09qYUJIOicsICQocmVseSkuZFE4ZCgiT2phQkgiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICh5SGFfeXJqckJ5ID09ICdVVScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9famRkUThPSF9GOFFialFxIikueWU4YigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX29qTFdialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19ROGFhX29qTFciKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX0J5SFFhbHlyX1FROGFIeSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fdkh1cnlySGRfQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19GYUh1bF9GYThiIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfOGRybDh2eSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICh5SGFfeXJqckJ5ID09ICdYJykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9famRkUThPSF9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX29qTFdialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIjcWxPX1E4YWFfb2pMVyIpLnllOGIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT192SHVyeXJIZF9CeUhRYWx5cl9RUThhSHkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX0ZhSHVsX0ZhOGIiKS5lbHFIKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfOGRybDh2eSIpLnllOGIoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgUUg3SExyXzhkciA9ICQoIiNRSDdITHJfOGRyIikuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vT2pRIFFIN0hMcl84ZHJfYlEgPSAkKCIjUUg3SExyXzhkcl9iUSIpLmRROGQoIk9qYUJIIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL09qUSBRSDdITHJfOGRyX0J5SFEgPSAkKCIjUUg3SExyXzhkcl9CeUhRIikuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChRSDdITHJfOGRyID09ICdVJykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCIuLi9iOFFXRmE4Yi9ibERfUUg3SExyXzhkcmw4dnkuZGVkP2RfclJkSD12Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4iLCAncWxPX1FIN0hMcl84ZHJsOHZ5Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICh5SGFfeXJqckJ5ID09ICdVSycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9famRkUThPSF9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfRjhRYmpRcSIpLnllOGIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX29qTFdialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIjcWxPX1E4YWFfb2pMVyIpLnllOGIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT192SHVyeXJIZF9CeUhRYWx5cl9RUThhSHkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX0ZhSHVsX0ZhOGIiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl84ZHJsOHZ5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKHlIYV95cmpyQnkgPT0gJ1VYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19qZGRROE9IX0Y4UWJqUXEiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfb2pMV2JqUXEiKS55ZThiKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoIiNxbE9fUThhYV9vakxXIikueWU4YigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19CeUhRYWx5cl9RUThhSHkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX3ZIdXJ5ckhkX0J5SFFhbHlyX1FROGFIeSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fRmFIdWxfRmE4YiIpLmVscUgoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl84ZHJsOHZ5IikueWU4YigpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBRSDdITHJvXzhkciA9ICQoIiNRSDdITHJvXzhkciIpLmRROGQoIk9qYUJIIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL09qUSBRSDdITHJvXzhkcl9iUSA9ICQoIiNRSDdITHJvXzhkcl9iUSIpLmRROGQoIk9qYUJIIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL09qUSBRSDdITHJvXzhkcl9CeUhRID0gJCgiI1FIN0hMcm9fOGRyX0J5SFEiKS5kUThkKCJPamFCSCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChRSDdITHJvXzhkciA9PSAnVScpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cigiLi4vYjhRV0ZhOGIvYmxEX1FIN0hMcl84ZHJsOHZ5LmRlZD9kX3JSZEg9byZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+IiwgJ3FsT19RSDdITHJfOGRybDh2eScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICh5SGFfeXJqckJ5ID09ICdVbScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9famRkUThPSF9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX29qTFdialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT192SHVyeXJIZF9CeUhRYWx5cl9RUThhSHkiKS55ZThiKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoIiNxbE9fUThhYV9vakxXIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19CeUhRYWx5cl9RUThhSHkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX0ZhSHVsX0ZhOGIiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl84ZHJsOHZ5IikuZWxxSCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fQnlIUWFseXJfcVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19CeUhRYWx5cl9hUThhSHkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoeUhhX3lyanJCeSA9PSAnVWcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX2pkZFE4T0hfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX0Y4UWJqUXEiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl9vakxXYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fdkh1cnlySGRfQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIjcWxPX1E4YWFfb2pMVyIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19GYUh1bF9GYThiIikueWU4YigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfOGRybDh2eSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9famRkUThPSF9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX29qTFdialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIjcWxPX1E4YWFfb2pMVyIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fdkh1cnlySGRfQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19GYUh1bF9GYThiIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfOGRybDh2eSIpLmVscUgoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoeUhhX3lyanJCeSA9PSAnZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX2pkZFE4T0hfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX29qTFdialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiI3FsT19ROGFhX29qTFciKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT192SHVyeXJIZF9CeUhRYWx5cl9RUThhSHkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19GYUh1bF9GYThiIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyXzhkcmw4dnkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19CeUhRYWx5cl9RUThhSHkiKS55ZThiKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoeUhhX3lyanJCeSA9PSAnVU4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19qZGRROE9IX0Y4UWJqUXEiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfRjhRYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl9vakxXYmpRcSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoIiNxbE9fUThhYV9vakxXIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fdkh1cnlySGRfQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fRmFIdWxfRmE4YiIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl84ZHJsOHZ5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fQnlIUWFseXJfcVE4YUh5IikueWU4YigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX0J5SFFhbHlyX3FROGFIeSIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoeUhhX3lyanJCeSA9PSAnS20nKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9famRkUThPSF9GOFFialFxIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fUUg3SExyX0Y4UWJqUXEiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfb2pMV2JqUXEiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIjcWxPX1E4YWFfb2pMVyIpLmVscUgoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fdkh1cnlySGRfQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fRmFIdWxfRmE4YiIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX1FIN0hMcl84ZHJsOHZ5IikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fQnlIUWFseXJfUVE4YUh5IikuZWxxSCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX0J5SFFhbHlyX2FROGFIeSIpLnllOGIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19CeUhRYWx5cl9hUThhSHkiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19RSDdITHJfOGRybDh2eSIpLmVscUgoKTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnJRbG5uSFEoImxGR2VITFdIcSIpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoIkxhbExXIiwgIi5ham9IYV92SHVyQnlIUWFseXIiLCBGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoImJsRF92SHVyX3lySGRfQnlIUWFseXIuZGVkP2RscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4iLCAicWxPX3ZIdXJCeUhRX2FseXIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoIkxhbExXIiwgIi5vcnZfeUhhX3ZIdXJfQnlIUWFseXIiLCBGQnZMcmw4diAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL09qUSB2SHVyX0J5SFFfbHEgPSAkKCJsdmRCclt2akRIPXZIdXJfQnlIUV9scV06TGVITFdIcSIpLk9qYSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgdkh1cl9CeUhRX2xxX2pRUSA9ICQoImx2ZEJyW3ZqREg9J3ZIdXJfQnlIUV9scVtdJ106TGVITFdIcSIpLkRqZChGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRSHJCUXYgJChyZWx5KS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkubkhyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICh2SHVyX0J5SFFfbHFfalFRLmFIdm5yZSA+IG0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgdkh1cl9CeUhRX2xxeSA9IHZIdXJfQnlIUV9scV9qUVEuNzhsdigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cigiYmxEX3ZIdXJfeXJIZF9CeUhRYWx5cl95SGEuZGVkP2RscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4mdkh1cl9CeUhRX2xxPSIgKyB2SHVyX0J5SFFfbHF5LCAicWxPX3ZIdXJCeUhRX2FseXJfeUhhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLm5RbHJySFEuanFxKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybHJhSDogJzA4cmxGbExqcmw4diEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJIdXI6ICIgR2U4OHlIIEJ5SFEgakxMOEJ2ciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJMZWp2bkgiLCAiI2pkX0J5SFFfb09scSIsIEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHlIYV9vT2xxID0gJChyZWx5KS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCJibERfdkh1cl95ckhkX0J5SFFhbHlyLmRlZD9kbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JkZfb09scT0iICsgeUhhX29PbHEsICJxbE9fdkh1ckJ5SFFfYWx5ciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNvcnZfTDhheUhfeXJqckJ5IikuTGFsTFcoRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRDhxamFfeXJqckJ5X3FqeWVvOGpRcScpLkQ4cWphKCdyOG5uYUgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGJGX09sSGJfclJkSCA9ICQoJyNiRl9PbEhiX3JSZEgnKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGJGX09sSGJfclJkSCA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX3Jqb19kam5IIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT195ZGFscl9kam5IIikueWU4YigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT195ckhkX2x2RjgiKS5lckRhKCIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9feXJIZF9sdkY4IiwgZGpRSHZyLnE4TEJESHZyKS5qcnJRKCd5UUwnLCAnYjhRV0ZhOGIvYmxEX0hxbHJGOFFEX3lkYWxyLmRlZD9vbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZsRF9scT08P2RlZCBITGU4ICRsRF9scTsgPz4mbERGX2xxPTw/ZGVkIEhMZTggJGxERl9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9feWRhbHJfZGpuSCIpLmVscUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fcmpvX2RqbkgiKS55ZThiKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcWxPX3lySGRfbHZGOCIpLmVyRGEoIiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI2xGUWpESF9yam9fZGpuSCIsIGRqUUh2ci5xOExCREh2cikuanJyUSgneVFMJywgJ2I4UVdGYThiL2JsRF9IcWxyRjhRRF9yam8uZGVkP29scT08P2RlZCBITGU4ICRvbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+JmxEX2xxPTw/ZGVkIEhMZTggJGxEX2xxOyA/PiZsREZfbHE9PD9kZWQgSExlOCAkbERGX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3ZIdXJfeXJIZF9CeUhRX3lIcnJsdm55X3FqcmotcmpvYUgnKS5xanJqd2pvYUgoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieU04RCI6ICI8J1E4Yi1GYUJscSc8J3lkanZOJ2E+PCd5ZGp2TidGPlE+cjwnUThiLUZhQmxxJzwneWRqdk4nbD48J3lkanZOJ2Q+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNRSEZfQnlIUWFseXJfcWpyai1yam9hSCcpLnFqcmp3am9hSCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5TThEIjogIjwnUThiLUZhQmxxJzwneWRqdk4nYT48J3lkanZOJ0Y+UT5yPCdROGItRmFCbHEnPCd5ZGp2TidsPjwneWRqdk4nZD4+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImo4RzhhQkR2TUhGeSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsibzk4UXJqb2FIIjogRmpheUgsICJqd2pRbkhyeSI6IFttXX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYWpySFFqYV9CeUhRYWx5cl9xanJqLXJqb2FIJykucWpyandqb2FIKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInlMUThhYWsiOiAiS21tZHUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieUxROGFhRzhhYWpkeUgiOiByUUJILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieU04RCI6ICI8J1E4Yi1GYUJscSc8J3lkanZOJ2E+PCd5ZGp2TidGPlE+cjwnUThiLUZhQmxxJzwneWRqdk4nbD48J3lkanZOJ2Q+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqOEc4YUJEdk1IRnkiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Im85OFFyam9hSCI6IEZqYXlILCAiandqUW5IcnkiOiBbbV19CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoJ0xlanZuSCcsICIuYWpySFFqYV9ManlIIiwgRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgeUhhX09qYSA9ICQocmVseSkuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9qYUhRcih5SGFfT2phKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9PalEgUUh5QmFyX3FqcmogPSBMOERvbHZIX0xROHZfRmxhSF9ybHJhSCh5SGFfT2phKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkKHJlbHkpLmRROGQoJ0xlSExXSHEnKSA9PSByUUJIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjQmRxanJIX3lyanJCeV9GOFFEIikuZFFIZEh2cSgnPGx2ZEJyIHJSZEg9ImVscXFIdiIgbHE9ImFROGFIX0J5SFFfbHEnICsgeUhhX09qYSArICciIHZqREg9ImFROGFIX0J5SFFfbHFbXSIgT2phQkg9IicgKyB5SGFfT2phICsgJyI+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoIi5xbE9feUhhX0ZsYUhfTDhEb2x2SCIpLmpkZEh2cShRSHlCYXJfcWpyaik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjYVE4YUhfQnlIUV9scScgKyB5SGFfT2phKS5RSEQ4T0goKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgnI3lkanZfeUhhX0ZsYUhfTDhEb2x2SF8nICsgeUhhX09qYSkuUUhEOE9IKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44dignTGVqdm5IJywgIi5RSEZGSFFqYV9MYXkiLCBGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSB5SGFfT2phID0gJChyZWx5KS5kUThkKCJPamFCSCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCQocmVseSkuZFE4ZCgnTGVITFdIcScpID09IHJRQkgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNCZHFqckhfeXJqckJ5X0Y4UUQiKS5kUUhkSHZxKCc8bHZkQnIgclJkSD0iZWxxcUh2IiBscT0iUVE4YUhfQnlIUV9scUsnICsgeUhhX09qYSArICciIHZqREg9IlFROGFIX0J5SFFfbHFLW10iIE9qYUJIPSInICsgeUhhX09qYSArICciPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIucWxPX3lIYV9GbGFIX0w4RG9sdkgiKS5qZGRIdnEoUUh5QmFyX3FqcmopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1FROGFIX0J5SFFfbHFLJyArIHlIYV9PamEpLlFIRDhPSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCcjeWRqdl95SGFfRmxhSF9MOERvbHZIXycgKyB5SGFfT2phKS5RSEQ4T0goKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgVmMyOQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9PalEgUUhGX3JlbHkgPSAkKCIjRFJ3am9oIEJhLnJqb3kgYWwgai5qTHJsT0giKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgTEJRUUh2cndqb1pxID0gJCgiQmEjRFJ3am9LIGFsLmpMcmxPSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMQlFRSHZyd2pvWnEuZFE4ZCgibHEiKSA9PSAiYWxfYWpySFFqYV9GYThiIikgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfYWpySFFqYV9valEuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mbERfbHE9PD9kZWQgSExlOCAkbERfbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JywgJ3FsT19hanJIUWphX0ZhOGInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKExCUVFIdnJ3am9acS5kUThkKCJscSIpID09ICJhbF95cmpyQnlfYThueSIpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL2I4UVdGYThiL2JsRF95cmpyQnlfYThuLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JywgJ3FsT195cmpyQnlfYThueV9hbHlyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNhbF9hanJIUWphX0ZhOGIiKS5RSEQ4T0hHYWp5eSgiakxybE9IIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxbE9fcmpvX2FqckhRamFfRmE4YiIpLlFIRDhPSEdhanl5KCJqTHJsT0giKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI2FsX2FqckhRamFfRmE4YiIpLlFIRDhPSEdhanl5KCJqTHJsT0giKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19yam9fYWpySFFqYV9GYThiIikuUUhEOE9IR2FqeXkoImpMcmxPSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoJ0xhbExXJywgJyNhbF95cmpyQnlfYThueScsIEZCdkxybDh2IChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgiI3FsT19yam9fYWpySFFqYV9GYThiIikuUUhEOE9IR2FqeXkoImpMcmxPSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9ibERfeXJqckJ5X2E4bi5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9feXJqckJ5X2E4bnlfYWx5cicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCdMYWxMVycsICcjeWU4Yl9hbHlyJywgRkJ2THJsOHYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIjcWxPX3Jqb19hanJIUWphX0ZhOGIiKS5RSEQ4T0hHYWp5eSgiakxybE9IIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGo3anVfTDhERDh2X1FIdEJIeXIoJy4uL2I4UVdGYThiL2JsRF9hbHZXX3FIcmpsYXkuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mbERfbHE9PD9kZWQgSExlOCAkbERfbHE7ID8+JywgJ3FsT19iOFFXRmE4Yl9hbHZXbHZuX2FseXInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoJ0xhbExXJywgJyNhbF9iOFFXRmE4Yl9hOG55JywgRkJ2THJsOHYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI3FsT19yam9fYWpySFFqYV9GYThiIikuUUhEOE9IR2FqeXkoImpMcmxPSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9hOG5hbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmxEX2xxPTw/ZGVkIEhMZTggJGxEX2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9fYThueV9hbHlyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCdMYWxMVycsICcjYWxfYWpySFFqYV9GYThiJywgRkJ2THJsOHYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfYWpySFFqYV9valEuZGVkP2pfb0JsYXFIUV9PamFCSF9scT08P2RlZCBITGU4ICRqX29CbGFxSFFfT2phQkhfbHE7ID8+JmRscT08P2RlZCBITGU4ICRkbHE7ID8+JmxEX1FscT08P2RlZCBITGU4ICRsRF9RbHE7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mbERfbHE9PD9kZWQgSExlOCAkbERfbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JywgJ3FsT19hanJIUWphX0ZhOGInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiQocThMQkRIdnIpLjh2KCJMYWxMVyIsICIjb3J2X2FsdldfYjhRV0ZhOGJfYThuIiwgRkJ2THJsOHYoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNEOHFqYV9hOG5fcWp5ZW84alFxJykuRDhxamEoJ3llOGInKTsgLy9qYUhRcihvbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9ibERfeXJqckJ5X2E4bi5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9feXJqckJ5X2E4bicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsqLwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjb3J2X0xhOHlIX2E4biIpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0Q4cWphX2E4bl9xanllbzhqUXEnKS5EOHFqYSgncjhubmFIJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICA1aTRjNXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNGOFFEX1FIZDhRcl9IdWQ4UXIiKS5MYWxMVyhGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYmx2cThiLjhkSHYoJy4uL0h2RmovSHZGal9EamxhX0w4dnJIdnIuZGVkP0Y4UURqcj1kcUYmRGxxPTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJGxEX2xxLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZkbHE9PD9kZWQgSExlOCBIdkxRUmRyX0JRYSgkZGxxLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4mSHZGal9scT08P2RlZCBITGU4IEh2TFFSZHJfQlFhKCRIdkZqX3FIcmpsYXlbbV1bJ2xxJ10sIEE0NF9pMEc1azR3WmMwXzlBVncpOyA/PicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHZxOGIuOGRIdignLi4vYjhRV0ZhOGIvRjhRRF9RSGQ4UXJfSHVkOFFyLmRlZD9GOFFEanI9ZHFGJkRscT08P2RlZCBITGU4IEh2TFFSZHJfQlFhKCRsRF9scSwgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+Jm9scT08P2RlZCBITGU4ICRvbHE7ID8+Jm9PbHE9PD9kZWQgSExlOCAkb09scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mZGxxPTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJGRscSwgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgaU1adyA5d0F3SjkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNCZHFqckhfeXJqckJ5X0Y4UUQiKS5PamFscWpySCh7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQmFIeTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDhEREh2cjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFIdEJsUUhxOiByUUJILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERsdmFIdm5yZTogSwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESHl5am5IeTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDhEREh2cjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFIdEJsUUhxOiAiNGFIanlIIEh2ckhRIGogTDhEREh2ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGx2YUh2bnJlOiAiazhCUSBMOERESHZyIERCeXIgTDh2eWx5ciA4RiBqciBhSGp5ciBLIExlalFqTHJIUXkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlCb0RsclRqdnFhSFE6IEZCdkxybDh2IChGOFFEKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIERqdnFqcjhRUl9xOEx5SHIgPSAkKCdsdmRCclt2akRIPSJEanZxanI4UVJfcThMeUhyIl0nKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIERqdnFqcjhRUl9xOEx5SHJfalFRID0gRGp2cWpyOFFSX3E4THlIci55ZGFscigiLCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIERqdnFqcjhRUl9xOEx5SHJfalFRX3ZIYiA9IERqdnFqcjhRUl9xOEx5SHJfalFRLkZsYXJIUShGQnZMcmw4diAoTykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFIckJRdiBPICE9PSAnJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgeUhhX3lyanJCeSA9ICQoJ2x2ZEJyW3ZqREg9eXJqckJ5XTpMZUhMV0hxJykuT2phKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKHlIYV95cmpyQnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoeUhhX3lyanJCeSA9PSBVbSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGpkX0J5SFFfb09scSA9ICQoIiNqZF9CeUhRX29PbHEiKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgdkh1cl9CeUhRX2xxX2pRUSA9ICQoImx2ZEJyW3ZqREhePSd5SGFfdkh1cl9CeUhRbHFfPD9kZWQgSExlOCAkb09scTsgPz4nXSIpLkRqZChGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRSHJCUXYgJChyZWx5KS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkubkhyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgoamRfQnlIUV9vT2xxID09ICcnIHx8IGpkX0J5SFFfb09scSA9PSB2QmFhKSB8fCAodkh1cl9CeUhRX2xxX2pRUS5hSHZucmUgPT0gbSB8fCB2SHVyX0J5SFFfbHFfalFRLmFIdm5yZSA9PSB2QmFhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IEZqYXlIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIER5bl92OHJsID0gIkdlODh5SCBCeUhRIEY4USBqZGRROE9IIHI4IEJ5SFEhIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBqYWE4Yl95Qm9EbHIgPSByUUJIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICh5SGFfeXJqckJ5ID09IEttKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgeUhhSF9hRmE4Yl9CeUhRX2xxX3k4UXIgPSBxOExCREh2ci5uSHJpYUhESHZyeTZSMGpESCgnYUZhOGJfQnlIUV9scV95OFFyW10nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHlIYV9hRmE4Yl9CeUhRX2xxID0geUhhSF9hRmE4Yl9CeUhRX2xxX3k4UXIuYUh2bnJlOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKHlIYV9hRmE4Yl9CeUhRX2xxID09IG0gfHwgeUhhX2FGYThiX0J5SFFfbHEgPT0gdkJhYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IEZqYXlIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIER5bl92OHJsID0gIjRhSGp5SCBMYWxMVyA4diByZUggeUhhSExyIGpGckhRIEdlODh5SGx2biBCeUhRICEiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IHJRQkg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUUhyQlF2IEZqYXlIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoeUhhX3lyanJCeSA9PSBVWCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIFFfb19vT2xxID0gJCgieUhhSExyW3ZqREg9J1Ffb19vT2xxJ10iKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoUV9vX29PbHEgPT0gJycgfHwgUV9vX29PbHEgPT0gdkJhYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IEZqYXlIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIER5bl92OHJsID0gIkdlODh5SCBvakxXYmpRcSB5ckhkISI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgamFhOGJfeUJvRGxyID0gclFCSDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoeUhhX3lyanJCeSA9PSBVSykgewoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBRX0Zfb09scSA9ICQoInlIYUhMclt2akRIPSdRX0Zfb09scSddIikuZFE4ZCgiT2phQkgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKFFfRl9vT2xxID09ICcnIHx8IFFfRl9vT2xxID09IHZCYWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBqYWE4Yl95Qm9EbHIgPSBGamF5SDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBEeW5fdjhybCA9ICJHZTg4eUggRjhRYmpRcSB5ckhkISI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgamFhOGJfeUJvRGxyID0gclFCSDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoeUhhX3lyanJCeSA9PSBVVSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGpfRl9vT2xxID0gJCgieUhhSExyW3ZqREg9J2pfRl9vT2xxJ10iKS5kUThkKCJPamFCSCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGpfRl9vT2xxID09ICcnIHx8IGpfRl9vT2xxID09IHZCYWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBqYWE4Yl95Qm9EbHIgPSBGamF5SDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBEeW5fdjhybCA9ICJHZTg4eUggRjhRYmpRcSB5ckhkISI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgamFhOGJfeUJvRGxyID0gclFCSDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoeUhhX3lyanJCeSA9PSBnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgUVE4YUhfQnlIUV9scV9qUVEgPSAkKCJsdmRCclt2akRIPSdRUThhSF9CeUhRX2xxW10nXTpMZUhMV0hxIikuRGpkKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vamFIUXIoUVE4YUhfQnlIUV9scV9qUVEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUhyQlF2ICQocmVseSkuT2phKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLm5IcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoUVE4YUhfQnlIUV9scV9qUVEuYUh2bnJlID09IG0gfHwgUVE4YUhfQnlIUV9scV9qUVEuYUh2bnJlID09IHZCYWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vamFIUXIoUVE4YUhfQnlIUV9scV9qUVEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IEZqYXlIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIER5bl92OHJsID0gIkdlODh5SCBCeUhRIEY4USBRSEZGSFFqYSEiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IHJRQkg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKHlIYV95cmpyQnkgPT0gVU4pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBxUThhSF9CeUhRX2xxX2pRUSA9ICQoImx2ZEJyW3ZqREg9J3FROGFIX0J5SFFfbHFbXSddOkxlSExXSHEiKS5EamQoRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUhyQlF2ICQocmVseSkuT2phKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLm5IcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAocVE4YUhfQnlIUV9scV9qUVEuYUh2bnJlID09IG0gfHwgcVE4YUhfQnlIUV9scV9qUVEuYUh2bnJlID09IHZCYWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBqYWE4Yl95Qm9EbHIgPSBGamF5SDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBEeW5fdjhybCA9ICJHZTg4eUggQnlIUSBGOFEgcUhhSG5qckghIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBqYWE4Yl95Qm9EbHIgPSByUUJIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IHJRQkg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRHluX3Y4cmwgPSAiSThRV0ZhOGIgeXJqckJ5IGx5IEhEZHJSISI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGphYThiX3lCb0RsciA9IEZqYXlIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChqYWE4Yl95Qm9EbHIgPT0gclFCSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5vcnZfQmRxanJIIikuZWxxSCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5vcnYtcWp2bkgiKS5lbHFIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKERqdnFqcjhRUl9xOEx5SHJfalFRX3ZIYi5hSHZucmUgPj0gVSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgQmRhOGpxSHFfcThMeUhyX2pRUSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdsdmRCclt2akRIPSJCZGE4anFIcV9xOEx5SHJbXSJdJykuSGpMZShGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZGE4anFIcV9xOEx5SHJfalFRLmRCeWUoJChyZWx5KS5PamEoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIERqdl9MOEJ2ciA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuSGpMZShEanZxanI4UVJfcThMeUhyX2pRUV92SGIsIEZCdkxybDh2IChXSFIsIE9qYUJIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoT2phQkggIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbHZxSHUgPSAkLmx2QVFRalIoT2phQkgsIEJkYThqcUhxX3E4THlIcl9qUVEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAobHZxSHUgPj0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEanZfTDhCdnIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbEYgKGx2cUh1ID09IC1VKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTDh2eThhSC5hOG4oIGx2cUh1ICk7ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQublFscnJIUS5qcXEoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybHJhSDogJzA4cmxGbExqcmw4diEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBySHVyOiAiIEVqdnFqcjhRUiBNOEwteUhyIGpRSCBpRGRyUi4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvanlsTF9GOFFEX3lCb0RscignLi4vYjhRV0ZhOGIvYmxEX0hxbHJfeXJqckJ5LmRlZCcsICdxbE9feXJqckJ5X3FqeWVvOGpRcScsICdCZHFqckhfeXJqckJ5X0Y4UUQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKERqdnFqcjhRUl9xOEx5SHJfalFRX3ZIYi5hSHZucmUgPT0gRGp2X0w4QnZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvanlsTF9GOFFEX3lCb0RscignLi4vYjhRV0ZhOGIvYmxEX0hxbHJfeXJqckJ5LmRlZCcsICdxbE9feXJqckJ5X3FqeWVvOGpRcScsICdCZHFqckhfeXJqckJ5X0Y4UUQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQublFscnJIUS5qcXEoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJscmFIOiAnMDhybEZsTGpybDh2IScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgckh1cjogIiBFanZxanI4UVIgTThMLXlIciBqUUggaURkclIuICIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2p5bExfRjhRRF95Qm9EbHIoJy4uL2I4UVdGYThiL2JsRF9IcWxyX3lyanJCeS5kZWQnLCAncWxPX3lyanJCeV9xanllbzhqUXEnLCAnQmRxanJIX3lyanJCeV9GOFFEJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5uUWxyckhRLmpxcSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhanl5X3ZqREg6ICduUWxyckhRLWFsbmVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmxyYUg6ICc8ZUM+MDhybEZsTGpybDh2ITwvZUM+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgckh1cjogIiA8eXJROHZuPiIgKyBEeW5fdjhybCArICI8L3lyUTh2bj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWp5eV92akRIOiAnRFIteXJsTFdSLUxhanl5JwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBMOHZyamx2SFEgPSAkKCdxbE8uSFFROFEtTDh2cmpsdkhRICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9qYWxxanJIIHJlSCBGOFFEIGJlSHYgbHIgbHkgeUJvRGxyckhxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIE9qYWxxanI4USA9ICQoIiNGOFFESyIpLk9qYWxxanJIKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFFROFFHOHZyamx2SFE6IEw4dnJqbHZIUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFFROFFWam9IYUc4dnJqbHZIUTogJCgiOGEiLCBMOHZyamx2SFEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiUWpkZEhROiAnYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESHJqOiAiT2phbHFqckgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLkxqdkxIYSIpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2phbHFqcjhRLlFIeUhyMzhRRCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIEdjRUVpMHc5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdySHVyalFIai5MZWpyLWx2ZEJybzh1Jykucmx2UkRMSCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlMUWxkcl9CUWE6ICcuLi9RSHk4QlFMSHkvN3kvcmx2Ul9ETEgvcmx2Ul9ETEguN3knLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZUhESDogInlsRGRhSCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVIbG5lcjogIksiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdmxyX2x2eXJqdkxIX0xqYWFvakxXOiBGQnZMcmw4diAoSHEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBscSA9IEhxLmxxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGVIbG5lciA9IGdDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcThMQkRIdnIubkhyaWFIREh2cjZSWnEobHEgKyAnX2xGUScpLnlyUmFILmVIbG5lciA9IGVIbG5lciArICdkdSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICA1SEZIUVFqYSBWbHlyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJMYWxMVyIsICIub3J2X0xhOHlIX1FIRkhRUWphIiwgRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgeUhhX2xxID0gJChyZWx5KS5kUThkKCJscSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgTEZRRCA9IG84OHJvOHUuTDh2RmxRRCgiQVFIIFI4QiB5QlFIIGJqdnIgcjggTGE4eUggUUhGSFFRamE/IiwgRkJ2THJsOHYgKFFIeUJhcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKFFIeUJhcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBkbHEgPSAiPD9kZWQgSExlOCAkZGxxOyA/PiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgajdqdV9MOEREOHZfUUh0Qkh5cignLi4vYjhRV0ZhOGIvYmxEX0xhOHlIX1FIRkhRUWphLmRlZD95SGFfbHE9JyArIHlIYV9scSArICcmZGxxPScgKyBkbHEsICdxbE9fUUhGSFFRamFfYWx5cicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRqUUh2ci5hOExqcmw4di5RSGE4anEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgTThMLXlIciBFbHl5bHZuIFZseXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgkJCQkJCQkJJChxOExCREh2cikuOHYoIkxhbExXIiwgIiNEOHFqYV9MYWxMVyIsIEZCdkxybDh2KEgpewoJCQkJCQkJCSAgICQoJyNEOHFqYScpLkQ4cWphKCdyOG5uYUgnKTsKCQkJCQkJCQkgICBhOExqcmw4di5RSGE4anEoKTsKCQkJCQkJCQl9KTsKCQkJCQkJCQkJCgkJCQkJCQkJJChxOExCREh2cikuOHYoIkxhbExXIiwiLjd5bmFSZGUtTGE4eUgiLCBGQnZMcmw4dihIKXsKCQkJCQkJCQkJIGE4TGpybDh2LlFIYThqcSgpOwoJCQkJCQkJCX0pOwkKCQkJCQkJCQkKCQkJCQkJCQkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOHYoIkxhbExXIiwgIi5vcnZfRmxhSHlfT2xIYiIsIEZCdkxybDh2IChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBvT2xxID0gJCgiI29PbHEiKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGQ0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILnlyOGRaRERIcWxqckg0UThkam5qcmw4digpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbHEgPSAkKHJlbHkpLmpyclEoImxySERRSEYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIEY4OHJIUV9kOGRCZF9kUWxEalFSID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxySEQ6ICI8b0Jycjh2IHJSZEg9J29CcnI4dic+PC9vQnJyOHY+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2cjogN3k0anZIYS5IT3I5cmpRciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnZMYWp5eTogIm9ydiBvcnYtcWp2bkhRIG9ydi15RCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J2ckh1cjogIiBHYTh5SCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGphYW9qTFc6IEZCdkxybDh2IChIT0h2cikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnIucWpyai5MYTh5SCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHJvID0gJzxsIExhanl5PSJGaiBGai1CeUhRIj48L2w+PGwgTGFqeXk9IkZqIEZqLUw4biI+ICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChEUmRqdkhhICE9ICJ2OF9kanYiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUmRqdkhhLkxhOHlIKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJkanZIYSA9ICQuN3k0anZIYSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyY09IUUZhOGI6ICd5TFE4YWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2cjlsU0g6IHtibHFyZTogQ0NtLCBlSGxuZXI6IFhLbX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VIanFIUUc4dnJROGF5OiB7TDh2clE4YXk6ICJMYTh5SDh2YVIifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVIanFIUXdscmFIOiAnIE04TEJESHZyIFp2RjhRRGpybDh2JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUUh5bFNqb2FIOiAicWx5am9hSHEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9MOHZySHZyOiAgICAgICAgeXJCRkYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqQnI4ZDh5bHJsOHY6IEZqYXlILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kOHlscmw4djogJ1FsbmVyLW84cnI4RCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZUhESDogJzlsSHZ2aicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyQTdqdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJRYTogJy4uL2I4UVdGYThiL2I4UVdGYThiX2xEX0ZsYUhhbHlyLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCBIdkxRUmRyX0JRYSgkZGxxLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJG9scSwgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+Jm9PbHE9PD9kZWQgSExlOCBIdkxRUmRyX0JRYSgkb09scSwgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+JmJsRF9scT08P2RlZCBITGU4IEh2TFFSZHJfQlFhKCRibERfbHEsIEE0NF9pMEc1azR3WmMwXzlBVncpOyA/PiZscT0nICsgbHEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgakJyOGE4anE6IHJRQkgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGODhySFF3ODhhb2pROiBGODhySFFfZDhkQmRfZFFsRGpRUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOEZGKCdMYWxMVycsICcjcThMeUhyX29CYVdfcThidmE4anFfYWx2VycpLjh2KCdMYWxMVycsICcjcThMeUhyX29CYVdfcThidmE4anFfYWx2VycsIEZCdkxybDh2IChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEguZFFIT0h2ck1IRmpCYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGxxID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5qcnJqTGVESHZyeV9ManlIOkxlSExXSHEiKS5IakxlKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxxLmRCeWUocmVseS5PamFCSCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbHF5ID0gbHEuNzhsdigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoJyNvQmFXX3E4TF9EcnFqcmpfbHEnKS5PamEobHF5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCcjRDhxamFfb0JhV19EcnFqcmpfcThidmE4anEnKS5EOHFqYSgneWU4YicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAobHF5ICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHZxOGIuYThManJsOHYgPSAnLi4vcUR5L3FEeV9EQmFybGRhSF9xOGJ2YThqcS5kZWQ/bHE9JyArIGxxeSArICcmZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mclJkSD1VJlFIdmpESF9GYWpuPSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvODhybzh1LmphSFFyKCJHZTg4eUggcThMQkRIdnJ5IEY4USBxOGJ2YThqcSEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCdMYWxMVycsICcub3J2LXE4THlIci1xOGJ2YThqcScsIEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIE9qYUJIID0gJChyZWx5KS5kUThkKCdscScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRDhxamFfcThidmE4anEnKS5EOHFqYSgneWU4YicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZHFGX2xxJykuT2phKE9qYUJIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgUUh2akRIX0Zham4gPSAkKCJsdmRCclt2akRIPSdRSHZqREhfRmFqbiddOkxlSExXSHEiKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgclJkSCA9ICQoImx2ZEJyW3ZqREg9J2RxRl9yUmRIJ106TGVITFdIcSIpLk9qYSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBkbHEgPSAiPD9kZWQgSExlOCBIdkxRUmRyX0JRYSgkZGxxLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNGOFFELXE4THlIcnktcWpyanJqb2FIIikuanJyUSgncmpRbkhyJywgJ19vYWp2VycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNGOFFELXE4THlIcnktcWpyanJqb2FIIikuanJyUSgnakxybDh2JywgJy4uL3FEeS9xRHlfcThidmE4anEuZGVkP2xxPScgKyBPamFCSCArICcmZGxxPScgKyBkbHEgKyAnJnJSZEg9VSZRSHZqREhfRmFqbj1tJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjRjhRRC1xOEx5SHJ5LXFqcmpyam9hSCIpLnlCb0RscigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNGOFFELXE4THlIcnktcWpyanJqb2FIIikuanJyUSgncmpRbkhyJywgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNGOFFELXE4THlIcnktcWpyanJqb2FIIikuanJyUSgnakxybDh2JywgJycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9IdWxyKG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjb3J2X3E4YnZhOGpxX2RxRiIpLkxhbExXKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypPalEgZHFGX2xxID0gJCgnI2RxRl9scScpLk9qYSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIDhRbG5sdmphX0ZsYUhfRmFqbiA9ICQoImx2ZEJyW3ZqREg9JzhRbG5sdmphX0ZsYUhfRmFqbiddOkxlSExXSHEiKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBkbHEgPSAiPD9kZWQgLy9ITGU4IEh2TFFSZHJfQlFhKCRkbHEsIEE0NF9pMEc1azR3WmMwXzlBVncpOyAgPz4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0Q4cWphX3E4YnZhOGpxJykuRDhxamEoJ3I4bm5hSCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI0Y4UUQtcThMeUhyeS1xanJqcmpvYUgiKS5qcnJRKCdyalFuSHInLCAnX29hanZXJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjRjhRRC1xOEx5SHJ5LXFqcmpyam9hSCIpLmpyclEoJ2pMcmw4dicsICcuLi9xRHkvcUR5X3E4YnZhOGpxLmRlZD9scT0nICsgZHFGX2xxICsgJyZkbHE9JyArIGRscSArICcmclJkSD1VJjhRbG5sdmphX0ZsYUhfRmFqbj0nICsgOFFsbmx2amFfRmxhSF9GYWpuICsgJyZRSHZqREhfRmFqbj1tJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjRjhRRC1xOEx5SHJ5LXFqcmpyam9hSCIpLnlCb0RscigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI0Y4UUQtcThMeUhyeS1xanJqcmpvYUgiKS5qcnJRKCdyalFuSHInLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjRjhRRC1xOEx5SHJ5LXFqcmpyam9hSCIpLmpyclEoJ2pMcmw4dicsICcnKTsqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh1bHIobSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgZHFGX2xxID0gJCgnI2RxRl9scScpLk9qYSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgUUh2akRIX0Zham4gPSAkKCJsdmRCclt2akRIPSdRSHZqREhfRmFqbiddOkxlSExXSHEiKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIDhRbG5sdmphX0ZsYUhfRmFqbiA9ICQoImx2ZEJyW3ZqREg9JzhRbG5sdmphX0ZsYUhfRmFqbiddOkxlSExXSHEiKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHJSZEggPSAkKCJsdmRCclt2akRIPSdkcUZfclJkSCddOkxlSExXSHEiKS5PamEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGRscSA9ICI8P2RlZCBITGU4IEh2TFFSZHJfQlFhKCRkbHEsIEE0NF9pMEc1azR3WmMwXzlBVncpOyA/PiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbERfb0JsYXFIUV9xSHJqbGF5ID0gIjw/ZGVkIEhMZTggJGxEX29CbGFxSFFfcUhyamxheTsgPz4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIGphSFFyKGRxRl9scSArIioqKioqIisgclJkSCArIioqKioqIisgZGxxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0Q4cWphX3E4YnZhOGpxJykuRDhxamEoJ3I4bm5hSCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjZHFGX0Y4UUQiKS5qcnJRKCdyalFuSHInLCAnX29hanZXJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNkcUZfRjhRRCIpLmpyclEoJ2pMcmw4dicsICcuLi9xRHkvcUR5X3E4YnZhOGpxLmRlZD9scT0nICsgZHFGX2xxICsgJyZsRF9vQmxhcUhRX3FIcmpsYXk9JyArIGxEX29CbGFxSFFfcUhyamxheSArICcmZGxxPScgKyBkbHEgKyAnJnJSZEg9JyArIHJSZEggKyAnJlFIdmpESF9GYWpuPScgKyBRSHZqREhfRmFqbiArICcmOFFsbmx2amFfRmxhSF9GYWpuPScgKyA4UWxubHZqYV9GbGFIX0Zham4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjZHFGX0Y4UUQiKS55Qm9EbHIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI2RxRl9GOFFEIikuanJyUSgncmpRbkhyJywgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjZHFGX0Y4UUQiKS5qcnJRKCdqTHJsOHYnLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxOEx5SHJfanJyakxlREh2cnlfeUhhSExyamFhIikuTGFsTFcoRkJ2THJsOHYgKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnE4THlIcl9qcnJqTGVESHZyeV9ManlIJykuZFE4ZCgnTGVITFdIcScsIHJlbHkuTGVITFdIcSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbEYgamFhIExlSExXbzh1IGpRSCB5SGFITHJIcSwgTGVITFcgcmVIIHlIYUhMcmphYSBMZUhMV284dQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp2cSBPbExIT0hReWoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIucThMeUhyX2pycmpMZURIdnJ5X0xqeUgiKS5MYWxMVyhGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkKCIucThMeUhyX2pycmpMZURIdnJ5X0xqeUgiKS5hSHZucmUgPT0gJCgiLnE4THlIcl9qcnJqTGVESHZyeV9ManlIOkxlSExXSHEiKS5hSHZucmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNxOEx5SHJfanJyakxlREh2cnlfeUhhSExyamFhIikuZFE4ZCgiTGVITFdIcSIsICJMZUhMV0hxIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjcThMeUhyX2pycmpMZURIdnJ5X3lIYUhMcmphYSIpLmRROGQoIkxlSExXSHEiLCBGamF5SCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChxOExCREh2cikuOEZGKCdMYWxMVycsICcjcThMX29CYVdfcThidmE4anFfYWx2VycpLjh2KCdMYWxMVycsICcjcThMX29CYVdfcThidmE4anFfYWx2VycsIEZCdkxybDh2IChIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEguZFFIT0h2ck1IRmpCYXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGxxID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIi5xOEx5SHJfanJyakxlREh2cnlfTGp5SDpMZUhMV0hxIikuSGpMZShGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscS5kQnllKHJlbHkuT2phQkgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIGxxeSA9IGxxLjc4bHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI29CYVdfcThMX0RycWpyal9scScpLk9qYShscXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRDhxamFfb0JhV19EcnFqcmpfcThidmE4anEnKS5EOHFqYSgneWU4YicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChscXkgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx2cThiLmE4TGpybDh2ID0gJy4uL3FEeS9xRHlfREJhcmxkYUhfcThidmE4anEuZGVkP2xxPScgKyBscXkgKyAnJmRscT08P2RlZCBITGU4ICRkbHE7ID8+JnJSZEg9VSZRSHZqREhfRmFqbj0nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84OHJvOHUuamFIUXIoIkdlODh5SCBxOExCREh2cnkgRjhRIHE4YnZhOGpxISIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNvcnZfb0JhV19EcnFqcmpfcThidmE4anEiKS5MYWxMVyhGQnZMcmw4diAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSA4UWxubHZqYV9GbGFIX0Zham4gPSAkKCJsdmRCclt2akRIPSc4UWxubHZqYV9GbGFIX0Zham4nXTpMZUhMV0hxIikuT2phKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBkbHEgPSAiPD9kZWQgSExlOCBIdkxRUmRyX0JRYSgkZFE4N0hMcl9xSHJqbGF5W21dWydscSddLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgbHF5ID0gJCgnI29CYVdfcThMX0RycWpyal9scScpLk9qYSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAobHF5ICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHZxOGIuYThManJsOHYgPSAnLi4vcUR5L3FEeV9EQmFybGRhSF9xOGJ2YThqcS5kZWQ/bHE9JyArIGxxeSArICcmZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mclJkSD1VJjhRbG5sdmphX0ZsYUhfRmFqbj0nICsgOFFsbmx2amFfRmxhSF9GYWpuICsgJyZRSHZqREhfRmFqbj0nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzg4cm84dS5qYUhRcigiR2U4OHlIIHE4TEJESHZyeSBGOFEgcThidmE4anEhIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIERSZGp2SGEgPSAndjhfZGp2JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHE4TEJESHZyKS44RkYoJ0xhbExXJywgJyN5SHZxX3E4TEJESHZyeScpLjh2KCdMYWxMVycsICcjeUh2cV9xOExCREh2cnknLCBGQnZMcmw4diAoSCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBILmRRSE9IdnJNSEZqQmFyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBscSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIucThMeUhyX2pycmpMZURIdnJ5X0xqeUg6TGVITFdIcSIpLkhqTGUoRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHEuZEJ5ZShyZWx5Lk9qYUJIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBscXkgPSBscS43OGx2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJCgnI29CYVdfcThMX0RycWpyal9scScpLk9qYShscXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyQoJyNEOHFqYV9vQmFXX0RycWpyal9xOGJ2YThqcScpLkQ4cWphKCd5ZThiJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChscXkgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYmx2cThiLmE4TGpybDh2ID0gJy4uL3FEeS9xRHlfREJhcmxkYUhfcThidmE4anEuZGVkP2xxPScgKyBscXkgKyAnJmRscT08P2RlZCBITGU4ICRkbHE7ID8+JnJSZEg9VSZRSHZqREhfRmFqbj0nOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBvT2xxID0gJCgiI29PbHEiKS5kUThkKCJPamFCSCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSC55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgueXI4ZFpEREhxbGpySDRROGRqbmpybDh2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRjg4ckhRX2Q4ZEJkX2RRbERqUVIgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsckhEOiAiPG9CcnI4diByUmRIPSdvQnJyOHYnPjwvb0Jycjh2PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcnZMYWp5eTogIm9ydiBvcnYtZFFsRGpRUiBvcnYteUQgb3J2X3lIdnFfanJyakxlREh2cnlfRGpsYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydnJIdXI6ICIgOUh2cSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExqYWFvakxXOiBGQnZMcmw4diAoSE9IdnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnlyOGQ0UThkam5qcmw4digpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocmVseSkuanJyUSgicWx5am9hSHEiLCByUUJIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5vcnZfRGpsYUY4UURfTGE4eUgnKS5qcnJRKCJxbHlqb2FIcSIsIHJRQkgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9qUSBCUWEgPSAnLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfSERqbGFyam5fanFxLmRlZD9qX29CbGFxSFFfT2phQkhfbHE9PD9kZWQgSExlOCAkal9vQmxhcUhRX09qYUJIX2xxOyA/PiZkbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9RbHE9PD9kZWQgSExlOCAkbERfUWxxOyA/PiZvbHE9PD9kZWQgSExlOCAkb2xxOyA/PiZvT2xxPTw/ZGVkIEhMZTggJG9PbHE7ID8+JmJsRF9scT08P2RlZCBITGU4ICRibERfbHE7ID8+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuajdqdSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhyZThxOiAiNGM5dyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlFhOiBCUWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWpyajogJCgiI0Y4UURfRGpsYXkiKS55SFFsamFsU0goKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkucTh2SChGQnZMcmw4diAoRHluKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kKCIjcnFfcmp5V19MZWxhcV9PamFCSHlfIiArIGxxKS5lckRhKER5bik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5uUWxyckhRLmpxcSh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh5clFsdm4gfCBEanZxanI4UVIpIHJlSCBlSGpxbHZuIDhGIHJlSCB2OHJsRmxManJsOHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmxyYUg6ICdFSHl5am5IIScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh5clFsdm4gfCBEanZxanI4UVIpIHJlSCBySHVyIGx2eWxxSCByZUggdjhybEZsTGpybDh2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJIdXI6IER5bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnFqcmouTGE4eUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqN2p1X0w4REQ4dl9RSHRCSHlyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9EamxhYWx5ci5kZWQ/al9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZibERfbHE9PD9kZWQgSExlOCAkYmxEX2xxOyA/PicsICdxbE9fRGpsYXknKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxySEQ6ICI8b0Jycjh2IHJSZEg9J29CcnI4dic+PC9vQnJyOHY+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnI6IDd5NGp2SGEuSE9yOXJqUXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydkxhanl5OiAib3J2IG9ydi1xanZuSFEgb3J2LXlEIG9ydl9EamxhRjhRRF9MYTh5SCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ydnJIdXI6ICIgR2E4eUgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMamFhb2pMVzogRkJ2THJsOHYgKEhPSHZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIT0h2ci55cjhkNFE4ZGpuanJsOHYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyLnFqcmouTGE4eUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgcm8gPSAnPGwgTGFqeXk9IkZqIEZqLUJ5SFEiPjwvbD48bCBMYWp5eT0iRmogRmotTDhuIj4gJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoRFJkanZIYSAhPSAidjhfZGp2IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSZGp2SGEuTGE4eUgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUmRqdkhhID0gJC43eTRqdkhhKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyOWxTSDoge2JscXJlOiBnQ20sIGVIbG5lcjogWHptfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2VIanFIUUc4dnJROGF5OiB7TDh2clE4YXk6ICJMYTh5SDh2YVIifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOHlscmw4djogIkxIdnJIUS1yOGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVIanFIUXdscmFIOiAnIDxsIExhanl5PSJGaiBGai1kSHZMbGEteXRCalFILTgiIGpRbGotZWxxcUh2PSJyUUJIIj48L2w+IEc4RGQ4eUggRWpsYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9RSHlsU2pvYUg6ICJxbHlqb2FIcSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9MOHZySHZyOiAgICAgICAgeXJCRkYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVIREg6ICdNSEhkNGx2VycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDh2ckh2ckE3anU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlFhOiAnLi4vYjhRV0ZhOGIvYjhRV0ZhOGJfbERfSERqbGFyam5fRjhRRC5kZWQ/eUhhX3E4THk9JyArIGxxeSArICcmal9vQmxhcUhRX09qYUJIX2xxPTw/ZGVkIEhMZTggJGpfb0JsYXFIUV9PamFCSF9scTsgPz4mZGxxPTw/ZGVkIEhMZTggJGRscTsgPz4mbERfUWxxPTw/ZGVkIEhMZTggJGxEX1FscTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZsRF9scT08P2RlZCBITGU4ICRsRF9scTsgPz4mYmxEX2xxPTw/ZGVkIEhMZTggJGJsRF9scTsgPz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqQnI4YThqcTogclFCSAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjg4ckhRdzg4YW9qUTogRjg4ckhRX2Q4ZEJkX2RRbERqUVIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvODhybzh1LmphSFFyKCJHZTg4eUggcThMQkRIdnJ5IEY4USBxOGJ2YThqcSEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiLm9ydl95SGFITHJfYWpySFFqYV9CeUhRIikuTGFsTFcoRkJ2THJsOHYgKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0JkcWpySF95cmpyQnlfRjhRRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2o3anVfTDhERDh2X1FIdEJIeXIoIi4uL2I4UVdGYThiL2I4UVdGYThiX2xEX2FqckhRamFfeThRci5kZWQiLCAicWxPX2FqckhRamFfQnlIUV95OFFyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9qeWxMX0Y4UURfeUJvRGxyKCcuLi9iOFFXRmE4Yi9iOFFXRmE4Yl9sRF9hanJIUWphX3k4UXIuZGVkJywgJ3FsT19hanJIUWphX0J5SFFfeThRcicsICdCZHFqckhfeXJqckJ5X0Y4UUQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRkJ2THJsOHYgOGRIdl9xOGJ2YThqcV9EOHFqYShxOExfbHEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjZHFGX2xxJykuT2phKHE4TF9scSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0Q4cWphX3E4YnZhOGpxJykuRDhxamEoJ3llOGInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L3lMUWxkcj4KCgogICAgICAgICAgICAgICAgICAgICAgICA8eXJSYUg+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLjQ4ZEJkNGp2SGFfYkZ7cWx5ZGFqUjogdjh2SDtvOFFxSFE6eThhbHEgbSAjbXpMO2Q4eWxybDh2OkZsdUhxO2FIRnI6Q20lO3I4ZDpLbSU7Uy1sdnFIdTpLVWhnaHpYTmhnO2VIbG5lcjpVQ21kdTtEalFubHYtcjhkOi1nbWR1O2JscXJlOlVDbWR1O0RqUW5sdi1hSEZyOkNtZHU7OGRqTGxyUjouZztGbGFySFE6amFkZWooOGRqTGxyUj1nbSk7b2pMV25ROEJ2cTpCUWEoJy4uL1FIeThCUUxIeS9sRGpuSHkveWRsdnZIUS5ubEYnKSB2OC1RSGRIanI7fQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmpPLXJqb3kgYWx7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZqTy1yam95IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOFFxSFEtbzhycjhEOiBtZHUgeThhbHEgI0hxSHFIcTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmpPLXJqb3kgYWwgaiB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZqTy1yam95PmFsPmogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRqcXFsdm4tcjhkOiBLZHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGpxcWx2bi1vOHJyOEQ6IEtkdTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHZILWVIbG5lcjogVUNkdTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmpvLWJscW5IciAucmpvLUw4dnJIdnIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84UXFIUTogI0hxSHFIcSBVZHUgeThhbHEgI1BQUGpQajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvakxXblE4QnZxOiAjRkZGOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZqTy1yam95Pi5qTHJsT0g+aiwgLnZqTy1yam95Pi5qTHJsT0g+ajplOE9IUSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTDhhOFE6ICNDQ0M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEJReThROiBxSEZqQmFyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9qTFduUThCdnEtTDhhOFE6ICNIcUhxSHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmpPLXJqb3k+YWw+ansKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOGE4UTogI21tenpMTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52ak8tcmpveT5hbD5qLCAudmpPLWRsYWF5PmFsPmp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGpRbmx2LVFsbmVyOiBtZHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmpPPmFsPmo6ZThPSFEgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJIdXItcUhMOFFqcmw4djogdjh2SDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOGE4UTogI21tbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvakxXblE4QnZxLUw4YThROiAjSHFIcUhxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJqby1ibHFuSHIgLnJqby1MOHZySHZyewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOFFxSFE6VWR1IHk4YWxxICNxWHFocU47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmQ4eXJfREhyansKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGpRbmx2OiBtIG0gbWR1IG07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp5anY3alIganFxIEx5eSBGOFEgRjhRRCBvOHFRSFEqLwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIC5GOFFESDguRjhRREg4LVFIdnFIUSAuRjhRREg4LUw4YUJEdjphanlyLThGLXJSZEggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkanFxbHZuLVFsbmVyOiBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOFFxSFE6IFVkdSB5OGFscTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5GOFFESDguRjhRREg4LVFIdnFIUSAuRjhRREg4LUw4YUJEdjpGbFF5ci04Ri1yUmRIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRqcXFsdm4tYUhGcjogbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84UXFIUTogVWR1IHk4YWxxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuRjhRREg4LkY4UURIOC1RSHZxSFEgLkY4UURIOC1MOGFCRHYgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRqcXFsdm46IG0gaGR1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhOGpyOiBhSEZyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERqdS1ibHFyZTogdjh2SDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYUh1LXFsUUhMcmw4djogTDhhQkR2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG84UXFIUTogVWR1IHk4YWxxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSovCiAgICAgICAgICAgICAgICAgICAgICAgIDwveXJSYUg+CiAgICAgICAgICAgICAgICAgICAgPC9lSGpxPgoKICAgICAgICAgICAgICAgICAgICA8bzhxUiB5clJhSD0ib2pMV25ROEJ2cS1MOGE4UTogYmVsckg7Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsdmRCciByUmRIPSJlbHFxSHYiIHZqREg9IlFIN0hMcl84ZHJfYlEiIGxxPSJRSDdITHJfOGRyX2JRIiBPamFCSD0iPD9kZWQgSExlOCAkb09qYUJIX3FIcmpsYXlbbV1bJ1FIN0hMcl84ZHJfYlEnXTsgPz4iPgogICAgICAgICAgICAgICAgICAgICAgICA8bHZkQnIgclJkSD0iZWxxcUh2IiB2akRIPSJRSDdITHJfOGRyX0J5SFEiIGxxPSJRSDdITHJfOGRyX0J5SFEiIE9qYUJIPSI8P2RlZCBITGU4ICRvT2phQkhfcUhyamxheVttXVsnUUg3SExyXzhkcl9CeUhRJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGx2ZEJyIHJSZEg9ImVscXFIdiIgdmpESD0iUUg3SExyb184ZHJfYlEiIGxxPSJRSDdITHJvXzhkcl9iUSIgT2phQkg9Ijw/ZGVkIEhMZTggJG9PamFCSF9xSHJqbGF5W21dWydRSDdITHJvXzhkcl9iUSddOyA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsdmRCciByUmRIPSJlbHFxSHYiIHZqREg9IlFIN0hMcm9fOGRyX0J5SFEiIGxxPSJRSDdITHJvXzhkcl9CeUhRIiBPamFCSD0iPD9kZWQgSExlOCAkb09qYUJIX3FIcmpsYXlbbV1bJ1FIN0hMcm9fOGRyX0J5SFEnXTsgPz4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iTDh2ckh2ci1ibHFuSHJ5IiB5clJhSD0ib2pMV25ROEJ2cS1MOGE4UTogYmVsckg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsdmRCciByUmRIPSJlbHFxSHYiIHZqREg9ImJGX09sSGJfclJkSCIgbHE9ImJGX09sSGJfclJkSCIgT2phQkg9Ijw/ZGVkIEhMZTggJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydiRl9PbEhiX3JSZEgnXTsgPz4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gbHE9ImxxX1FIeUJhciIgTGFqeXk9IjQ4ZEJkNGp2SGFfYkYiPjwvcWxPPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEhEZHJSKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICdxalFXLVJIYWE4Yic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICduUUhIdic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdLJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICdvYUJIJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1gnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJscW5Icl9lSGpxX0w4YThRID0gJzhRanZuSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdoJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICduUUhIdic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdDJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICdEam5IdnJqJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ04nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJscW5Icl9lSGpxX0w4YThRID0gJ3FqUVctUkhhYThiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ2cnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJscW5Icl9lSGpxX0w4YThRID0gJ29hQkgtYmVsckgnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAneicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYmxxbkhyX2VIanFfTDhhOFEgPSAnb2FCSC1iZWxySCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdQJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICdEam5IdnJqJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VtJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICduUUhIdic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVVScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYmxxbkhyX2VIanFfTDhhOFEgPSAnblFISHYnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAnVUsnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJscW5Icl9lSGpxX0w4YThRID0gJzhRanZuSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVWCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYmxxbkhyX2VIanFfTDhhOFEgPSAnOFFqdm5IJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VoJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICdvOHZxbC1vYUJIJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VDJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICdvOHZxbC1vYUJIJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VOJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibHFuSHJfZUhqcV9MOGE4USA9ICdxalFXLVJIYWE4Yic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIiB5clJhSD0ib2pMV25ROEJ2cS1MOGE4UTogYmVsckg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHFsTyBMYWp5eT0ieWRqdmgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJMOHZySHZyLWJscW5IcnkgYWxuZXItblFqUiIgeXJSYUg9IkRqUW5sdjogVW1kdSBtZHUgVW1kdSBtZHU7IGRqcXFsdm46IG1kdSBtZHUgbWR1IG1kdTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iYmxxbkhyLWVIanEgPD9kZWQgSExlOCAkYmxxbkhyX2VIanFfTDhhOFE7ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZVg+PD9kZWQgSExlOCAkb09qYUJIX3FIcmpsYXlbbV1bJ3lySGRfdmpESCddOyA/PjwvZVg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4tLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiIHlyUmFIPSJvakxXblE4QnZxLUw4YThROiBiZWxySDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZVSyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tYmxxbkhyIiB5clJhSD0iRGpRbmx2OiBVbWR1IG1kdSBVbWR1IG1kdTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhIExhanl5PSJ2ak8gdmpPLXJqb3kiIGxxPSJEUndqb1UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCBMYWp5eT0iPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Ij48aiBlUUhGPSIjcmpvLXlyanJCeSI+PGwgTGFqeXk9ImxMOHYtZEh2TGxhIj48L2w+IDlyanJCeTwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCBMYWp5eT0iPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snal9yam9fRGpsdiddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSA9PSAncmpvLWE4bnknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IGVscUgiPjxqIGVRSEY9IiNyam8tYThueSI+PGwgTGFqeXk9ImxMOHYtYWx5ci1qYXIgIj48L2w+IFY4bnkgPC9qPjwvYWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkYmxEX1FROGFIX0J5SFF5KSAmJiAkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAnZycgJiYgJExfQnlIUV9RSEZIUVFIcSAhPSAnVScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbD48aiBlUUhGPSIjcmpvLVFIRkhRUWphIj48bCBMYWp5eT0ibEw4di1uUThCZCAiPjwvbD4gNUhGSFFRamEgPC9qPjwvYWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSI8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdyam8tckhEZGFqckgnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkckhEZGFqckhfcUhyamxheSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICJlbHFIIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4iPjxqIGVRSEY9IiNyam8tckhEZGFqckgiPjxsIExhanl5PSJsTDh2LUZsYUgtamFyIj48L2w+IDw/ZGVkIEhMZTggJGx2cUh1X0RqeXJIUV9xSHJqbGF5W21dWydsdnFIdV9EanlySFEnXTsgPz4gLSB3SERkYWpySDwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCBMYWp5eT0iPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snal9yam9fRGpsdiddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSA9PSAncmpvLUY4UUR5JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJGRRSE9sOEJ5X3FSdmpEbExfRjhRRHkpIDw9IG0gJiYgTDhCdnIoJHlySGRfcVJ2akRsTF9GOFFEeSkgPD0gbSAmJiBMOEJ2cigkZFFIT2w4QnlfeXJqcmxMX0Y4UUR5KSA8PSBtICYmIEw4QnZyKCR5ckhkX3lyanJsTF9GOFFEeSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICJlbHFIIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4iPjxqIGVRSEY9IiNyam8tRjhRRHkiPjxsIExhanl5PSJsTDh2LUZsYUgtamFyIj48L2w+IDM4UUR5PC9qPjwvYWw+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCBMYWp5eT0iPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snal9yam9fRGpsdiddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSA9PSAncmpvLUZsYUh5JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiI+PGogZVFIRj0iI3Jqby1GbGFIeSI+PGwgTGFqeXk9ImxMOHYtRmxhSC1qYXIiPjwvbD4gM2xhSHk8L2o+PC9hbD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSI8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdMOERESHZyeS1kOHlyJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiI+PGogZVFIRj0iI0w4RERIdnJ5LWQ4eXIiPjxsIExhanl5PSJsTDh2LUw4RERIdnJ5Ij48L2w+ICBHOERESHZyeTwvaj48L2FsPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWwgTGFqeXk9Ijw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSkgJiYgJF81aXhKaTl3WydqX3Jqb19Eamx2J10gPT0gJ3Jqby1yanlXeScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnakxybE9IJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCR2OF9yanlXYWx5cl9sdkY4IDw9IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAiZWxxSCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Ij48aiBlUUhGPSIjcmpvLXJqeVd5Ij48bCBMYWp5eT0ibEw4di1yanlXeSI+PC9sPiB3anlXeTwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCBMYWp5eT0iPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snal9yam9fRGpsdiddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSA9PSAncmpvLVE4YUh5JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiI+PGogZVFIRj0iI3Jqby1ROGFIeSI+PGwgTGFqeXk9ImxMOHYtblE4QmQiPjwvbD4gNUh5ZDh2eWxvYUggNThhSHk8L2o+PC9hbD4KCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSI8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICd2OHJsRlInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IGVscUgiPjxqIGVRSEY9IiN2OHJsRlIiPjxsIExhanl5PSIgbEw4di1Idk9IYThkSC1qYXIiPjwvbD4gRWpsYXk8L2o+PC9hbD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxhbCBMYWp5eT0iPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snal9yam9fRGpsdiddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSA9PSAncmpvLWxET2phQkh5JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiI+PGogZVFIRj0iI3Jqby1sRE9qYUJIeSI+PGwgTGFqeXk9ImxMOHYtcmUtYWx5ciI+PC9sPiBadnFIdSBFanlySFEgLSA8P2RlZCBITGU4ICRsdnFIdV9EanlySFFfcUhyamxheVttXVsnbHZxSHVfRGp5ckhRJ107ID8+PC9qPjwvYWw+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWwgTGFqeXk9Ijw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSkgJiYgJF81aXhKaTl3WydqX3Jqb19Eamx2J10gPT0gJ0w4RERIdnJ5LWQ4eXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Ij48aiBlUUhGPSIjSThRVzNhOGItVmx2V2x2biIgbHE9InllOGJfYWx5ciI+PGwgTGFqeXk9ImxMOHYtTDhEREh2cnkiPjwvbD5JOFFXM2E4YiBWbHZXbHZuPC9qPjwvYWw+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGFsIExhanl5PSI8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICd0QkhRUi15SExybDh2LWQ4eXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Ij48aiBlUUhGPSIjdEJIUVIteUhMcmw4di1kOHlyIj48bCBMYWp5eT0ibEw4di1MOERESHZyeSI+PC9sPnhCSFFSIDlITHJsOHY8L2o+PC9hbD4KIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InJqby1MOHZySHZyIiB5clJhSD0iIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLWRqdkggPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IiBscT0icmpvLXlyanJCeSIgeXJSYUg9IkRqUW5sdjogVW1kdSBVbWR1IFVtZHUgVW1kdTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICA8cWxPIExhanl5PSJROGItRmFCbHEiPjxxbE8gTGFqeXk9InlkanZVSyI+PC9xbE8+PC9xbE8+IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiIHlyUmFIPSJEalFubHYtbzhycjhEOiBOZHU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iIExhSGpRRmx1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWggTGFqeXk9ImRCYWEtYUhGciI+PD9kZWQgSExlOCAkb09qYUJIX3FIcmpsYXlbbV1bJ3lySGRfdmpESCddOyA/PiAtIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXJROHZuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSExlOCAkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChIRGRyUigkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci1ialF2bHZuIj40SHZxbHZuPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLXlCTExIeXkiPkFkZFE4T0hxPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdLJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLWx2RjgiPml5TGphanJIPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLUhRUThRIj41SDdITHJIcTwveWRqdj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAnaCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci15QkxMSHl5Ij5pdnEgankgamRkUThPamE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnPHlkanYgTGFqeXk9InJIdXItSFFROFEiPml2cSBqeSBRSDdITHJIcTwveWRqdj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAnTicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci1sdk9IUXlIIj5UOGFxPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLWx2RjgiPjVIRkhRUUhxIChHOHZ5QmFyKSAtIFp2ZFE4TEh5eTwveWRqdj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAneicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci1sdkY4Ij41SEZIUVFIcSAoRzh2eUJhcikgLSBHYTh5SHE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1AnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnPHlkanYgTGFqeXk9InJIdXItSFFROFEiPjM4UUxIIEdhOHlIcTwveWRqdj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAnVW0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnPHlkanYgTGFqeXk9InJIdXIteUJMTEh5eSI+QWRkUThPSCA9PiBKeUhRPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVVScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci15QkxMSHl5Ij5BZGRROE9IcSBibHJlIEY4UWJqUXE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VLJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLUhRUThRIj41SDdITHJIcSBibHJlIEY4UWJqUXE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLUhRUThRIj41SDdITHJIcSBibHJlIG9qTFdialFxPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVaCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ciI+OVdsZEhxPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVQycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ciI+MEE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VOJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLWJqUXZsdm4iPk1IYUhuanJIPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdVZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci1ialF2bHZuIj4zYUh1bEZhOGI8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1V6JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLWJqUXZsdm4iPkF5eWxudkhxIHc4IEp5SFE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ1VQJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLWJqUXZsdm4iPjU4QnZxIDU4b2x2PC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdLbScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci1ialF2bHZuIj5WanJIUWphIDNhOGIgLSBadmRROExIeXk8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ0tVJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLWJqUXZsdm4iPlZqckhRamEgM2E4YiAtIEdhOHlIcTwveWRqdj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSA9PSAnS0snKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnPHlkanYgTGFqeXk9InJIdXIteUJMTEh5eSI+VmpySFFqYSAzYThiIC0gQWRkUThPSHE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10gPT0gJ0tYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJySHVyLWJqUXZsdm4iPlZqckhRamEgM2E4YiAtIDVIN0hMckhxPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddID09ICdLaCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0ickh1ci1IUVE4USI+VmpySFFqYSAzYThiIC0gNUg3SExyIGJscmUgTGE4eUhxPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3lyUTh2bj4KCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tPG9CcnI4diBscT0ib3J2X2FsdldfYjhRV0ZhOGJfYThuIiByUmRIPSJ5Qm9EbHIiIExhanl5PSJvcnYgb3J2LVE4QnZxLURsdiBvcnYgb3J2LWJqUXZsdm4gIj48eWRqdj48bCBMYWp5eT0ibEw4di1hbHlyIj48L2w+PC95ZGp2Pjwvb0Jycjh2Pi0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VoPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdksiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkUWx2cl9RKCRvT2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhMZTggIisrKysrKysrKysrKysrKysrPT09IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRRbHZyX1EoJGpfeXJIZF9qUVEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSExlOCAkeXJIZF9qTExIeXk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2E4TFdfSHFscl95cmpyQnkgPSBqUVFqUihVLCBoLCBDLCBVVSwgVUMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChIRGRyUigkeXJIZF9qTExIeXkpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqTHJsT0hfQnlIUV9scSA9ICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxSGRyX2xxID0gJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydxSGRyX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpMcmxPSF9ibERfUThhSF9scSA9ICRfOWk5OVpjMFsnakxybE9IX2JsRF9ROGFIX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvT2phQkhfcUhyamxheVttXVsnZFE4TEh5eUhxX0J5SFEnXSA9PSBVICYmICRibERfcUhyamxheVttXVsnal95cmpyQnknXSAhPSBVbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamFRSGpxUl9kUThMSHl5SHFfQnlIUXkgPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfQWFhX0p5SFFfQUxybE9IKCRibERfcUhyamxheVttXVsnb0JsYXFIUV9scSddLCAkYmxEX3FIcmpsYXlbbV1bJ1FITDhRcV95SHJfbHEnXSwgJG9PbHEpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqYVFIanFSX2RROExIeXlIcV9sdkY4ID0galFRalJfTDhhQkR2KCRqYVFIanFSX2RROExIeXlIcV9CeUhReSwgJ0J5SFFfbHEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGx2X2pRUWpSKCRqTHJsT0hfQnlIUV9scSwgJGphUUhqcVJfZFE4TEh5eUhxX2x2RjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEhEZHJSKCRqYVFIanFSX2RROExIeXlIcV9CeUhReSkgJiYgSERkclIoJHlySGRfakxMSHl5KSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kbkhyX1E4YUggPSAkSTU4YUgtPm5Ickk4UVdGYThiQUp5SFFBeXlsbnZIcTZCbGFxSFFNSHJqbGF5KCRqTHJsT0hfYmxEX1E4YUhfbHEsICRqTHJsT0hfQnlIUV9scSwgJHFIZHJfbHEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5Icl9ROGFIID0gJEk1OGFILT5uSHJJOFFXRmE4YkFKeUhRQXl5bG52SHE2QmxhcUhRTUhyamxheSgkakxybE9IX2JsRF9ROGFIX2xxLCAkakxybE9IX0J5SFFfbHEsICRibERfcUhyamxheVttXVsnb0JsYXFIUV9scSddLCAkYmxEX3FIcmpsYXlbbV1bJ1FITDhRcV95SHJfbHEnXSwgJG9PbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJG5Icl9ROGFIKSAmJiAkYmxEX3FIcmpsYXlbbV1bJ2pfeXJqckJ5J10gIT0gVW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuSHJfUThhSCA9ICRJNThhSC0+bkhySThRV0ZhOGJBSnlIUUF5eWxudkhxNkJsYXFIUU1IcmpsYXlfQXlsbnZfcjhfQnlIUSgkakxybE9IX2JsRF9ROGFIX2xxLCAkakxybE9IX0J5SFFfbHEsICRibERfcUhyamxheVttXVsnb0JsYXFIUV9scSddLCAkYmxEX3FIcmpsYXlbbV1bJ1FITDhRcV95SHJfbHEnXSwgJG9PbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChIRGRyUighJG5Icl9ROGFIKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX2pMTEh5eSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbEYoJG9CbGFxSFFfcUhyamxheVttXVsnYjhRV0ZhOGJfclJkSCddID09IEsgJiYgJGpMcmxPSF9ibERfUThhSF9scSA9PSAnJyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAkeXJIZF9qTExIeXkgPSBVOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkb0JsYXFIUV9xSHJqbGF5W21dWydiOFFXRmE4Yl9yUmRIJ10gPT0gSyAmJiAkakxybE9IX2JsRF9ROGFIX2xxID09ICdtJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbEQzbGFIcXlfVkJ5SFF5ID0gJEk1OGFILT5uSHJfYjhRV0ZhOGJfeXJIZF9qTExIeXlfVkJ5SFF5KCRkbHEsICRvbHEsICRvT2xxLCAkbERfbHEsICRsRF9RbHEsICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJGxEM2xhSHF5X1ZCeUhReSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAobHl5SHIoJF8yaXdbJ0hxbHJfeXJIZF9qTExIeXknXSkgJiYgJF8yaXdbJ0hxbHJfeXJIZF9qTExIeXknXSA9PSBLKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlySGRfakxMSHl5ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIWx2X2pRUWpSKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddLCAkb2E4TFdfSHFscl95cmpyQnkpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkZGpRamFhSGFfeXJIZF9RQnZ2bHZuID09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJGphUUhqcVJfQnlIUV9kUThMSHl5SHEgPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfNlpxX0paTSgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10sICRvbHEsICRvT2xxLCAkbERfUWxxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbEYgKEw4QnZyKCRqYVFIanFSX0J5SFFfZFE4TEh5eUhxKSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJGFqckhRamFfRmE4Yl95ckhkeV9sdmRROExIeXkpIDw9IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvQnJyOHYgTGFqeXk9Im9CcnI4dm9hbHZXIiB5clJhSD0iICBGOHZyLXlsU0g6IFVVZHU7IiBlUUhGPSIjRDhxamFfeXJqckJ5X3FqeWVvOGpRcVUiICBxanJqLXI4bm5hSD0iRDhxamEiIHJSZEg9Im9CcnI4diIgTGFqeXk9IiAgIj4gPHlkanYgeXJSYUg9IiAgICBEalFubHYtUWxuZXI6IHpkdTsiPiA8bERuIHlRTD0iLi4vUUh5OEJRTEh5L2xEam5IeS85bG52LThGRi5kdm4iIHlyUmFIPSJlSGxuZXI6IFVoZHU7IERqUW5sdi1yOGQ6IC1oZHU7IERqUW5sdi1hSEZyOiBoZHU7Ij48L3lkanY+IDlsbnYtOEZGPC9vQnJyOHY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICA8cWxPIExhanl5PSJ5ZGp2TiI+PC9xbE8+IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+PC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8cWxPIExhanl5PSJROGItRmFCbHEiPjxxbE8gTGFqeXk9InlkanZVSyI+PC9xbE8+PC9xbE8+IC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJGFqckhRamFfRmE4Yl95ckhkeSkgPiBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmpvX2pMcmxPSF9hanJIUWphID0gImpMcmxPSCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmpvX2pMcmxPSF84cmVIUSA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJqb19qTHJsT0hfYWpySFFqYSA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJqb19qTHJsT0hfOHJlSFEgPSAiakxybE9IIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tYmxxbkhyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYSBMYWp5eT0idmpPIHZqTy1yam95IiBscT0iRFJ3am9LIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSI8P2RlZCBITGU4ICRyam9fakxybE9IXzhyZUhROyA/PiIgbHE9ImFsX3lyanJCeV9hOG55Ij48aiBlUUhGPSIjeXJqckJ5X2E4bnkiPjxsIExhanl5PSIgbEw4di1hbHlyIj48L2w+IDlyanJCeSBWOG55PC9qPjwvYWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIGxxPSJhbF95cmpyQnlfUUhMSHZyIj48aiBlUUhGPSIjeXJqckJ5X1FITEh2ciI+PGwgTGFqeXk9ImxMOHYtTDhueSI+PC9sPiA1SExIdnIgSmRxanJIeTwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCBscT0iYWxfYjhRV0ZhOGJfYThueSI+PGogZVFIRj0iI2I4UVdGYThiX2E4bnkiPjxsIExhanl5PSIgbEw4di1hbHlyIj48L2w+IEk4UVdGYThiIFY4bnk8L2o+PC9hbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkYWpySFFqYV9GYThiX3lySGR5KSA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIGxxPSJhbF9hanJIUWphX0ZhOGIiIExhanl5PSI8P2RlZCBITGU4ICRyam9fakxybE9IX2FqckhRamE7ID8+Ij48aiBlUUhGPSIjcWxPX3Jqb19hanJIUWphX0ZhOGIiPjxsIExhanl5PSJsTDh2LWJRSHZMZSI+PC9sPiBWanJIUWphIDNhOGI8L2o+PC9hbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLUw4dnJIdnIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InJqby1kanZIICIgbHE9InlyanJCeV9RSExIdnIiIHlyUmFIPSJEalFubHY6IFVtZHUgVW1kdSBVbWR1IFVtZHU7Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9ImQ4eXJfYWx5ciBMYUhqUUZsdSIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiOFFXRmE4Yl9hOG5fcUhyamxheSA9ICRJOFFXRmE4Yi0+bkhyX0laRTlyanJCeV82WnFfNVpNKCRvbHEsICRsRF9RbHEpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJGI4UVdGYThiX2E4bl9xSHJqbGF5KSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHFsTyBMYWp5eT0iZDh5cl9vYThMVyBMYUhqUUZsdSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlTiBMYWp5eT0iIj41SEw4UXF5IEp2ak9qbGFqb2FIITwvZU4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+LS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEY4USAoJGwgPSBtOyAkbCA8IEw4QnZyKCRiOFFXRmE4Yl9hOG5fcUhyamxheSk7ICRsKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddICE9IFUgJiYgJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10gIT0gSykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJE9IUWxGUl92OHJsRmxManJsOHZfSHVseXJ5ID0gJEk4UVdGYThiLT5uSHJJOFFXRmE4Yl9aRV8wOHJsRmxManJsOHZfNlI5cmpyQnlacSgnOXJqckJ5JywgJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsnbHEnXSwgJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10sICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2OF92OHJsRmxManJsOHZfSHVseXJ5ID0gTDhCdnIoJE9IUWxGUl92OHJsRmxManJsOHZfSHVseXJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChIRGRyUigkdjhfdjhybEZsTGpybDh2X0h1bHlyeSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSThRV0ZhOGItPnlIcjRRODdITHJacSgkZGxxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSThRV0ZhOGItPnlIcjVIRkZFOHFCYUgoJzlyanJCeScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJOFFXRmE4Yi0+eUhyNUhGRlpxKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ2xxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJOFFXRmE4Yi0+eUhySnlIUVpxKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSThRV0ZhOGItPnlIckp5SFEyUThCZCgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEk4UVdGYThiLT55SHJHUUhqckhxQXIoTUF3aV93WkVpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYl9sRF92OHJsRmxManJsOHZfanFxID0gJEk4UVdGYThiLT5qcXFfYjhRV0ZhOGJfdjhybEZsTGpybDh2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX3lySGRfcUhyamxheSA9ICRJNkJsYXFIUS0+bkhyX0k2QmxhcUhRWWphQkhfWnEoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsnb0JsYXFIUV9PamFCSF9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGp5eWxudkhxX0J5SFFfcUhyamxheSA9ICRKeUhRLT5uSHJKeUhRMGpESF82UlpxKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ0xRSGpySHFfb1InXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqeXlsdm5IcV9CeUhRID0gJGp5eWxudkhxX0J5SFFfcUhyamxheVttXVsnRnZqREgnXSAuICcgJyAuICRqeXlsbnZIcV9CeUhRX3FIcmpsYXlbbV1bJ2F2akRIJ107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyR5bG52SHFfcWpySCA9IHFqckgoJ3EgRCBSJywgeXJRcjhybERIKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ0xRSGpySHFfanInXSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdVJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPHlkanYgTGFqeXk9ImFqb0hhIGFqb0hhLXlCTExIeXkiPkFkZFE4T0hxPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYjhRV0ZhOGJfYThuX3FIcmpsYXlbJGxdWyd5cmpyQnknXSA9PSAnSycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzx5ZGp2IExhanl5PSJham9IYSBham9IYS1sdk9IUXlIIj5peUxqYWpySHE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPHlkanYgTGFqeXk9ImFqb0hhIGFqb0hhLWxEZDhRcmp2ciI+NUg3SExySHE8L3lkanYnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8eWRqdiBMYWp5eT0iYWpvSGEgYWpvSGEtYmpRdmx2biI+NEh2cWx2bjwveWRqdic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ20nIHx8IEhEZHJSKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1ialF2bHZuIj40SHZxbHZuPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ1UnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzxvIExhanl5PSJySHVyLXlCTExIeXkiPkFkZFE4T0hxPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ0snKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzxvIExhanl5PSJySHVyLWx2RjgiPml5TGphanJIcTwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1IUVE4USI+NUg3SExySHE8L28+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYjhRV0ZhOGJfYThuX3FIcmpsYXlbJGxdWyd5cmpyQnknXSA9PSAnaCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPG8gTGFqeXk9InJIdXIteUJMTEh5eSI+aXZxIGp5IGpkZFE4T2phPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzxvIExhanl5PSJySHVyLUhRUThRIj5pdnEgankgUUg3SExySHE8L28+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYjhRV0ZhOGJfYThuX3FIcmpsYXlbJGxdWyd5cmpyQnknXSA9PSAnTicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPG8gTGFqeXk9InJIdXItbHZPSFF5SCI+VDhhcTwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1sdkY4Ij41SEZIUVFIcTwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1sdkY4Ij41SEZIUVFIcTwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdQJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1ialF2bHZuIj4zOFFMSCBHYTh5SHE8L28+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYjhRV0ZhOGJfYThuX3FIcmpsYXlbJGxdWyd5cmpyQnknXSA9PSAnVW0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzxvIExhanl5PSJySHVyLXlCTExIeXkiPkFkZFE4T0ggPT4gSnlIUTwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdVVScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPG8gTGFqeXk9InJIdXIteUJMTEh5eSI+QWRkUThPSHEgYmxyZSBGOFFialFxPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ1VLJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1IUVE4USI+NUg3SExySHEgYmxyZSBGOFFialFxPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ1VYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1IUVE4USI+NUg3SExySHEgYmxyZSBvakxXYmpRcTwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdVaCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPG8gTGFqeXk9InJIdXIiPjlXbGRIcTwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdVQycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPG8gTGFqeXk9InJIdXIiPjBBPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ1VOJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1ialF2bHZuIj5NSGFIbmpySDwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdVZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPG8gTGFqeXk9InJIdXItYmpRdmx2biI+M2FIdWxGYThiPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ1V6JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1ialF2bHZuIj5BeXlsbnZIcSByOCBCeUhRPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ1VQJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1ialF2bHZuIj41OEJ2cSA1OG9sdjwvbz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ3lyanJCeSddID09ICdLbScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5cmpyQnkgPSAnPG8gTGFqeXk9InJIdXItbHZGOCI+VmpySFFqYSAzYThiIC0gWnZkUThMSHl5PC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ0tVJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci15QkxMSHl5Ij5WanJIUWphIDNhOGIgLSBHYTh5SHE8L28+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYjhRV0ZhOGJfYThuX3FIcmpsYXlbJGxdWyd5cmpyQnknXSA9PSAnS0snKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzxvIExhanl5PSJySHVyLXlCTExIeXkiPlZqckhRamEgM2E4YiAtIEFkZFE4T0hxPC9vPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJGI4UVdGYThiX2E4bl9xSHJqbGF5WyRsXVsneXJqckJ5J10gPT0gJ0tYJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlyanJCeSA9ICc8byBMYWp5eT0ickh1ci1IUVE4USI+VmpySFFqYSAzYThiIC0gNUg3SExySHE8L28+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkYjhRV0ZhOGJfYThuX3FIcmpsYXlbJGxdWyd5cmpyQnknXSA9PSAnS2gnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzxvIExhanl5PSJySHVyLUhRUThRIj5WanJIUWphIDNhOGIgLSA1SDdITHIgYmxyZSBMYTh5SHE8L28+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJqckJ5ID0gJzxvIExhanl5PSJySHVyLWJqUXZsdm4iPjRIdnFsdm48L28+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iZDh5cl9vYThMVyBMYUhqUUZsdSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZU4+PGogZVFIRj0iIyI+PD9kZWQgSExlOCAkYjhRV0ZhOGJfYThuX3FIcmpsYXlbJGxdWydMOERESHZyJ107ID8+PC9qPjwvZU4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmEgTGFqeXk9ImQ4eXJfREhyaiBMYUhqUUZsdSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSIiPjx5ZGp2PjlsbnZIcSA2UjogPC95ZGp2PiA8aiBlUUhGPSIjIj48P2RlZCBITGU4ICRqeXlsdm5IcV9CeUhROyA/Pjwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCA+PHlkanY+TWpySDogPC95ZGp2PiA8aiBlUUhGPSIjIj48P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExCUV9ROGJfcWpyaiA9ICRiOFFXRmE4Yl9hOG5fcUhyamxheVskbF1bJ0xRSGpySHFfanInXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxanJIID0gdkhiIE1qckh3bERIKCRMQlFfUThiX3FqcmopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZIYl9xanJIID0gJHFqckgtPkY4UURqcignay1ELXEgVDpsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyR2SGJfcWpySCA9ICRxanJILT5GOFFEanIoJ2stRC1xIFQ6bCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJHZIYl9xanJIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz48L2o+PC9hbD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsICBMYWp5eT0iIj48eWRqdj45ckhkOiA8L3lkanY+PG8+PD9kZWQgSExlOCAkTF95ckhkX3FIcmpsYXlbbV1bJ3lySGRfdmpESCddOyA/Pjwvbz48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbD48eWRqdj45cmpyQnk6IDwveWRqdj48P2RlZCBITGU4ICR5cmpyQnk7ID8+PC9hbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZCBITGU4ICRyam9fakxybE9IXzhyZUhROyA/PiIgbHE9InlyanJCeV9hOG55Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iTDh2ckh2ci1vOHUgIiBscT0icWxPX3lyanJCeV9hOG55X2FseXIiIHlyUmFIPSJEalFubHY6IEttZHUgS21kdSBLbWR1IEttZHU7Ij48L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCIgbHE9ImI4UVdGYThiX2E4bnkiID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iTDh2ckh2ci1vOHUgIiBscT0icWxPX2E4bnlfYWx5ciIgeXJSYUg9IkRqUW5sdjogS21kdSBLbWR1IEttZHUgS21kdTsiPjwvcWxPPiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLWRqdkggPD9kZWQgSExlOCAkcmpvX2pMcmxPSF9hanJIUWphOyA/PiIgbHE9InFsT19yam9fYWpySFFqYV9GYThiIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9Ikw4dnJIdnItbzh1ICIgbHE9InFsT19hanJIUWphX0ZhOGIiIHlyUmFIPSJEalFubHY6IEttZHUgS21kdSBLbWR1IEttZHU7Ij48L3FsTz4gICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdyam8tYThueScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnakxybE9IJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4gZWxxSCIgbHE9InJqby1hOG55IiB5clJhSD0iRGpRbmx2OiBVbWR1IFVtZHUgVW1kdSBVbWR1OyI+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlaCBMYWp5eT0iZEJhYS1hSEZyIj5JOFFXRmE4YiA5cmpyQnkgIDwvZWg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdksiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYThMV19IcWxyX3lyanJCeSA9IGpRUWpSKFUsIGgsIEMsIFVVLCBVQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hMZTggJHlySGRfakxMSHl5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFsdl9qUVFqUigkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSwgJG9hOExXX0hxbHJfeXJqckJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkZGpRamFhSGFfeXJIZF9RQnZ2bHZuID09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJGphUUhqcVJfQnlIUV9kUThMSHl5SHEgPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfNlpxX0paTSgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10sICRvbHEsICRvT2xxLCAkbERfUWxxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbEYgKEw4QnZyKCRqYVFIanFSX0J5SFFfZFE4TEh5eUhxKSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJGFqckhRamFfRmE4Yl95ckhkeV9sdmRROExIeXkpIDw9IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvQnJyOHYgTGFqeXk9Im9CcnI4dm9hbHZXIiB5clJhSD0iICBGOHZyLXlsU0g6IFVVZHU7IiBlUUhGPSIjRDhxamFfeXJqckJ5X3FqeWVvOGpRcVUiICBxanJqLXI4bm5hSD0iRDhxamEiIHJSZEg9Im9CcnI4diIgTGFqeXk9IiAgIj4gPHlkanYgeXJSYUg9IiAgICBEalFubHYtUWxuZXI6IHpkdTsiPiA8bERuIHlRTD0iLi4vUUh5OEJRTEh5L2xEam5IeS85bG52LThGRi5kdm4iIHlyUmFIPSJlSGxuZXI6IFVoZHU7IERqUW5sdi1yOGQ6IC1oZHU7IERqUW5sdi1hSEZyOiBoZHU7Ij48L3lkanY+IDlsbnYtOEZGPC9vQnJyOHY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iTDh2ckh2ci1vOHUgIiBscT0icWxPX2E4bnlfYWx5ciI+PC9xbE8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdyam8tUUhGSFFRamEnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IiBscT0icmpvLVFIRkhRUWphIiB5clJhSD0iRGpRbmx2OiBVbWR1IFVtZHUgVW1kdSBVbWR1OyI+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJMOHZySHZyLW84dSAiIGxxPSJxbE9fUUhGSFFRamFfYWx5ciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJqb2FIIExhanl5PSJyam9hSCByam9hSC1RSHlkOHZ5bE9IIHJqb2FILW84UXFIUUhxIHJqb2FILXlyUWxkSHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZUhqcT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGpESAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnlIUXZqREgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWpySAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTHJsOHYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZUhqcT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibERfUVE4YUhfQnlIUXlLID0gJEk2QmxhcUhRLT5uSHJfYjhRV0ZhOGJfbERfQVE4YUh5NUhGSFFRSGFfNlI2T2xxNVpxKCRsRF9scSwgJGxEX1FscSwgJG9PbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hMZTggTDhCdnIoJGJsRF9RUThhSF9CeUhReUspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RRbHZyX1EoJGJsRF9RUThhSF9CeUhReUspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJGJsRF9RUThhSF9CeUhReUspID4gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjhRICgkdSA9IG07ICR1IDwgTDhCdnIoJGJsRF9RUThhSF9CeUhReUspOyAkdSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFIRkhRUWphX0J5SFFfbHZGOCA9ICRKeUhRLT5uSHJKeUhReV82UlpxKCRibERfUVE4YUhfQnlIUXlLWyR1XVsnQnlIUV9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjw/ZGVkIEhMZTggJHUgKyBVOyA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT48P2RlZCBITGU4ICRRSEZIUVFqYV9CeUhRX2x2RjhbbV1bJ0Z2akRIJ10gLiAnICcgLiAkUUhGSFFRamFfQnlIUV9sdkY4W21dWydhdmpESCddIC4gJyAnIC4gJFFIRkhRUWphX0J5SFFfbHZGOFttXVsnRHZqREgnXTsgPz48L3JxPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjw/ZGVkIEhMZTggJFFIRkhRUWphX0J5SFFfbHZGOFttXVsnQnlIUXZqREgnXTsgPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+PD9kZWQgSExlOCAkYmxEX1FROGFIX0J5SFF5S1skdV1bJ0xRSGpySHFfanInXTsgPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvQnJyOHYgbHE9Ijw/ZGVkIEhMZTggJGxEX2xxIC4gJy0nIC4gJGxEX1FscSAuICctJyAuICRvT2xxIC4gJy0nIC4gJGJsRF9RUThhSF9CeUhReUtbJHVdWydCeUhRX2xxJ10gLiAnLScgLiAkYmxEX2xxOyA/PiIgclJkSD0ib0Jycjh2IiBMYWp5eT0ib3J2IG9ydi1ROEJ2cS1EbHYgb3J2LXFqdm5IUSBvcnZfTGE4eUhfUUhGSFFRamEiIHJscmFIPSJHYTh5SCI+PHlkanY+PGwgTGFqeXk9ImxMOHYtUUhEOE9IIj48L2w+PC95ZGp2Pjwvb0Jycjh2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdj0iQyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5ZGp2IExhanl5PSJham9IYSBham9IYS1sRGQ4UXJqdnIiPjVITDhRcXkgSnZqT2psYWpvYUghPC95ZGp2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JvOHFSPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yam9hSD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdyam8tbERPamFCSHknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IiBscT0icmpvLWxET2phQkh5IiB5clJhSD0iRGpRbmx2OiBVbWR1IFVtZHUgVW1kdSBVbWR1OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVoIExhanl5PSJkQmFhLWFIRnIiPkk4UVdGYThiIDlyanJCeSAgPC9laD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2SyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9hOExXX0hxbHJfeXJqckJ5ID0galFRalIoVSwgaCwgQywgVVUsIFVDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSExlOCAkeXJIZF9qTExIeXk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIWx2X2pRUWpSKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddLCAkb2E4TFdfSHFscl95cmpyQnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCR5ckhkX2pMTEh5eSA9PSBVICYmIGx2X2pRUWpSKCRvT2xxLCAkal95ckhkX2pRUSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRkalFqYWFIYV95ckhkX1FCdnZsdm4gPT0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kamFRSGpxUl9CeUhRX2RROExIeXlIcSA9ICRJOFFXRmE4Yi0+bkhyX0laRTlyanJCeV82WnFfSlpNKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSwgJG9scSwgJG9PbHEsICRsRF9RbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sRiAoTDhCdnIoJGphUUhqcVJfQnlIUV9kUThMSHl5SHEpIDw9IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkYWpySFFqYV9GYThiX3lySGR5X2x2ZFE4TEh5eSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9CcnI4diBMYWp5eT0ib0Jycjh2b2FsdlciIHlyUmFIPSIgIEY4dnIteWxTSDogVVVkdTsiIGVRSEY9IiNEOHFqYV95cmpyQnlfcWp5ZW84alFxVSIgIHFqcmotcjhubmFIPSJEOHFqYSIgclJkSD0ib0Jycjh2IiBMYWp5eT0iICAiPiA8eWRqdiB5clJhSD0iICAgIERqUW5sdi1RbG5lcjogemR1OyI+IDxsRG4geVFMPSIuLi9RSHk4QlFMSHkvbERqbkh5LzlsbnYtOEZGLmR2biIgeXJSYUg9ImVIbG5lcjogVWhkdTsgRGpRbmx2LXI4ZDogLWhkdTsgRGpRbmx2LWFIRnI6IGhkdTsiPjwveWRqdj4gOWxudi04RkY8L29CcnI4dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy99CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJvcnYtcjg4YW9qUSBkUThGbGFILXI4OGFvalEgZEJhYS1RbG5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gcmxyYUg9IjM4UUQgNUhkOFFyIiBMYWp5eT0ib3J2LW5ROEJkIGRCYWEtUWxuZXIiPiA8aiBlUUhGPSIjIiBMYWp5eT0iIG9ydiBvcnYtbEw4diBvcnYteUJMTEh5eSIgbHE9IkY4UURfUUhkOFFyX0h1ZDhRciI+PGwgTGFqeXk9ImxMOHYtZFFsdnIiIHlyUmFIPSJEalFubHYtUWxuZXI6IFVkdTsiPjwvbD40cUYgNUhkOFFyPC9qPiA8L3FsTz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdlVLIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iTDh2ckh2ci1ibHFuSHJ5IGFsbmVyLW5RalIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHFsTyBMYWp5eT0iYmxxbkhyLWVIanEgb2FCSCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZVg+PD9kZWQgSExlOCAkbHZxSHVfRGp5ckhRX3FIcmpsYXlbbV1bJ2x2cUh1X0RqeXJIUSddOyA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZVg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPi0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJibHFuSHItTDh2cmpsdkhRIj4KCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyam9hSCBMYWp5eT0icmpvYUggcmpvYUgtbzhRcUhRSHEgcmpvYUgteXJRbGRIcSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlSGpxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM2xIYXEgMGpESAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZSBMOGF5ZGp2ID0gIksiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlqYUJICiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlSGpxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxybzhxUj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRsdnFIdV9EanlySFFfcUhyamxheVttXVsnbHEnXSA9PSAkRGp5ckhRX2x2RjhbbV1bJ2xxJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxSHJqbGF5ID0gJFpFQTl3aTUtPm5IcjNsSGFxaXVySHZxXzZSWnEoJEh2RmpfcUhyamxheVttXVsndmpESF84Rl9kUTg3SExyJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZqREhfOEZfZFE4N0hMciA9ICRxSHJqbGF5W21dWydGbEhhcV9PamFCSCddOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxSHJqbGF5ID0gJFpFQTl3aTUtPm5IcjNsSGFxaXVySHZxXzZSWnEoJEh2RmpfcUhyamxheVttXVsnRkJ2THJsOHZfdmpESCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGQnZMcmw4diA9ICRxSHJqbGF5W21dWydGbEhhcV9PamFCSCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFIcmpsYXkgPSAkWkVBOXdpNS0+bkhyM2xIYXFpdXJIdnFfNlJacSgkSHZGal9xSHJqbGF5W21dWydqZGRROE9IUV9VJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpkZFE4T0hRX1UgPSAkcUhyamxheVttXVsnRmxIYXFfT2phQkgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxSHJqbGF5ID0gJFpFQTl3aTUtPm5IcjNsSGFxaXVySHZxXzZSWnEoJEh2RmpfcUhyamxheVttXVsnamRkUThPSFFfSyddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqZGRROE9IUV9LID0gJHFIcmpsYXlbbV1bJ0ZsSGFxX09qYUJIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcUhyamxheSA9ICRaRUE5d2k1LT5uSHIzbEhhcWl1ckh2cV82UlpxKCRIdkZqX3FIcmpsYXlbbV1bJ2pkZFE4T0hRX1gnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkamRkUThPSFFfWCA9ICRxSHJqbGF5W21dWydGbEhhcV9PamFCSCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPndscmFIPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48ZD48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ3JscmFIJ10gPz48L2Q+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjBqREggOEYgNFE4N0hMcjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanYgPSAiSyI+PD9kZWQgSExlOCAkdmpESF84Rl9kUTg3SExyOyA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4wakRIIDhGIGlhSERIdnI8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsndmpESF84Rl9IYUhESHZyJ10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+d1JkSCBjRiBBZGRROE9qYSAwOHJIPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ3JSZEhfOEZfamRkUThPamFfdjhySCddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjNCdkxybDh2PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRGQnZMcmw4diA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPjxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+SDAzQSA1SEYuIDA4PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ0h2RmpfUUhGX3Y4J10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT48clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjZRbEhGIDlCRERqUVI8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnb1FsSEZfeUJERGpRUiddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+PHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT41SEw4RERIdnFqcmw4djwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanYgPSAiSyI+PD9kZWQgSExlOCAkSHZGal9xSHJqbGF5W21dWydRSEw4RERIdnFqcmw4diddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+PHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT45SGFITHJIcSBZSHZxOFE8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsneUhhSExySHFfT0h2cThRJ10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT48clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjRjIDhRIDBjMC00YyBvanlIcSBBZGRROE9qYTwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanYgPSAiSyI+PD9kZWQgSExlOCAkSHZGal9xSHJqbGF5W21dWydqZGRROE9qYV9vanlIcSddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+PHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4wYzAgNGMgNmp5SHEgaXVkSHZ5SHk8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsndjh2X2Q4amRkUThPamFfSHVkSHZ5SHknXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPjxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+NkJxbkhySHEgLyAwOHYgNkJxbkhySHE8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnb0JxbkhySHFfdjh2b0JxbkhySHEnXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT42QnFuSHIgRjhRIHJlbHkgOUw4ZEg8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnb0JxbkhyX0Y4UV95TDhkSCddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPmNRcUhRIFlqYUJIPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJzhRcUhRX09qYUJIJ10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+SnlIUS80QlFMZWp5SCA1SHRCbHlscmw4diBNanJIPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ1FIdEJseWxybDh2X3FqckgnXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT45QTQgNEJRTGVqeUggNUh0Qmx5bHJsOHYgMDg8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnUUh0Qmx5bHJsOHZfdjgnXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT40alJESHZyIHdIUUR5PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ2RqUkRIdnJfckhRRHknXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT5BdlIgOWRITGxqYSBBZGRROE9qYTwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanYgPSAiSyI+PD9kZWQgSExlOCAkSHZGal9xSHJqbGF5W21dWyd5ZEhMbGphX2pkZFE4T2phJ10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+TUhyamxhIDhGIHJqdUh5IGpkZGFsTGpvYUg8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsncmp1X2pkZGFsTGpvYUgnXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT5HOERkYUhybDh2IGRIUWw4cSA4RiB5TDhkSCA4RiBiOFFXPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ2RIUWw4cV84Rl9iOFFXJ10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+Vmx0QmxxanJIcSBNakRqbkg8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnYWx0QmxxanJIcV9xakRqbkgnXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT5NSEZITHIgVmxqb2xhbHJSIDRIUWw4cTwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanYgPSAiSyI+PD9kZWQgSExlOCAkSHZGal9xSHJqbGF5W21dWydhbGpvbGFsclJfZEhRbDhxJ10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+NjIgTUhyamxheSAoQTYyLCBHNDYyLCA0NjIsIEc4UWQ4UWpySCA2Mik8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnb25fcUhyamxheSddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPmNyZUhRIDlkSExsamEgckhRRHkganZxIEc4dnFscmw4diwgbEYganZSLjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanYgPSAiSyI+PD9kZWQgSExlOCAkSHZGal9xSHJqbGF5W21dWydySFFEeV9MOHZxbHJsOHYnXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT5pdUxIZHJsOHYgRlE4RCA0OGFsTFI8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnSHVMSGRybDh2J10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+M2taPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdiA9ICJLIj48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ0ZSbCddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPlp2bHJsanJIcSA2UjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanYgPSAiSyI+PD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEp5SFEgPSB2SGIgQnlIUSgkcW8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQnlIUV9xSHJqbGF5ID0gJEp5SFEtPm5Ickp5SFF5XzZSWnEoJEh2RmpfcUhyamxheVttXVsnTFFIanJIcV9vUiddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAkQnlIUV9xSHJqbGF5W21dWydGdmpESCddIC4gJyAnIC4gJEJ5SFFfcUhyamxheVttXVsnRHZqREgnXSAuICcgJyAuICRCeUhRX3FIcmpsYXlbbV1bJ2F2akRIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PC9ycT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT5admxybGpySHEgY3Y8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMOGF5ZGp2ID0gIksiPjw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMQlFfUThiX3FqcmogPSAkSHZGal9xSHJqbGF5W21dWydMUUhqckhxX2pyJ107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcWpySCA9IHZIYiBNanJId2xESCgkTEJRX1E4Yl9xanJqKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZIYl9xanJIID0gJHFqckgtPkY4UURqcignay1ELXEgVDpsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJHZIYl9xanJIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvcnE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ybzhxUj48L3Jqb2FIPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmpvYUggTGFqeXk9InJqb2FIIHJqb2FILVFIeWQ4dnlsT0ggcmpvYUgtbzhRcUhRSHEgcmpvYUgteXJRbGRIcSI+PHJvOHFSPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT48cmUgTDhheWRqdj0iWCIgeXJSYUg9ImphbG52OiBMSHZySFE7Ij4gNlpNTWk1IE1pd0FaVjkgPC9yZT48L3JRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJEh2RmpfcUhyamxheSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlPjBqREggY0YgcmVIIDZscXFIUTwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT5jRkZIUSA1SExIbE9IcTwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT53SExldmxMamFhUiBBTExIZHJqb2FIPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkIEY4UUhqTGUgKCRvbHFxSFFfcUhyamxheSBqeSAkb3EpIHsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT48P2RlZCBITGU4ICRvcVsndmpESF84Rl9vbHFxSFEnXTsgPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjw/ZGVkIEhMZTggJG9xWyc4RkZIUV9RSExIbE9IcSddOyA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+PD9kZWQgSExlOCAkb3FbJ3JITGV2bExqYWFSX2pMTEhkcmpvYUgnXTsgPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ybzhxUj48L3Jqb2FIPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyam9hSCBMYWp5eT0icmpvYUggcmpvYUgtbzhRcUhRSHEgcmpvYUgteXJRbGRIcSI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+PHJxIEw4YXlkanY9IlgiPjxvPkE0NDVjWWk1IE1pd0FaVjkgIDwvbz48L3JxPjwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+PHJlPjxvPkFkZFE4T0hRIFU8L28+PC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+PD9kZWQgSExlOCAkamRkUThPSFFfVSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPjxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+PG8+QWRkUThPSFEgSzwvbz48L3JlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT48P2RlZCBITGU4ICRqZGRROE9IUV9LID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlPjxvPkFkZFE4T0hRIFg8L28+PC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+PD9kZWQgSExlOCAkamRkUThPSFFfWCA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ybzhxUj48L3Jqb2FIPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyam9hSD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJqb2FIIExhanl5PSJyam9hSCByam9hSC1vOFFxSFFIcSByam9hSC15clFsZEhxIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPjxycSBMOGF5ZGp2PSJYIj48bz5pdUxIZHJsOHYgTWl3QVpWOSAgPC9vPjwvcnE+PC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+PHJlPjxvPiBNayBpdUxIZHJsOHY8L28+PC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnSHVMSGRybDh2X2gnXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+PHJlPjxvPiBHM2MgaXVMSGRybDh2PC9vPjwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT48P2RlZCBITGU4ICRIdkZqX3FIcmpsYXlbbV1bJ0h1TEhkcmw4dl9VJ10gPz48L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+PHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+PG8+IEdjYyBpdUxIZHJsOHY8L28+PC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjw/ZGVkIEhMZTggJEh2RmpfcUhyamxheVttXVsnSHVMSGRybDh2X0snXSA/PjwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT48bz4gR2ljIGl1TEhkcmw4djwvbz48L3JlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+PD9kZWQgSExlOCAkSHZGal9xSHJqbGF5W21dWydIdUxIZHJsOHZfWCddID8+PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm84cVI+PC9yam9hSD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjhRICgkbCA9IG07ICRsIDwgTDhCdnIoJGx2cUh1X0ZsSGFxX3FIcmpsYXkpOyAkbCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGx2cUh1X0ZsSGFxX3FIcmpsYXlbJGxdWydCdmx0QkhfRiddID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcV9GbEhhcV92akRIID0gIjx5clE4dm4+IiAuICRsdnFIdV9GbEhhcV9xSHJqbGF5WyRsXVsnRmxIYXFfdmpESCddIC4gIjwveXJROHZuPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxX0ZsSGFxX3ZqREggPSAkbHZxSHVfRmxIYXFfcUhyamxheVskbF1bJ0ZsSGFxX3ZqREgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxX0ZsSGFxX3ZqREhfcmpvYUggPSAkbHZxSHVfRmxIYXFfcUhyamxheVskbF1bJ0ZsSGFxX3ZqREhfcmpvYUgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQgSExlOCAkcV9GbEhhcV92akRIOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hMZTggJGx2cUh1X0ZsSGFxX3FIcmpsYXlbJGxdWydGbEhhcV9yUmRIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkbHZxSHVfRmxIYXFfcUhyamxheVskbF1bJ0ZsSGFxX3JSZEgnXSA9PSAnOUhhSExyIEVIdkInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcUhyamxheSA9ICRaRUE5d2k1LT5uSHIzbEhhcWl1ckh2cV82UlpxKCRsdnFIdV9PamFCSF9xSHJqbGF5W21dWyRxX0ZsSGFxX3ZqREhfcmpvYUhdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbEhhcV9PamFCSCA9ICRxSHJqbGF5W21dWydGbEhhcV9PamFCSCddOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJEZsSGFxX09qYUJIKSAmJiAkRmxIYXFfT2phQkggPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICctLSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJEZsSGFxX09qYUJIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRsdnFIdV9GbEhhcV9xSHJqbGF5WyRsXVsnRmxIYXFfclJkSCddID09ICdHZUhMV284dScgfHwgJGx2cUh1X0ZsSGFxX3FIcmpsYXlbJGxdWydGbEhhcV9yUmRIJ10gPT0gJzVqcWw4JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxERmxIYXFfTGVITFdRanFsOF9scXkgPSBIdWRhOHFIKCIsIiwgJGx2cUh1X09qYUJIX3FIcmpsYXlbbV1bJHFfRmxIYXFfdmpESF9yam9hSF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZsSGFxX09qYUJIX2pRUSA9IGpRUWpSKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFEgKCRMZVFxID0gbTsgJExlUXEgPCBMOEJ2cigkbERGbEhhcV9MZUhMV1FqcWw4X2xxeSk7ICRMZVFxKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcUhyamxheSA9ICRaRUE5d2k1LT5uSHIzbEhhcWl1ckh2cV82UlpxKCRsREZsSGFxX0xlSExXUWpxbDhfbHF5WyRMZVFxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalFRalJfZEJ5ZSgkRmxIYXFfT2phQkhfalFRLCAkcUhyamxheVttXVsnRmxIYXFfT2phQkgnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmxIYXFfT2phQkggPSBsRGRhOHFIKCIsIiwgJEZsSGFxX09qYUJIX2pRUSk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChIRGRyUigkRmxIYXFfT2phQkgpICYmICRGbEhhcV9PamFCSCA9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJy0tJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAkRmxIYXFfT2phQkg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJGx2cUh1X09qYUJIX3FIcmpsYXlbbV1bJHFfRmxIYXFfdmpESF9yam9hSF0pICYmICRsdnFIdV9PamFCSF9xSHJqbGF5W21dWyRxX0ZsSGFxX3ZqREhfcmpvYUhdID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnLS0nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBITGU4ICRsdnFIdV9PamFCSF9xSHJqbGF5W21dWyRxX0ZsSGFxX3ZqREhfcmpvYUhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICh5clFkOHkoJGx2cUh1X09qYUJIX3FIcmpsYXlbbV1bJHFfRmxIYXFfdmpESF9yam9hSF0sICdxanJqJykgPT09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxGUWpESCBMYWp5eT0iRlFqREgiIGVIbG5lcj0iVW1tInlRTD0iPD9kZWQgSExlOCAkbHZxSHVfT2phQkhfcUhyamxheVttXVskcV9GbEhhcV92akRIX3Jqb2FIXTsgPz4iPjwvbEZRakRIPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJGx2cUh1X09qYUJIX3FIcmpsYXlbbV1bJHFfRmxIYXFfdmpESF9yam9hSF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeV9PamFCSF9scSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlfRmxIYXFfT2phQkggPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+QXFxSHEgNlI8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPjw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEp5SFEgPSB2SGIgQnlIUSgkcW8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRCeUhRX3FIcmpsYXkgPSAkSnlIUS0+bkhySnlIUXlfNlJacSgkbHZxSHVfT2phQkhfcUhyamxheVttXVsnanFxSHFfb1InXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAkQnlIUV9xSHJqbGF5W21dWydGdmpESCddIC4gJyAnIC4gJEJ5SFFfcUhyamxheVttXVsnRHZqREgnXSAuICcgJyAuICRCeUhRX3FIcmpsYXlbbV1bJ2F2akRIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz48L3JxPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPkFxcUhxIGN2PC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT48P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMQlFfUThiX3FqcmogPSAkbHZxSHVfT2phQkhfcUhyamxheVttXVsnYThuX3FqckhybERIJ107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxanJIID0gdkhiIE1qckh3bERIKCRMQlFfUThiX3FqcmopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2SGJfcWpySCA9ICRxanJILT5GOFFEanIoJ2stRC1xIFQ6bCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJHZIYl9xanJIOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PC9ycT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm84cVI+PC9yam9hSD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkIH0gPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmpvYUg+PHJvOHFSPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb0JsYXFIUV9GbFF5cl95ckhkX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9JNkJsYXFIUVlqYUJIXzNsUXlyXzZacSgkb2xxKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGx2cUh1X0RqeXJIUV9xSHJqbGF5W21dWydscSddID09ICREanlySFFfbHZGOFttXVsnbHEnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+ICAgIDxyUT48cnEgTDhheWRqdj0iWCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJGOFFELWpMcmw4dnkiPiA8aiByalFuSHI9Il9vYWp2VyIgZVFIRj0iLi4vbHZxSHUuZGVkP1F0PTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJ0h2RmovSHZGal9IcWxyMzhRRC5kZWQnLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4mUUhMOFFxX2xxPTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJGxEX1FscSwgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+JmxxPTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJEh2RmpfcUhyamxheVttXVsnbHEnXSwgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+JmRscT08P2RlZCBITGU4IEh2TFFSZHJfQlFhKCRkbHEsIEE0NF9pMEc1azR3WmMwXzlBVncpOyA/PiZIcWxyX0ZsYXJIUT08P2RlZCBITGU4ICRIcWxyX0ZsYXJIUTsgPz4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b0Jycjh2IHJSZEg9Im9CcnI4diIgTGFqeXk9Im9ydiBvcnYteUJMTEh5eSI+aXFscjwvb0Jycjh2PiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2o+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxEanlySFFfRjhRRCA9IHZIYiBsRGp5ckhRX0Y4UUQoJHFvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbERqeXJIUV9GOFFEX3FIcmpsYXkgPSAkbERqeXJIUV9GOFFELT5uSHIzOFFENlJaRGp5ckhRWnEoJGxEX2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoSERkclIoJGxEanlySFFfRjhRRF9xSHJqbGF5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnEgTDhheWRqdj0iSyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJGOFFELWpMcmw4dnkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxqIHJqUW5Icj0iX29hanZXIiBlUUhGPSIuLi9sdnFIdS5kZWQ/UXQ9PD9kZWQgSExlOCBIdkxRUmRyX0JRYSgnbHZxSHVfRGp5ckhRL2xPamFCSF9IcWxyRjhRRC5kZWQnLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4mUUhMOFFxX2xxPTw/ZGVkIEhMZTggSHZMUVJkcl9CUWEoJGxEX1FscSwgQTQ0X2kwRzVrNHdaYzBfOUFWdyk7ID8+JmxxPTw/ZGVkIEhMZTggJGxEX2xxOyA/PiZkbHE9PD9kZWQgSExlOCBIdkxRUmRyX0JRYSgkZGxxLCBBNDRfaTBHNWs0d1pjMF85QVZ3KTsgPz4mSHFscl9GbGFySFE9PD9kZWQgSExlOCAkSHFscl9GbGFySFE7ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9CcnI4diByUmRIPSJvQnJyOHYiIExhanl5PSJvcnYgb3J2LXlCTExIeXkiPmlxbHI8L29CcnI4dj4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9qPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4gCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JvOHFSPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yam9hSD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdyam8tckhEZGFqckgnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkckhEZGFqckhfcUhyamxheSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICJlbHFIIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4iIGxxPSJyam8tckhEZGFqckgiIHlyUmFIPSJEalFubHY6IFVtZHUgVW1kdSBVbWR1IFVtZHU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkIGxGIChMOEJ2cigkckhEZGFqckhfcUhyamxheSkgPiBtKSB7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eWRqdiBMYWp5eT0iYWpvSGEgYWpvSGEtbERkOFFyanZyIG9ydi1IcWxyLU9qYUJIIiBscT0iPD9kZWQgSExlOCBIdkxRUmRyX0JRYSgkbERfUWxxLCBBNDRfaTBHNWs0d1pjMF85QVZ3KSAuICdfJyAuICRsRF9scTsgPz4iPmlxbHIgWWphQkg8L3lkanY+PG9RPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdlVLIHlMUThhYSIgIHlyUmFIPSJlSGxuZXI6IHptQ2R1O2JscXJlOlVtbSUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxySHVyalFIaiBRSGpxOHZhUj0iclFCSCIgbHE9IkhhRFUiIHZqREg9IkhhRFUiIEw4YXk9IlVDbSIgeXJSYUg9ImJscXJlOiBVbW0lIiBMYWp5eT0icmx2UkRMSCI+PD9kZWQgSExlOCAkckhEZGFqckhfcUhyamxheVttXVsnTDh2ckh2ciddOyA/Pjwvckh1cmpRSGo+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8eWRqdiBMYWp5eT0iYWpvSGEiPjVITDhRcSBKdmpPamxham9hSCE8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdyam8tRjhRRHknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkZFFIT2w4QnlfcVJ2akRsTF9GOFFEeSkgPD0gbSAmJiBMOEJ2cigkeXJIZF9xUnZqRGxMX0Y4UUR5KSA8PSBtICYmIEw4QnZyKCRkUUhPbDhCeV95cmpybExfRjhRRHkpIDw9IG0gJiYgTDhCdnIoJHlySGRfeXJqcmxMX0Y4UUR5KSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggImVscUgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiIgbHE9InJqby1GOFFEeSIgeXJSYUg9IkRqUW5sdjogVW1kdSBVbWR1IFVtZHUgVW1kdTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlaCBMYWp5eT0iZEJhYS1hSEZyIj5JOFFXRmE4YiA5cmpyQnkgPC9laD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2SyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9hOExXX0hxbHJfeXJqckJ5ID0galFRalIoVSwgaCwgQywgVVUsIFVDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSExlOCAkeXJIZF9qTExIeXk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIWx2X2pRUWpSKCRhanJIeXJfeXJqckJ5X3FIcmpsYXlbbV1bJ3lyanJCeSddLCAkb2E4TFdfSHFscl95cmpyQnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCR5ckhkX2pMTEh5eSA9PSBVICYmIGx2X2pRUWpSKCRvT2xxLCAkal95ckhkX2pRUSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRkalFqYWFIYV95ckhkX1FCdnZsdm4gPT0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kamFRSGpxUl9CeUhRX2RROExIeXlIcSA9ICRJOFFXRmE4Yi0+bkhyX0laRTlyanJCeV82WnFfSlpNKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSwgJG9scSwgJG9PbHEsICRsRF9RbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sRiAoTDhCdnIoJGphUUhqcVJfQnlIUV9kUThMSHl5SHEpIDw9IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkYWpySFFqYV9GYThiX3lySGR5X2x2ZFE4TEh5eSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9CcnI4diBMYWp5eT0ib0Jycjh2b2FsdlciIHlyUmFIPSIgIEY4dnIteWxTSDogVVVkdTsiIGVRSEY9IiNEOHFqYV95cmpyQnlfcWp5ZW84alFxVSIgIHFqcmotcjhubmFIPSJEOHFqYSIgclJkSD0ib0Jycjh2IiBMYWp5eT0iICAiPiA8eWRqdiB5clJhSD0iICAgIERqUW5sdi1RbG5lcjogemR1OyI+IDxsRG4geVFMPSIuLi9RSHk4QlFMSHkvbERqbkh5LzlsbnYtOEZGLmR2biIgeXJSYUg9ImVIbG5lcjogVWhkdTsgRGpRbmx2LXI4ZDogLWhkdTsgRGpRbmx2LWFIRnI6IGhkdTsiPjwveWRqdj4gOWxudi04RkY8L29CcnI4dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy99CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRkUUhPbDhCeV9xUnZqRGxMX0Y4UUR5KSA+IG0gfHwgTDhCdnIoJHlySGRfcVJ2akRsTF9GOFFEeSkgPiBtIHx8IEw4QnZyKCRkUUhPbDhCeV95cmpybExfRjhRRHkpID4gbSB8fCBMOEJ2cigkeXJIZF95cmpybExfRjhRRHkpID4gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYSBMYWp5eT0idmpPIHZqTy1yam95IiBscT0iRFJ3am8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGx2TFFfdSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjhRSGpMZSAoJGRRSE9sOEJ5X3FSdmpEbExfRjhRRHkgankgJGRRSF9xUkY4UUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRSF9xUkY4UURfbERfbHEgPSAkZFFIX3FSRjhRRFsnbERfbHEnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRSF9xUkY4UURfbERfbHZGOCA9ICRaRUE5d2k1LT5uSHJadnFIdUVqeXJIUTZSWk0oJGRRSF9xUkY4UURfbERfbHEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRsdkxRX3UgPT0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRSF9GOFFEX3lyanJCeSA9ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRSF9GOFFEX3lyanJCeV9yUWxubkhRID0gVTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkUUhfRjhRRF95cmpyQnkgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJGRRSF9GOFFEX3lyanJCeV9yUWxubkhRID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWwgTGFqeXk9Ijw/ZGVkIEhMZTggJGRRSF9GOFFEX3lyanJCeTsgPz4iPjxqIGVRSEY9IiNyam8tZFFILUY4UUQtPD9kZWQgSExlOCAkZFFIX3FSRjhRRF9sRF9scTsgPz4iPjxsIExhanl5PSJsTDh2LUZsYUgiPjwvbD4gPD9kZWQgSExlOCAkZFFIX3FSRjhRRF9sRF9sdkY4W21dWydsdnFIdV9EanlySFEnXTsgPz4gLSAzOFFEPC9qPjwvYWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsdkxRX3UrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbHZMUV91ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFFIakxlICgkeXJIZF9xUnZqRGxMX0Y4UUR5IGp5ICRxUkY4UUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFSRjhRRF9sRF9scSA9ICRxUkY4UURbJ2xEX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxUkY4UURfbERfbHZGOCA9ICRaRUE5d2k1LT5uSHJadnFIdUVqeXJIUTZSWk0oJHFSRjhRRF9sRF9scSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGx2TFFfdSA9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGRRSF9GOFFEX3lyanJCeV9yUWxubkhRID09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcVJGOFFEX2xEX3lyanJCeSA9ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFSRjhRRF9sRF95cmpyQnkgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hMZTggJ3Jqby1GOFFELScuJGRRSF9GOFFEX3lyanJCeV9yUWxubkhROwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWwgTGFqeXk9Ijw/ZGVkIEhMZTggJHFSRjhRRF9sRF95cmpyQnk7ID8+Ij48aiBlUUhGPSIjcmpvLUY4UUQtPD9kZWQgSExlOCAkcVJGOFFEX2xEX2xxOyA/PiI+PGwgTGFqeXk9ImxMOHYtRmxhSCI+PC9sPiA8P2RlZCBITGU4ICRxUkY4UURfbERfbHZGOFttXVsnbHZxSHVfRGp5ckhRJ107ID8+IC0gMzhRRDwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbHZMUV91Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjhRSGpMZSAoJGRRSE9sOEJ5X3lyanJsTF9GOFFEeSBqeSAkZFFIX3lGOFFEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkUUhfeUY4UURfcm9fdmpESCA9ICRkUUhfeUY4UURbJ3Jqb2FIX3ZqREgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRkUUhfeUY4UURfcm9fdmpESCA9PSAneXJqcmxMX2FIbmphJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlGOFFEX3JvX3ZqREhfeXJRID0gIkc4cUhRIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWw+PGogZVFIRj0iI3Jqby1kUUgteUY4UUQtPD9kZWQgSExlOCAkZFFIX3lGOFFEX3JvX3ZqREg7ID8+Ij48bCBMYWp5eT0ibEw4di1GbGFIIj48L2w+IDw/ZGVkIEhMZTggJHlGOFFEX3JvX3ZqREhfeXJROyA/PiAtIDM4UUQ8L2o+PC9hbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFFIakxlICgkeXJIZF95cmpybExfRjhRRHkgankgJHlGOFFEKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeUY4UURfcm9fdmpESCA9ICR5RjhRRFsncmpvYUhfdmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJHlGOFFEX3JvX3ZqREggPT0gJ3lyanJsTF9hSG5qYScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5RjhRRF9yb192akRIX3lyUSA9ICJHOHFIUSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsPjxqIGVRSEY9IiNyam8teUY4UUQtPD9kZWQgSExlOCAkeUY4UURfcm9fdmpESDsgPz4iPjxsIExhanl5PSJsTDh2LUZsYUgiPjwvbD4gPD9kZWQgSExlOCAkeUY4UURfcm9fdmpESF95clE7ID8+IC0gMzhRRDwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InJqby1MOHZySHZyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx2TGFCcUggJ2JsRF9IcWxyRjhRRF9xUl9sRC5kZWQnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8cWxPIExhanl5PSJROGItRmFCbHEiPjxxbE8gTGFqeXk9InlkanZVSyI+PHlkanYgTGFqeXk9ImFqb0hhIj41SEw4UXF5IEp2ak9qbGFqb2FIITwveWRqdj48L3FsTz48L3FsTz4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InJqby1kanZIIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSkgJiYgJF81aXhKaTl3WydqX3Jqb19Eamx2J10gPT0gJ3Jqby1GbGFIeScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnakxybE9IJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4iIGxxPSJyam8tRmxhSHkiIHlyUmFIPSJEalFubHY6IFVtZHUgVW1kdSBVbWR1IFVtZHU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWggTGFqeXk9ImRCYWEtYUhGciI+SThRV0ZhOGIgOXJqckJ5ICA8L2VoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2E4TFdfSHFscl95cmpyQnkgPSBqUVFqUihVLCBoLCBDLCBVVSwgVUMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ITGU4ICR5ckhkX2pMTEh5eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghbHZfalFRalIoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10sICRvYThMV19IcWxyX3lyanJCeSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJHlySGRfakxMSHl5ID09IFUgJiYgbHZfalFRalIoJG9PbHEsICRqX3lySGRfalFRKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGRqUWphYUhhX3lySGRfUUJ2dmx2biA9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRqYVFIanFSX0J5SFFfZFE4TEh5eUhxID0gJEk4UVdGYThiLT5uSHJfSVpFOXJqckJ5XzZacV9KWk0oJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10sICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddLCAkb2xxLCAkb09scSwgJGxEX1FscSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xGIChMOEJ2cigkamFRSGpxUl9CeUhRX2RROExIeXlIcSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRhanJIUWphX0ZhOGJfeXJIZHlfbHZkUThMSHl5KSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b0Jycjh2IExhanl5PSJvQnJyOHZvYWx2VyIgeXJSYUg9IiAgRjh2ci15bFNIOiBVVWR1OyIgZVFIRj0iI0Q4cWphX3lyanJCeV9xanllbzhqUXFVIiAgcWpyai1yOG5uYUg9IkQ4cWphIiByUmRIPSJvQnJyOHYiIExhanl5PSIgICI+IDx5ZGp2IHlyUmFIPSIgICAgRGpRbmx2LVFsbmVyOiB6ZHU7Ij4gPGxEbiB5UUw9Ii4uL1FIeThCUUxIeS9sRGpuSHkvOWxudi04RkYuZHZuIiB5clJhSD0iZUhsbmVyOiBVaGR1OyBEalFubHYtcjhkOiAtaGR1OyBEalFubHYtYUhGcjogaGR1OyI+PC95ZGp2PiA5bG52LThGRjwvb0Jycjh2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tYmxxbkhyIiB5clJhSD0iRGpRbmx2OiBVbWR1IG1kdSBVbWR1IG1kdTsiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhIExhanl5PSJ2ak8gdmpPLXJqb3kiIGxxPSJEUndqb0siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSJqTHJsT0giPjxqIGVRSEY9IiNyam8tcThMeUhyIj48bCBMYWp5eT0ibEw4di1GbGFILWphciI+PC9sPiBNOEwtOUhyIDNsYUh5PC9qPjwvYWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tPGFsIExhanl5PSI8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkXzVpeEppOXdbJ2pfcmpvX3lCbyddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX3lCbyddID09ICdyam8tanJyakxlREh2cicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4iPjxqIGVRSEY9IiNyam8tanJyakxlREh2ciI+PGwgTGFqeXk9ImxMOHYtZGpkSFEtTGFsZCI+PC9sPiBBcnJqTGVESHZyeTwvaj48L2FsPi0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSI8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkXzVpeEppOXdbJ2pfcmpvX3lCbyddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX3lCbyddID09ICdyam8tcThMeUhyLURseXlsdm4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnakxybE9IJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Ij48aiBlUUhGPSIjcmpvLXE4THlIci1EbHl5bHZuIj48bCBMYWp5eT0ibEw4di1GbGFIIj48L2w+IE04TC05SHIgRWx5eWx2biAzbGFIeTwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tTDh2ckh2ciI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLWRqdkggakxybE9IIiBscT0icmpvLXE4THlIciIgeXJSYUg9IkRqUW5sdjogVW1kdSBVbWR1IFVtZHUgVW1kdTsiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gICAgICBNY0cgOWl3IDVKVmkKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYmxEX2x2RjggPSAkSThRV0ZhOGItPm5IcklaRV82UlpNKCRibERfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsRF9scSA9ICRibERfbHZGOFttXVsnbERfbHEnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUUhMOFFxX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9vQmxhcUhRX3E4THlIcl9RQmFIXzZZWk0oJGRscSwgJG9scSwgJG9PbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2OF9RSEw4UXFfbHZGOCA9IEw4QnZyKCRRSEw4UXFfbHZGOCk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkWkVBOXdpNSA9IHZIYiBsdnFIdV9EanlySFEoJHFvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkWkVBOXdpNS0+eUhyNUhMOFFxWnEoJGxEX1FscSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGx2cUh1X09qYUJIX3FIcmpsYXkgPSAkWkVBOXdpNS0+bkhyWnZxSHVZamFCSF82UjVITDhRcTlIclpxKCRsRF9scSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGx2cUh1X0ZsSGFxX3FIcmpsYXkgPSAkWkVBOXdpNS0+bkhyWnZxSHUzbEhhcUp5SFEoJGxEX2xxLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSk7Ci8vZFFsdnJfUSgkbHZxSHVfRmxIYXFfcUhyamxheSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRSHRCbFFIcV9xOEx5SHIgPSBqUVFqUigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEY4USAoJGwgPSBtOyAkbCA8ICR2OF9RSEw4UXFfbHZGODsgJGwrKykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFCYUhfbERGX2xxID0gJFFITDhRcV9sdkY4WyRsXVsnbERGX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMQlFRSHZyX0ZsSGFxX2x2RjggPSAkWkVBOXdpNS0+bkhyWnZxSHUzbEhhcV82UlpxKCRRQmFIX2xERl9scSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkTEJRUUh2cl9GbEhhcV9sdkY4W21dWydGbEhhcV9yUmRIJ10gPT0gJzlIYUhMciBFSHZCJyB8fCAkTEJRUUh2cl9GbEhhcV9sdkY4W21dWydGbEhhcV9yUmRIJ10gPT0gJ0dlSExXbzh1JyB8fCAkTEJRUUh2cl9GbEhhcV9sdkY4W21dWydGbEhhcV9yUmRIJ10gPT0gJzVqcWw4JykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxX0ZsSGFxX3ZqREhfcmpvYUggPSAkTEJRUUh2cl9GbEhhcV9sdkY4W21dWydGbEhhcV92akRIX3Jqb2FIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcUhyamxheSA9ICRaRUE5d2k1LT5uSHIzbEhhcWl1ckh2cV82UlpxKCRsdnFIdV9PamFCSF9xSHJqbGF5W21dWyRxX0ZsSGFxX3ZqREhfcmpvYUhdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsRF9GbEhhcV9PamEgPSAkcUhyamxheVttXVsnRmxIYXFfT2phQkgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICh5clFMRGQoJFFITDhRcV9sdkY4WyRsXVsnbERGX09qYUJIJ10sICRsRF9GbEhhcV9PamEpID09IG0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogJEk2QmxhcUhRLT55SHI0UTg3SExyWnEoJFFITDhRcV9sdkY4W21dWydkUTg3SExyX2xxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI2QmxhcUhRWnEoJFFITDhRcV9sdkY4W21dWydvQmxhcUhRX2xxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI2QmxhcUhRWWphQkhacSgkUUhMOFFxX2x2RjhbbV1bJ29CbGFxSFFfT2phQkhfbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPnlIclpEWnEoJFFITDhRcV9sdkY4W21dWydsRF9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJNkJsYXFIUS0+eUhyWkRGWnEoJFFITDhRcV9sdkY4W21dWydsREZfbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICRRSEw4UXFfbHZGOFskbF1bJ2xxJ107ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHE4THlIcl9RQmFIX2x2RjggPSAkSTZCbGFxSFEtPm5Icl9iRl9xOEx5SHJfUUJhSF82UjVCYUhacV9FanZxanI4UVIoJFFITDhRcV9sdkY4WyRsXVsnbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kUWx2cl9RKCRxOEx5SHJfUUJhSF9sdkY4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcThMeUhyX2xxeSA9IGpRUWpSX0w4YUJEdigkcThMeUhyX1FCYUhfbHZGOCwgJ3E4TF95SHJfT2phQkhfbHEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFFIakxlICgkcThMeUhyX2xxeSBqeSAkT2phQkgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalFRalJfZEJ5ZSgkUUh0QmxRSHFfcThMeUhyLCAkT2phQkgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRsRF9GbEhhcV9PamEgPSAkbHZxSHVfT2phQkhfcUhyamxheVsibERfRmxIYXFfIiAuICRRQmFIX2xERl9scV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbERfRmxIYXFfT2phX2pRUSA9IGpRUWpSX0w4YUJEdigkbHZxSHVfT2phQkhfcUhyamxheSwgImxEX0ZsSGFxXyIgLiAkUUJhSF9sREZfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kUWx2cl9RKCRsRF9GbEhhcV9PamFfalFRKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChsdl9qUVFqUigkUUhMOFFxX2x2RjhbJGxdWydsREZfT2phQkgnXSwgJGxEX0ZsSGFxX09qYV9qUVEpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRXSFIgPSBqUVFqUl95SGpRTGUoJFFITDhRcV9sdkY4WyRsXVsnbERGX09qYUJIJ10sICRsRF9GbEhhcV9PamFfalFRKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbERfRmxIYXFfT2phID0gJGxEX0ZsSGFxX09qYV9qUVFbJFdIUl07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICh5clFMRGQoJFFITDhRcV9sdkY4WyRsXVsnbERGX09qYUJIJ10sICRsRF9GbEhhcV9PamEpID09IG0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICRJNkJsYXFIUS0+eUhyNFE4N0hMclpxKCRRSEw4UXFfbHZGOFttXVsnZFE4N0hMcl9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSTZCbGFxSFEtPnlIcjZCbGFxSFFacSgkUUhMOFFxX2x2RjhbbV1bJ29CbGFxSFFfbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHI2QmxhcUhRWWphQkhacSgkUUhMOFFxX2x2RjhbbV1bJ29CbGFxSFFfT2phQkhfbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHJaRFpxKCRRSEw4UXFfbHZGOFttXVsnbERfbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEk2QmxhcUhRLT55SHJaREZacSgkUUhMOFFxX2x2RjhbbV1bJ2xERl9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICRRSEw4UXFfbHZGOFskbF1bJ2xxJ107ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxOEx5SHJfUUJhSF9sdkY4ID0gJEk2QmxhcUhRLT5uSHJfYkZfcThMeUhyX1FCYUhfNlI1QmFIWnFfRWp2cWpyOFFSKCRRSEw4UXFfbHZGOFskbF1bJ2xxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RRbHZyX1EoJHE4THlIcl9RQmFIX2x2RjgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcThMeUhyX2xxeSA9IGpRUWpSX0w4YUJEdigkcThMeUhyX1FCYUhfbHZGOCwgJ3E4TF95SHJfT2phQkhfbHEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjhRSGpMZSAoJHE4THlIcl9scXkgankgJE9qYUJIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUVFqUl9kQnllKCRRSHRCbFFIcV9xOEx5SHIsICRPamFCSCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci8vZFFsdnJfUSgkUUh0QmxRSHFfcThMeUhyKTsKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyAgICAgIE1jRyA5aXcgNUpWaQovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eUxRbGRyIHY4dkxIPTw/ZGVkIEhMZTggJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRdjh2TEgnXTsgPz4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLlFIanFSKEZCdkxybDh2ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocThMQkRIdnIpLjh2KCJMYWxMVyIsICcjeWRqdl9EanZxanI4UVJfcThMeUhyJywgRkJ2THJsOHYgKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPalEgRjg4ckhRX2Q4ZEJkX2RRbERqUVIgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxySEQ6ICI8b0Jycjh2IHJSZEg9J29CcnI4dic+PC9vQnJyOHY+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhPSHZyOiA3eTRqdkhhLkhPcjlyalFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J2TGFqeXk6ICJvcnYgb3J2LXFqdm5IUSBvcnYteUQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3J2ckh1cjogIiBHYTh5SCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMamFhb2pMVzogRkJ2THJsOHYgKEhPSHZyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnIueXI4ZDRROGRqbmpybDh2KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IdnIucWpyai5MYTh5SCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIHJvID0gJzxsIExhanl5PSJGaiBGai1CeUhRIj48L2w+PGwgTGFqeXk9IkZqIEZqLUw4biI+ICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2pRIERSZGp2SGEgPSAkLjd5NGp2SGEoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyOWxTSDoge2JscXJlOiBOQ20sIGVIbG5lcjogWENtfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lSGpxSFFHOHZyUThheToge0w4dnJROGF5OiAiTGE4eUg4dmFSIn0sCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlSGpxSFF3bHJhSDogJyBNOEwtOUhyIEVqdnFqcjhRUiBWbHlyKicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUUh5bFNqb2FIOiAicWx5am9hSHEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0w4dnJIdnI6ICAgICAgICB5ckJGRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDh5bHJsOHY6ICJyOGQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZUhESDogJyN6TktDTm0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMOHZySHZyQTdqdTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlFhOiAnYjhRV0ZhOGJfbERfcThMeUhyX0RqdnFqcjhRUl9sdkY4LmRlZD9kbHE9PD9kZWQgSExlOCAkZGxxOyA/PiZsRF9scT08P2RlZCBITGU4ICRsRF9scTsgPz4mUWxxPTw/ZGVkIEhMZTggJGxEUV9scTsgPz4mb2xxPTw/ZGVkIEhMZTggJG9scTsgPz4mb09scT08P2RlZCBITGU4ICRvT2xxOyA/PiZEcThMeUhyPTw/ZGVkIEhMZTggQlFhSHZMOHFIKDc4bHYoIiwiLCAkUUh0QmxRSHFfcThMeUhyKSk7ID8+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpCcjhhOGpxOiByUUJICiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEY4OHJIUXc4OGFvalE6IEY4OHJIUV9kOGRCZF9kUWxEalFSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC95TFFsZHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ib3J2LW5ROEJkIiB5clJhSD0iRGpRbmx2LW84cnI4RDogQ2R1OyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b0Jycjh2IExhanl5PSJvcnYgb3J2LWRRbERqUVIiPkFMcmw4djwvb0Jycjh2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b0Jycjh2IHFqcmotcjhubmFIPSJxUThkcThidiIgTGFqeXk9Im9ydiBvcnYtZFFsRGpRUiBxUThkcThidi1yOG5uYUgiPjx5ZGp2IExhanl5PSJMalFIciI+PC95ZGp2Pjwvb0Jycjh2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhIExhanl5PSJxUThkcThidi1ESHZCIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbD48aiBlUUhGPSIjIiBscT0icThMX29CYVdfcThidmE4anFfYWx2VyIgdmpESCA9ICJxOExfb0JhV19xOGJ2YThqcV9hbHZXIiA+TThMQkRIdnIgb0JhVyBxOGJ2YThqcTwvaj48L2FsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsPjxqIGVRSEY9IiMiIGxxPSJ5SHZxX3E4TEJESHZyeSIgdmpESCA9ICJ5SHZxX3E4TEJESHZyeSIgPjlIdnEgTThMQkRIdnJ5PC9qPjwvYWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJFFIdEJsUUhxX3E4THlIcikgPiBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5ZGp2IGxxPSJ5ZGp2X0RqdnFqcjhRUl9xOEx5SHIiIExhanl5PSJham9IYSBham9IYS1sRGQ4UXJqdnIiIHlyUmFIPSJEalFubHY6IC1LbWR1IG1kdSBDZHUgbWR1O0xCUXk4UTogZDhsdnJIUTsiPkVqdnFqcjhRUiBNOEwteUhyKjwveWRqdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFEgKCRsID0gbTsgJGwgPCAkdjhfanJyakxlREh2cnlfYWx5cjsgJGwrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUUhMOFFxX3FIcmpsYXkgPSAkM2xhSC0+bkhyTThMXzZSWk0oJGpycmpMZURIdnJ5X2FseXJbJGxdWydGbGFIX3ZqREgnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsdmRCciByUmRIPSJlbHFxSHYiIGxxPSdCZGE4anFIcV9xOEx5SHJfUUgnIHZqREg9IkJkYThqcUhxX3E4THlIcl9RSFtdIiBPamFCSD0iPD9kZWQgSExlOCAkUUhMOFFxX3FIcmpsYXlbbV1bJ3E4TF9yUmRIJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGx2ZEJyIHJSZEg9ImVscXFIdiIgbHE9J0RqdnFqcjhRUl9xOEx5SHInIHZqREg9IkRqdnFqcjhRUl9xOEx5SHIiIE9qYUJIPSI8P2RlZCBITGU4IDc4bHYoJywnLCAkUUh0QmxRSHFfcThMeUhyKTsgPz4iPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0TF9qTExIeXkgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEY4UUhqTGUgKCRROGFIX0J5SFFuUThCZHkgankgJFE4YUhfQnlIUW5ROEJkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ1E4YUgnXSA9PSAkUThhSF9CeUhRblE4QmRbJ0J5SFFfblE4QmRfbHEnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRMX2pMTEh5eSA9IFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkdExfakxMSHl5ID09IFUgJiYgJG9PamFCSF9xSHJqbGF5W21dWyd0TF9qZGRROE9IX3E4THknXSA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxqIGVRSEY9IiNMZWp2bkhfeXJqckJ5IiBxanJqLXI4bm5hSD0iRDhxamEiIGxxPSJMZWp2bkhfeXJqIj48b0Jycjh2IHlyUmFIPWJscXJlOlVtbWR1O2VIbG5lcjpLQ2R1O0RqUW5sdi1vOHJyOEQ6WGR1OyIgTGFqeXk9Im9ydi1kUWxEalFSIj54RyBBZGRROE9qYTwvb0Jycjh2Pjwvaj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChsdl9qUVFqUigkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJGFqckhRamFfbHZkUThMSHl5X0J5SFF5KSB8fCAoJHlySGRfakxMSHl5ID09IFUgJiYgbHZfalFRalIoJG9PbHEsICRqX3lySGRfalFRKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9hOExXX0JkYThqcV9xOExfYkZfalFRID0galFRalIoVSwgaCwgQywgTiwgVWgsIFVDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFsdl9qUVFqUigkYmxEX3FIcmpsYXlbbV1bJ2pfeXJqckJ5J10sICRvYThMV19CZGE4anFfcThMX2JGX2pRUSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aiBMYWp5eT0iZEJhYS1RbG5lciBqX3ZIYl9qcnJqTGVESHZyIiBybHJhSD0ianFxIGpycmpMZURIdnIiIHlyUmFIPSJMQlF5OFE6ZDhsdnJIUTsiPjx5ZGp2IExhanl5PSJvanFuSCBvanFuSC15QkxMSHl5IiB5clJhSD0iZUhsbmVyOkttZHU7Ij48bCBMYWp5eT0iRmogRmotQmRhOGpxIiBqUWxqLWVscXFIdj0iclFCSCI+PC9sPjwveWRqdj48L2o+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgkJCQkJCQkJCQkJCQkJCQkJPHlyUmFIPgoJCQkJCQkJCQkJCQkJCQkJCSNxOExfeUhyX3Fqcmpyam9hSHsKCQkJCQkJCQkJCQkJCQkJCQlibHFyZTpVbW0lICFsRGQ4UXJqdnI7CgkJCQkJCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkJCQkJCTwveXJSYUg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEY4UUQgTGFqeXk9IkY4UUQtZThRbFM4dnJqYSBhSEZyLWphbG52IiBscT0iRjhRRC1xOEx5SHJ5LXFqcmpyam9hSCIgREhyZThxPSI0Yzl3IiBqTHJsOHY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIHlyUmFIPSJibHFyZTpVbW0lICFsRGQ4UXJqdnI7IGVIbG5lcjogVW1tJTsgOE9IUUZhOGI6akJyOCAhbERkOFFyanZyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyam9hSCBMYWp5eT0icmpvYUggcmpvYUgtbzhRcUhRSHEgcmpvYUgteXJRbGRIcSIgbHE9InE4TF95SHJfcWpyanJqb2FIIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVIanE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlIGphbG52PSJMSHZySFEieXJSYUg9ImJscXJlOkNkdTsiPjxsdmRCciByUmRIPSJMZUhMV284dSIgbHE9InE4THlIcl9qcnJqTGVESHZyeV95SGFITHJqYWEiID48L3JlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT5NOEwgWnE8L3JlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08cmU+TThMQkRIdnIgMDg8L3JlPi0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT5NOExCREh2ciB3bHJhSDwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlPk04TCB3UmRIPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+RzhEREh2cnk8L3JlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT5KZGE4anFIcSA2UjwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlPkpkYThqcUhxIEFyPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+QUxybDh2PC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlSGpxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxybzhxUj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ybzhxUj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmpvYUg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRjhRRD4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxxbE8gTGFqeXk9InJqby1kanZIIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snal9yam9feUJvJ10pICYmICRfNWl4Smk5d1snal9yam9feUJvJ10gPT0gJ3Jqby1qcnJqTGVESHZyJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiIgbHE9InJqby1qcnJqTGVESHZyIiB5clJhSD0iRGpRbmx2OiBVbWR1IFVtZHUgVW1kdSBVbWR1OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZVSyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iYmxxbkhyLWVIanFIUS1vYThMVyI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9hOExXX0JkYThqcV9xOExfYkZfalFRID0galFRalIoVSwgaCwgQywgTiwgVWgsIFVDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIWx2X2pRUWpSKCRibERfcUhyamxheVttXVsnal95cmpyQnknXSwgJG9hOExXX0JkYThqcV9xOExfYkZfalFRKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxqIExhanl5PSJkQmFhLVFsbmVyIGpfdkhiX2pycmpMZURIdnIiIHJscmFIPSJqcXEganJyakxlREh2ciIgeXJSYUg9IkxCUXk4UTpkOGx2ckhROyI+PHlkanYgTGFqeXk9Im9qcW5IIG9qcW5ILXlCTExIeXkiIHlyUmFIPSJlSGxuZXI6S21kdTsiPjxsIExhanl5PSJGaiBGai1CZGE4anEiIGpRbGotZWxxcUh2PSJyUUJIIj48L2w+PC95ZGp2Pjwvaj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iTDh2ckh2ci1vOHUgIiBscT0icWxPX2pycmpMZURIdnJ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4tLT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFIRGRyUigkXzVpeEppOXdbJ2pfcmpvX3lCbyddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX3lCbyddID09ICdyam8tcThMeUhyLURseXlsdm4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnakxybE9IJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IiBscT0icmpvLXE4THlIci1EbHl5bHZuIiB5clJhSD0iRGpRbmx2OiBVbWR1IFVtZHUgVW1kdSBVbWR1OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBscT0icThMeUhyLURseXlsdm4iPjwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCQkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQk8IS0tcWxPIExhanl5PSJROGItRmFCbHEiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ2JGX09sSGJfclJkSCddID09IEspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLWJscW5IciIgeXJSYUg9IkRqUW5sdjogVW1kdSBVbWR1IFVtZHUgVW1kdTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhIExhanl5PSJ2ak8gdmpPLXJqb3kiIGxxPSJEUndqb0siPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhbCBMYWp5eT0iakxybE9IIj48aiBlUUhGPSIjcmpvLUZsYUhkUUhPbEhiIj48bCBMYWp5eT0ibEw4di1IUkgtOGRIdiI+PC9sPiA0UUhPbEhiPC9qPjwvYWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFsIExhanl5PSI8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb195Qm9LJ10pICYmICRfNWl4Smk5d1snal9yam9feUJvSyddID09ICdyam8tRmxhSGx2RjgnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+Ij48aiBlUUhGPSIjcmpvLUZsYUhsdkY4Ij48bCBMYWp5eT0iIGxMOHYtRmxhSC1qYXIiPjwvbD4gWnZGOFFEanJsOHY8L2o+PC9hbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tTDh2ckh2ciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLWRqdkggakxybE9IIiBscT0icmpvLUZsYUhkUUhPbEhiIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyB5clJhSD0iRGpRbmx2OiBVbWR1IFVtZHUgVW1kdSBVbWR1OyIgbHE9InFsT19GbGFIX2RRSE9sSGIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNUhMOFFxIEp2ak9qbGFqb2FIIQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb195Qm9LJ10pICYmICRfNWl4Smk5d1snal9yam9feUJvSyddID09ICdyam8tRmxhSGx2RjgnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IiBscT0icmpvLUZsYUhsdkY4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyB5clJhSD0iRGpRbmx2OiBVbWR1IFVtZHUgVW1kdSBVbWR1OyIgbHE9InFsT19GbGFIX2x2RjgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNUhMOFFxIEp2ak9qbGFqb2FIIQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTy0tPgoJCQkJCQkJCQkJCQkKCQkJCQkJCQkJCQkJCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdyam8tcmp5V3knKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkdjhfcmp5V2FseXJfbHZGOCA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggImVscUgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiIgbHE9InJqby1yanlXeSIgPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGI4UVdGYThieXJIZF9xSHJqbGF5ID0gJEk2QmxhcUhRLT5uSHJfSTZCbGFxSFFZamFCSF82WnEoJG9scSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiOFFXRmE4YnlySGRfdjggPSBMOEJ2cigkYjhRV0ZhOGJ5ckhkX3FIcmpsYXkpOwovLyBGOFEoKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iakxMOFFxbDh2IiBscT0iakxMOFFxbDh2SyIgeXJSYUg9IkRqUW5sdjogVW1kdSBVbWR1IFVtZHUgVW1kdTsiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFEgKCRsID0gbTsgJGwgPCAkYjhRV0ZhOGJ5ckhkX3Y4OyAkbCsrKSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeXJIZF9sdkY4ID0gJEk2QmxhcUhRLT5uSHJfSTZCbGFxSFFZamFCSF9acSgkYjhRV0ZhOGJ5ckhkX3FIcmpsYXlbJGxdWydscSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkakxMOFFxbDh2X29PbHEgPSAkeXJIZF9sdkY4W21dWydscSddOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkakxMOFFxbDh2X1FIRkYgPSAnakxMOFFxbDh2X3lySGRfJyAuICRsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkakxMOFFxbDh2X29PbHEgPT0gJG9PbHEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpMTDhRcWw4dl9MOGFhamR5SCA9ICdsdic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpMTDhRcWw4dl9MOGFhamR5SCA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9ImpMTDhRcWw4di1uUThCZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9ImpMTDhRcWw4di1lSGpxbHZuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxqIGVRSEY9IiM8P2RlZCBITGU4ICRqTEw4UXFsOHZfUUhGRjsgPz4iIHFqcmotZGpRSHZyPSIjakxMOFFxbDh2SyIgcWpyai1yOG5uYUg9Ikw4YWFqZHlIIiBMYWp5eT0iakxMOFFxbDh2LXI4bm5hSCI+PD9kZWQgSExlOCAkeXJIZF9sdkY4W21dWyd5ckhkX3ZqREgnXTsgPz48L2o+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJqTEw4UXFsOHYtbzhxUiBMOGFhamR5SCA8P2RlZCBITGU4ICRqTEw4UXFsOHZfTDhhYWpkeUg7ID8+IiBscT0iPD9kZWQgSExlOCAkakxMOFFxbDh2X1FIRkY7ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9ImpMTDhRcWw4di1sdnZIUSIgeXJSYUg9Im9qTFduUThCdnEtTDhhOFE6ICMzMzNDM0MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJqeVdhbHlyX2x2RjhfakxMID0gJEk2QmxhcUhRLT5uSHI2QmxhcUhRd2p5V182UllqYUJIWnEoJHlySGRfbHZGOFttXVsnbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHY4X3JqeVdhbHlyX2x2RjhfakxMID0gTDhCdnIoJHJqeVdhbHlyX2x2RjhfakxMKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyam9hSCBMYWp5eT0icmpvYUggcmpvYUgtbzhRcUhRSHEgIiB5clJhSD0iRGpRbmx2OiBVbWR1IG1kdSBVbWR1IG1kdTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVIanE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlIHlyUmFIPSJibHFyZTpDJSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmUgeXJSYUg9ImJscXJlOktDJSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdqeVcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZSB5clJhSD0iYmxxcmU6Z20lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2p5VyBNSHJqbGF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlSGpxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEhEZHJSKCR2OF9yanlXYWx5cl9sdkY4X2pMTCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxIEw4YXlkanY9IlgiPndqeVcgSnZqT2psYWpvYUghPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFEgKCR1ID0gbTsgJHUgPCAkdjhfcmp5V2FseXJfbHZGOF9qTEw7ICR1KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJqeVdfbHZGOCA9ICR3anlXYWx5ci0+bkhyd2p5V1ZseXJfNlJaTSgkcmp5V2FseXJfbHZGOF9qTExbJHVdWydyanlXX2xxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmp5V19xbHlkYWpSX3JSZEggPSAkcmp5V2FseXJfbHZGOF9qTExbJHVdWydyanlXX3FseWRhalJfclJkSCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmp5V19MZWxhcV9PamFCSHkgPSAkSTZCbGFxSFEtPm5IcjZCbGFxSFF3anlXR2VsYXFfNlI2d1pxKCRyanlXYWx5cl9sdkY4X2pMTFskdV1bJ2xxJ10pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFsdl9qUVFqUigkakxMOFFxbDh2X29PbHEsICRqX3lySGRfalFRKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExlSExXX284dV9MYWp5eSA9ICdxbHlqb2FIcSBRSGpxOHZhUic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJHlySGRfakxMSHl5ID09IFUgJiYgbHZfalFRalIoJGpMTDhRcWw4dl9vT2xxLCAkal95ckhkX2pRUSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMZUhMV19vOHVfTGFqeXkgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkIEhMZTggJHUgKyBVOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZCBybHJhSD0iPD9kZWQgSExlOCAkcmp5V19sdkY4W21dWydxSHlMUWxkcmw4diddOyA/PiIgTGFqeXk9InJqb2FIX3I4OGFfYWx2VyIgeXJSYUg9IkxCUXk4UTogZDhsdnJIUTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICRyanlXX2x2RjhbbV1bJ3JqeVdfdmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRyanlXX0xlbGFxX09qYUJIeSkgPiBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyam9hSCBMYWp5eT0icmpvYUggcmpvYUgtbzhRcUhRSHEgUUh5ZDh2eWxPSCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhIExhanl5PSJyanlXLWFseXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFFqdnEgPSBRanZxKFBQUCwgUFBQUFBQKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFFIakxlICgkcmp5V19MZWxhcV9PamFCSHkgankgJHJqeVdfTGVsYXFfT2phQkgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxEX0xlbGFxX3JqeVcgPSAkSThRV0ZhOGItPm5Ickk4UVdGYThiX1pFX3dqeVdHZWxhcV82UjZ3WnEoJGJsRF9scSwgJHJqeVdhbHlyX2x2RjhfakxMWyR1XVsnbHEnXSwgJHJqeVdfTGVsYXFfT2phQkhbJ2xxJ10sICRsRF9RbHEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRsRF9MZWxhcV9yanlXKSA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMZUhMV0hxID0gJ0xlSExXSHE9IkxlSExXSHEiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMZUhMV0hxID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkbERfTGVsYXFfcmp5V1ttXVsndl9qJ10gPT0gVSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHFseWpvYUhfcmp5V0xlbGFxID0gInFseWpvYUhxIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMZUhMV0hxID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmpfTGVITFdIcSA9ICdMZUhMV0hxPSJMZUhMV0hxIic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcWx5am9hSF9yanlXTGVsYXEgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMZUhMV0hxID0gJExlSExXSHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmpfTGVITFdIcSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkcmp5V19MZWxhcV9PamFCSFsnRGp2cWpyOFFSJ10gPT0gVSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJqeVdfRGp2cWpyOFFSID0gJzx5QmQgTGFqeXk9InJIdXItSFFROFEgYUhqcSI+KjwveUJkPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmp5V19EanZxanI4UVIgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJHJqeVdfcWx5ZGFqUl9yUmRIID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGx2ZEJyICA8P2RlZCBITGU4ICRxbHlqb2FIX3JqeVdMZWxhcTsgPz4gPD9kZWQgSExlOCAkTGVITFdfbzh1X0xhanl5OyA/PiA8P2RlZCBITGU4ICRMZUhMV0hxOyA/PiBPamFCSD0iPD9kZWQgSExlOCAkcmp5V2FseXJfbHZGOF9qTExbJHVdWydyanlXX2xxJ10gLiAnOicgLiAkcmp5V19MZWxhcV9PamFCSFsnbHEnXTsgPz4iIGxySERRSEY9Ijw/ZGVkIEhMZTggJHJqeVdhbHlyX2x2RjhfakxMWyR1XVsnbHEnXSAuICc6JyAuICRvT2xxOyA/PiIgTGFqeXk9IkxlSExXX0YgTGFqeXlfcmp5V19MZWxhcV9PamFCSCIgclJkSD0iTGVITFdvOHUiIHZqREg9InJqeVdfTGVsYXFfT2phQkhfPD9kZWQgSExlOCAkUWp2cTsgPz4iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkIEhMZTggJHJqeVdfTGVsYXFfT2phQkhbJ3JqeVdfTGVsYXFfdmpESCddIC4gJyAnIC4gJHJqeVdfRGp2cWpyOFFSOyA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bHZkQnIgIDw/ZGVkIEhMZTggJHFseWpvYUhfcmp5V0xlbGFxOyA/PiA8P2RlZCBITGU4ICRMZUhMV19vOHVfTGFqeXk7ID8+IDw/ZGVkIEhMZTggJExlSExXSHE7ID8+IE9qYUJIPSI8P2RlZCBITGU4ICRyanlXYWx5cl9sdkY4X2pMTFskdV1bJ3JqeVdfbHEnXSAuICc6JyAuICRyanlXX0xlbGFxX09qYUJIWydscSddOyA/PiIgbHJIRFFIRj0iPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAkcmp5V2FseXJfbHZGOF9qTExbJHVdWydscSddIC4gJzonIC4gJG9PbHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IiBMYWp5eT0iTGVITFdfRiBMYWp5eV9yanlXX0xlbGFxX09qYUJIIiByUmRIPSJRanFsOCIgdmpESD0icmp5V19MZWxhcV9PamFCSF88P2RlZCBITGU4ICRRanZxOyA/PiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkIEhMZTggJHJqeVdfTGVsYXFfT2phQkhbJ3JqeVdfTGVsYXFfdmpESCddIC4gJyAnIC4gJHJqeVdfRGp2cWpyOFFSOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJHJqeVdfcWx5ZGFqUl9yUmRIID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGx2ZEJyIDw/ZGVkIEhMZTggJExlSExXX284dV9MYWp5eTsgPz4gPD9kZWQgSExlOCAkdmpfTGVITFdIcTsgPz4gT2phQkg9Ijw/ZGVkIEhMZTggJHJqeVdhbHlyX2x2RjhfakxMWyR1XVsncmp5V19scSddIC4gJzonIC4gJHJqeVdfTGVsYXFfT2phQkhbJ2xxJ107ID8+IiBsckhEUUhGPSI8P2RlZCBITGU4ICRyanlXYWx5cl9sdkY4X2pMTFskdV1bJ2xxJ10gLiAnOicgLiAkb09scTsgPz4iIExhanl5PSJMZUhMV19GIExhanl5X3JqeVdfTGVsYXFfdmoiIHJSZEg9IkxlSExXbzh1IiB2akRIPSJyanlXX0xlbGFxX3ZqXzw/ZGVkIEhMZTggJFFqdnE7ID8+IiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eWRqdiBMYWp5eT0iYWpvSGEgYWpvSGEtbHZGOCI+MC9BPC95ZGp2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4gCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkcmp5V19MZWxhcV9PamFCSFsnSHZqb2FIX0w4RERIdnJ5J10gPT0gVSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEw4RERIdnJ5X2FseXIgPSAkSThRV0ZhOGItPm5Ickk4UVdGYThiX1pFX3dqeVdHZWxhcUc4RERIdnJfNlI2d1pxX0w4QnZyKCRvbHEsICRyanlXYWx5cl9sdkY4X2pMTFskdV1bJ2xxJ10sICRyanlXX0xlbGFxX09qYUJIWydscSddLCAkbERfUWxxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRMOERESHZyeV9hbHlyKSA+IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2OF9MOERESHZyeV9hbHlyX0xhanl5ID0gJ29ydi1sdkY4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2OF9MOERESHZyeV9hbHlyX0xhanl5ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ITGU4ICc8bCB5clJhSD0iTEJReThROiBkOGx2ckhROyIgbHE9IicgLiAkcmp5V2FseXJfbHZGOF9qTExbJHVdWydscSddIC4gJ18nIC4gJHJqeVdfTGVsYXFfT2phQkhbJ2xxJ10gLiAnIiBMYWp5eT0ibEw4di1MOERESHZyeS1qYXIgal92SGJfcmp5V19MOERESHZyICcuJHY4X0w4RERIdnJ5X2FseXJfTGFqeXkuJyI+PC9sPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8b0Jycjh2IHJSZEg9Im9CcnI4diIgeXJSYUg9IkxCUXk4UTogZDhsdnJIUTsiIGxxPSInIC4gJHJqeVdhbHlyX2x2RjhfakxMWyR1XVsnbHEnXSAuICdfJyAuICRyanlXX0xlbGFxX09qYUJIWydscSddIC4gJyIgTGFqeXk9Im9ydiBvcnYtUThCdnEtRGx2ICcgLiAkdjhfTDhEREh2cnlfYWx5cl9MYWp5eSAuICcgal92SGJfcmp5V19MOERESHZyIj48eWRqdj48bCBMYWp5eT0ibEw4di1MOERESHZyLWphciI+PC9sPjwveWRqdj48L29CcnI4dj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ITGU4ICc8bCB5clJhSD0iTEJReThROiBkOGx2ckhROyIgbHE9IicgLiAkcmp5V2FseXJfbHZGOF9qTExbJHVdWydscSddIC4gJ18nIC4gJHJqeVdfTGVsYXFfT2phQkhbJ2xxJ10gLiAnIiBMYWp5eT0ibEw4di1MOERESHZyeS1qYXIgcWx5am9hSF9qcXEgal92SGJfcmp5V19MOERESHZyICcuJHY4X0w4RERIdnJ5X2FseXJfTGFqeXkuJyI+PC9sPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICc8b0Jycjh2IHJSZEg9Im9CcnI4diIgeXJSYUg9IkxCUXk4UTogZDhsdnJIUTsiIGxxPSInIC4gJHJqeVdhbHlyX2x2RjhfakxMWyR1XVsnbHEnXSAuICdfJyAuICRyanlXX0xlbGFxX09qYUJIWydscSddIC4gJyIgTGFqeXk9Im9ydiBvcnYtUThCdnEtRGx2ICcgLiAkdjhfTDhEREh2cnlfYWx5cl9MYWp5eSAuICcgcWx5am9hSF9qcXEgal92SGJfcmp5V19MOERESHZyIj48eWRqdj48bCBMYWp5eT0ibEw4di1MOERESHZyLWphciI+PC9sPjwveWRqdj48L29CcnI4dj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JxPiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ybzhxUj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Jqb2FIPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJzx5ZGp2IExhanl5PSJham9IYSI+SnZqT2psYWpvYUghPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JvOHFSPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmpvYUg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLWRqdkggPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRfNWl4Smk5d1snal9yam9fRGpsdiddKSAmJiAkXzVpeEppOXdbJ2pfcmpvX0RqbHYnXSA9PSAncmpvLVE4YUh5JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiIgbHE9InJqby1ROGFIeSIgeXJSYUg9IkRqUW5sdjogVW1kdSBDZHUgVW1kdSBDZHU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWggTGFqeXk9ImRCYWEtYUhGciI+SThRV0ZhOGIgOXJqckJ5ICA8L2VoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2E4TFdfSHFscl95cmpyQnkgPSBqUVFqUihVLCBoLCBDLCBVVSwgVUMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ITGU4ICR5ckhkX2pMTEh5eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghbHZfalFRalIoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10sICRvYThMV19IcWxyX3lyanJCeSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJHlySGRfakxMSHl5ID09IFUgJiYgbHZfalFRalIoJG9PbHEsICRqX3lySGRfalFRKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGRqUWphYUhhX3lySGRfUUJ2dmx2biA9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRqYVFIanFSX0J5SFFfZFE4TEh5eUhxID0gJEk4UVdGYThiLT5uSHJfSVpFOXJqckJ5XzZacV9KWk0oJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10sICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddLCAkb2xxLCAkb09scSwgJGxEX1FscSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xGIChMOEJ2cigkamFRSGpxUl9CeUhRX2RROExIeXlIcSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRhanJIUWphX0ZhOGJfeXJIZHlfbHZkUThMSHl5KSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b0Jycjh2IExhanl5PSJvQnJyOHZvYWx2VyIgeXJSYUg9IiAgRjh2ci15bFNIOiBVVWR1OyIgZVFIRj0iI0Q4cWphX3lyanJCeV9xanllbzhqUXFVIiAgcWpyai1yOG5uYUg9IkQ4cWphIiByUmRIPSJvQnJyOHYiIExhanl5PSIgICI+IDx5ZGp2IHlyUmFIPSIgICAgRGpRbmx2LVFsbmVyOiB6ZHU7Ij4gPGxEbiB5UUw9Ii4uL1FIeThCUUxIeS9sRGpuSHkvOWxudi04RkYuZHZuIiB5clJhSD0iZUhsbmVyOiBVaGR1OyBEalFubHYtcjhkOiAtaGR1OyBEalFubHYtYUhGcjogaGR1OyI+PC95ZGp2PiA5bG52LThGRjwvb0Jycjh2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRibERfcUhyamxheVttXVsnal9vQmxhcUhRX09qYUJIX2xxJ10gPT0gJG9PbHEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX1E4YUhfbHEgPSAkal9ROGFIX0RqeXJIUV9scTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX1E4YUhfbHEgPSAkb09qYUJIX3FIcmpsYXlbbV1bJ1E4YUhfRGp5ckhRX2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFE4YUhfRGp5ckhRX2x2RjggPSAkSTZCbGFxSFEtPm5Icl81OGFIRWp5ckhRX1pNKCR5ckhkX1E4YUhfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmpvYUggTGFqeXk9InJqb2FIIHJqb2FILW84UXFIUUhxIHJqb2FILXlyUWxkSHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlSGpxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNThhSCB3UmRIIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKeUhRIDJROEJkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFMcmw4dgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlPiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVIanE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyR5ckhkX1E4YUhfbHEgPSAkal9ROGFIX0RqeXJIUV9scTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsRiAoJHlySGRfUThhSF9scSA9PSAtVSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kUUJhSF9sdkY4ID0gJEk1QmFILT5uSHJfNUJhSF9aTSgkeXJIZF9sdkY4W21dWydRQmFIX2xxJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEY4UURCYWpfcUhyamxheSA9ICRJNUJhSC0+bkhyX0Y4UURCYWpfb1I1QmFIKCRvT2phQkhfcUhyamxheVttXVsnUUJhSF9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ckhkX1E4YUhfbHEgPSAkRjhRREJhal9xSHJqbGF5W21dWydROGFIX0RqeXJIUV9scSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAqLwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSTU4YUgtPnlIcjU4YUhFanlySFFacSgkeXJIZF9ROGFIX2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUThhSF9CeUhRblE4QmR5VSA9ICRJNThhSC0+bkhyX0F5eWxudkhxX0p5SFFuUThCZCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFFIakxlICgkUThhSF9CeUhRblE4QmR5VSBqeSAkUThhSF9CeUhRblE4QmRVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkUThhSF9CeUhRblE4QmRVWydROGFIX3JSZEgnXSA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfQnlIUW5ROEJkX2x2RjhVID0gJEp5SFEtPm5Ickp5SFEyUThCZF9vUlpxKCRROGFIX0J5SFFuUThCZFVbJ0J5SFFfblE4QmRfbHEnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX0J5SFFuUThCZFUgPSAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOFVbbV1bJ3ZqREgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfQnlIUW5ROEJkX2xxVSA9ICRkUWxEalFSX0J5SFFuUThCZF9sdkY4VVttXVsnbHEnXTsgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkUThhSF9CeUhRblE4QmRVWydCeUhRX25ROEJkX2xxJ10gPT0gbSB8fCAkUThhSF9CeUhRblE4QmRVWydCeUhRX25ROEJkX2xxJ10gPT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOFUgPSAkSnlIUS0+bkhySnlIUTU4YUhfb1JacSgkUThhSF9CeUhRblE4QmRVWydROGFIX0RqeXJIUV9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmRVID0gJGRRbERqUVJfQnlIUW5ROEJkX2x2RjhVW21dWydROGFIX0RqeXJIUSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkUWxEalFSX0J5SFFuUThCZF9scVUgPSAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOFVbbV1bJ2xxJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOFUgPSAkSnlIUS0+bkhySnlIUTJROEJkX29SWnEoJFE4YUhfQnlIUW5ROEJkVVsnQnlIUV9uUThCZF9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmRVID0gJGRRbERqUVJfQnlIUW5ROEJkX2x2RjhVW21dWyd2akRIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfQnlIUW5ROEJkX2xxVSA9ICRkUWxEalFSX0J5SFFuUThCZF9sdkY4VVttXVsnbHEnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqT2psYWpvYUhfZFFsRGpRUl9CeUhReVUgPSAkSThRV0ZhOGItPm5Ick1FX0FPamxham9hSEp5SFFfNlI1OGFIKCRkbHEsICRkUWxEalFSX0J5SFFuUThCZF9scVUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRCdmpPamxham9hSF9kUWxEalFSX0J5SFF5VSA9ICRJOFFXRmE4Yi0+bkhyTUVfQU9qbGFqb2FISnlIUV82UjU4YUgoJGRscSwgJGRRbERqUVJfQnlIUW5ROEJkX2xxVSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJFE4YUhfQnlIUW5ROEJkVVsnUThhSF9yUmRIJ10gPT0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlITDh2cWpRUl9CeUhRblE4QmRfbHZGOFUgPSAkSnlIUS0+bkhySnlIUTJROEJkX29SWnEoJFE4YUhfQnlIUW5ROEJkVVsnQnlIUV9uUThCZF9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5SEw4dnFqUVJfQnlIUW5ROEJkVSA9ICR5SEw4dnFqUVJfQnlIUW5ROEJkX2x2RjhVW21dWyd2akRIJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeUhMOHZxalFSX0J5SFFuUThCZF9scVUgPSAkeUhMOHZxalFSX0J5SFFuUThCZF9sdkY4VVttXVsnbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkak9qbGFqb2FIX3lITDh2cWpRUl9CeUhReVUgPSAkSThRV0ZhOGItPm5Ick1FX0FPamxham9hSEp5SFFfNlI1OGFIKCRkbHEsICR5SEw4dnFqUVJfQnlIUW5ROEJkX2xxVSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQnZqT2psYWpvYUhfeUhMOHZxalFSX0J5SFF5VSA9ICRJOFFXRmE4Yi0+bkhyTUVfQU9qbGFqb2FISnlIUV82UjU4YUgoJGRscSwgJHlITDh2cWpRUl9CeUhRblE4QmRfbHFVKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkUThhSF9CeUhRblE4QmRVWydROGFIX3JSZEgnXSA9PSAtVSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbEhhcV9scSA9ICRROGFIX0J5SFFuUThCZFVbJ0J5SFFfblE4QmRfbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkWkVqeXJIUSA9IHZIYiBsdnFIdV9EanlySFEoJHFvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbEhhcV9xSHJqbGF5ID0gJFpFanlySFEtPm5Iclp2cUh1M2xIYXFfNlJacSgkRmxIYXFfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZsSGFxX3ZqREggPSAkRmxIYXFfcUhyamxheVttXVsnRmxIYXFfdmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxEX09qYUJIX3FIcmpsYXkgPSAkWkVqeXJIUS0+bkhyRWp5ckhRM2xIYXFfdmpESCgkbERfbHEsICRsRF9RbHEsICdsRF9GbEhhcV8nIC4gJEZsSGFxX2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbEhhcV9PamFCSCA9ICRsRF9PamFCSF9xSHJqbGF5W21dWydsRF9GbEhhcV8nIC4gJEZsSGFxX2xxXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZFFsRGpRUl9CeUhRblE4QmRfbHZGOFUgPSAkSnlIUS0+bkhySnlIUTJROEJkX29SdmpESCgkRmxIYXFfT2phQkgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfQnlIUW5ROEJkVSA9ICRkUWxEalFSX0J5SFFuUThCZF9sdkY4VVttXVsndmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRRbERqUVJfQnlIUW5ROEJkX2xxVSA9ICRkUWxEalFSX0J5SFFuUThCZF9sdkY4VVttXVsnbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkak9qbGFqb2FIX2RRbERqUVJfQnlIUXlVID0gJEk4UVdGYThiLT5uSHJKeUhReV9KeUhRMlE4QmRUbEhRalFMZVIoJGRRbERqUVJfQnlIUW5ROEJkX2xxVSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8kQnZqT2psYWpvYUhfZFFsRGpRUl9CeUhReVUgPSAkSThRV0ZhOGItPm5Ick1FX0p2ak9qbGFqb2FISnlIUV82UjU4YUgoJGRscSwgJGRRbERqUVJfQnlIUW5ROEJkX2xxVSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJFE4YUhfQnlIUW5ROEJkVVsnUThhSF9yUmRIJ10gPT0gLUspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbEhhcV9scSA9ICRROGFIX0J5SFFuUThCZFVbJ0J5SFFfblE4QmRfbHEnXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkWkVqeXJIUSA9IHZIYiBsdnFIdV9EanlySFEoJHFvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbEhhcV9xSHJqbGF5ID0gJFpFanlySFEtPm5Iclp2cUh1M2xIYXFfNlJacSgkRmxIYXFfbHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZsSGFxX3ZqREggPSAkRmxIYXFfcUhyamxheVttXVsnRmxIYXFfdmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxEX09qYUJIX3FIcmpsYXkgPSAkWkVqeXJIUS0+bkhyRWp5ckhRM2xIYXFfdmpESCgkbERfbHEsICRsRF9RbHEsICdsRF9GbEhhcV8nIC4gJEZsSGFxX2xxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGbEhhcV9PamFCSCA9ICRsRF9PamFCSF9xSHJqbGF5W21dWydsRF9GbEhhcV8nIC4gJEZsSGFxX2xxXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeUhMOHZxalFSX0J5SFFuUThCZF9sdkY4VSA9ICRKeUhRLT5uSHJKeUhRMlE4QmRfb1J2akRIKCRGbEhhcV9PamFCSCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeUhMOHZxalFSX0J5SFFuUThCZFUgPSAkeUhMOHZxalFSX0J5SFFuUThCZF9sdkY4VVttXVsndmpESCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHlITDh2cWpRUl9CeUhRblE4QmRfbHFVID0gJHlITDh2cWpRUl9CeUhRblE4QmRfbHZGOFVbbV1bJ2xxJ107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGpPamxham9hSF95SEw4dnFqUVJfQnlIUXlVID0gJEk4UVdGYThiLT5uSHJKeUhReV9KeUhRMlE4QmRUbEhRalFMZVIoJHlITDh2cWpRUl9CeUhRblE4QmRfbHFVKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJEJ2ak9qbGFqb2FIX3lITDh2cWpRUl9CeUhReVUgPSAkSThRV0ZhOGItPm5Ick1FX0p2ak9qbGFqb2FISnlIUV82UjU4YUgoJGRscSwgJHlITDh2cWpRUl9CeUhRblE4QmRfbHFVKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVOPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRROGFIX0RqeXJIUV9sdkY4W21dWydCeUhRX3JSZEgnXSA9PSBLKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggIjU4YUggRWp5ckhRIC0+IEp5SFF5IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICI0UWxEalFSIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZU4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJFE4YUhfRGp5ckhRX2x2RjhbbV1bJ0J5SFFfclJkSCddID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICRkUWxEalFSX0J5SFFuUThCZFU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGx5eUhyKCRkUWxEalFSX3FIYUhuanJIKSAmJiAkZFFsRGpRUl9xSGFIbmpySCA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJGpfeXJqckJ5IC4gJzx5ZGp2IExhanl5PSJham9IYSBham9IYS1sRGQ4UXJqdnIiPk1IYUhuanJIPC95ZGp2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkUThhSF9EanlySFFfbHZGOFttXVsnQnlIUV9yUmRIJ10gPT0gSykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJFE4YUhfRGp5ckhRX2x2RjhbbV1bJ1E4YUhfRGp5ckhRJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+ICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvQnJyOHYgclJkSD0ib0Jycjh2IiBMYWp5eT0ib3J2X0J5SFF5X2FseXIgb3J2IG9ydi1ROEJ2cS1EbHYgb3J2IG9ydi1ialF2bHZuICIgbHJIRHJSZEg9Ijw/ZGVkIEhMZTggJFE4YUhfRGp5ckhRX2x2RjhbbV1bJ0J5SFFfclJkSCddOyA/PiIgbHJIRFFIRj0iPD9kZWQgbEYgKCRROGFIX0RqeXJIUV9sdkY4W21dWydCeUhRX3JSZEgnXSA9PSBVKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICRkUWxEalFSX0J5SFFuUThCZF9scVU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gSGF5SCBsRiAoJFE4YUhfRGp5ckhRX2x2RjhbbV1bJ0J5SFFfclJkSCddID09IEspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJHlySGRfUThhSF9scTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA/PiI+PHlkanY+PGwgTGFqeXk9ImxMOHYtblE4QmQiPjwvbD48L3lkanY+PC9vQnJyOHY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkUThhSF9EanlySFFfbHZGOFttXVsnQnlIUV9yUmRIJ10gPT0gVSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlTj45SEw4dnFqUVI8L2VOPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZCBITGU4ICR5SEw4dnFqUVJfQnlIUW5ROEJkVTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJHlITDh2cWpRUl9CeUhRblE4QmRfbHFVKSAmJiBseXlIcigkeUhMOHZxalFSX3FIYUhuanJIKSAmJiAkeUhMOHZxalFSX3FIYUhuanJIID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSExlOCAnPHlkanYgTGFqeXk9ImFqb0hhIGFqb0hhLWxEZDhRcmp2ciI+TUhhSG5qckg8L3lkanY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9CcnI4diByUmRIPSJvQnJyOHYiIExhanl5PSJvcnZfQnlIUXlfYWx5ciBvcnYgb3J2LVE4QnZxLURsdiBvcnYgb3J2LWJqUXZsdm4gIiBsckhEUUhGPSI8P2RlZCBITGU4ICR5SEw4dnFqUVJfQnlIUW5ROEJkX2xxVTsgPz4iPjx5ZGp2PjxsIExhanl5PSJsTDh2LW5ROEJkIj48L2w+PC95ZGp2Pjwvb0Jycjh2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZU4+SThRVy1GYThiIEVqdmpuSFE8L2VOPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+CiAgICAgICAgICAgICAgICA8P2RlZCBITGU4ICRiRGp2am5IUV92akRIOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JxPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJsRF9RUThhSF9CeUhReV9Cdmx0QkggPSBqUVFqUigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibERfUVE4YUhfeXJqckJ5ID0galFRalIoVW0sIGcsIFVOLCBVeiwgbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJsRF9RUThhSF95cmpyQnlfQnlIUXkgPSAkSTZCbGFxSFEtPm5Icl9iOFFXRmE4Yl9sRF9BUThhSHlfNlI5cmpyQnkoJGxEX2xxLCAkbERfUWxxLCAkb09scSwgJGJsRF9xSHJqbGF5W21dWydqX3lyanJCeSddKTsKLy9kUWx2cl9RKCRibERfUVE4YUhfeXJqckJ5X0J5SFF5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIUhEZHJSKCRibERfUVE4YUhfeXJqckJ5X0J5SFF5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGOFFIakxlICgkYmxEX1FROGFIX3lyanJCeV9CeUhReSBqeSAkYmxEX1FROGFIX3lyanJCeV9CeUhRKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoIWx2X2pRUWpSKCRibERfUVE4YUhfeXJqckJ5X0J5SFFbJ0J5SFFfbHEnXSwgJGJsRF9RUThhSF9CeUhReV9Cdmx0QkgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalFRalJfZEJ5ZSgkYmxEX1FROGFIX0J5SFF5X0J2bHRCSCwgJGJsRF9RUThhSF95cmpyQnlfQnlIUVsnQnlIUV9scSddKTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQnlIUV9sdkY4ID0gJEp5SFEtPm5Ickp5SFF5XzZSWnEoJGJsRF9RUThhSF95cmpyQnlfQnlIUVsnQnlIUV9scSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQnlIUV9uUThCZF9sdkY4ID0gJEp5SFEtPm5Ickp5SFEyUThCZF9vUlpxKCRCeUhRX2x2RjhbbV1bJ1E4YUgnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRqX3lySGRfcUhyamxheVttXVsnal95cmpyQnknXSA9PSBVbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9RX3lyanJCeSA9ICdBZGRROE9IcSByOCBCeUhRJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRqX3lySGRfcUhyamxheVttXVsnal95cmpyQnknXSA9PSBnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMX1FfeXJqckJ5ID0gJzVIRkhRUUhxJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEhheUggbEYgKCRqX3lySGRfcUhyamxheVttXVsnal95cmpyQnknXSA9PSBVTikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9RX3lyanJCeSA9ICdNSGFIbmpySCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkal95ckhkX3FIcmpsYXlbbV1bJ2pfeXJqckJ5J10gPT0gVXopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfUV95cmpyQnkgPSAnQXl5bG52SHEgcjggQnlIUSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkal95ckhkX3FIcmpsYXlbbV1bJ2pfeXJqckJ5J10gPT0gbSAmJiAkTF9qYVFIanFSX2RROExIeXlIcV9CeUhRID09IFUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExfUV95cmpyQnkgPSAnQXl5bG52SHEgcjggamFRSGpxUiBkUThMSHl5SHEgQnlIUSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBIYXlIIGxGICgkal95ckhkX3FIcmpsYXlbbV1bJ2pfeXJqckJ5J10gPT0gbSAmJiBIRGRyUigkTF9qYVFIanFSX2RROExIeXlIcV9CeUhRKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTF9RX3lyanJCeSA9ICc1SHlkOHZ5bG9hSCBCeUhRJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKGx2X2pRUWpSKCRqX3lySGRfcUhyamxheVttXVsnal95cmpyQnknXSwgJGJsRF9RUThhSF95cmpyQnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVDIExhanl5PSJySHVyLUhRUThRIj4gPD9kZWQgSExlOCAkTF9RX3lyanJCeTsgPz4mdm95ZDsmdm95ZDsmdm95ZDsmdm95ZDs8bCBMYWp5eT0ibEw4di1lanZxLVFsbmVyIj48L2w+PC9lQz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQgSExlOCAkQnlIUV9sdkY4W21dWydGdmpESCddIC4gJyAnIC4gJEJ5SFFfbHZGOFttXVsnRHZqREgnXSAuICcgJyAuICRCeUhRX2x2RjhbbV1bJ2F2akRIJ10gLiAnKCcgLiAkQnlIUV9sdkY4W21dWydIRGpsYSddIC4gJyknOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZCBITGU4ICc8eWRqdiBMYWp5eT0iYWpvSGEgYWpvSGEtbHZGOCI+JyAuICRCeUhRX25ROEJkX2x2RjhbbV1bJ3ZqREgnXSAuICc8L3lkanY+JzsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvclE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ybzhxUj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yam9hSD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvT2phQkhfcUhyamxheVttXVsnUThhSF9EanlySFFfbHEnXSA9PSAtVSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdlVLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVYIExhanl5PSIgZGpuSC1lSGpxSFEiPiA1QmFIeTwvZVg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdlVLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJqb2FIIExhanl5PSJyam9hSCByam9hSC1vOFFxSFFIcSByam9hSC1RSHlkOHZ5bE9IIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZUhqcT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVCYUgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlIExhanl5PSJMSHZySFEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzhRREJhaid5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVIanE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVOPiA8P2RlZCBITGU4ICRRQmFIX2x2RjhbbV1bJ1FCYUhfdmpESCddOyA/PjwvZU4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMYWp5eT0iTEh2ckhRIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eWRqdiBscT0iPD9kZWQgSExlOCAkUUJhSF9sdkY4W21dWydscSddOyA/PiIgTGFqeXk9Im9qcW5IIG9qcW5ILXlCTExIeXkgTGFqeXlfZDhkQmRfUUJhSGx2RjgiPjw/ZGVkIEhMZTggJHY4X0Y4UURCYWp5OyA/PjwveWRqdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ycT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmpvYUg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCRvT2phQkhfcUhyamxheVttXVsnUThhSF9EanlySFFfbHEnXSA9PSAtSykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdlVLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVYIExhanl5PSIgZGpuSC1lSGpxSFEiPiA1QmFIeTwvZVg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdlVLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJqb2FIIExhanl5PSJyam9hSCByam9hSC1vOFFxSFFIcSByam9hSC1RSHlkOHZ5bE9IIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZUhqcT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8clE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFxT2p2TEhxIDVCYUgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlIExhanl5PSJMSHZySFEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzhRREJhaid5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yUT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVIanE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cm84cVI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cnE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVOPiA8P2RlZCBITGU4ICRRQmFIX2x2RjhbbV1bJ1FCYUhfdmpESCddOyA/PjwvZU4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcnE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxycSBMYWp5eT0iTEh2ckhRIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eWRqdiBscT0ial88P2RlZCBITGU4ICRRQmFIX2x2RjhbbV1bJ2xxJ107ID8+IiBMYWp5eT0ib2pxbkggb2pxbkgteUJMTEh5eSBMYWp5eV9kOGRCZF9RQmFIbHZGOCI+PD9kZWQgSExlOCAkdjhfRjhRREJhank7ID8+PC95ZGp2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JxPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JRPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ybzhxUj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yam9hSD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICdMOERESHZyeS1kOHlyJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBITGU4ICdqTHJsT0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiIgbHE9Ikw4RERIdnJ5LWQ4eXIiIHlyUmFIPSJEalFubHY6IFVtZHUgQ2R1IFVtZHUgQ2R1OyI+ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlaCBMYWp5eT0iZEJhYS1hSEZyIj5JOFFXRmE4YiA5cmpyQnkgIDwvZWg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdksiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYThMV19IcWxyX3lyanJCeSA9IGpRUWpSKFUsIGgsIEMsIFVVLCBVQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hMZTggJHlySGRfakxMSHl5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFsdl9qUVFqUigkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSwgJG9hOExXX0hxbHJfeXJqckJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkZGpRamFhSGFfeXJIZF9RQnZ2bHZuID09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJGphUUhqcVJfQnlIUV9kUThMSHl5SHEgPSAkSThRV0ZhOGItPm5Icl9JWkU5cmpyQnlfNlpxX0paTSgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10sICRvbHEsICRvT2xxLCAkbERfUWxxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbEYgKEw4QnZyKCRqYVFIanFSX0J5SFFfZFE4TEh5eUhxKSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoTDhCdnIoJGFqckhRamFfRmE4Yl95ckhkeV9sdmRROExIeXkpIDw9IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvQnJyOHYgTGFqeXk9Im9CcnI4dm9hbHZXIiB5clJhSD0iICBGOHZyLXlsU0g6IFVVZHU7IiBlUUhGPSIjRDhxamFfeXJqckJ5X3FqeWVvOGpRcVUiICBxanJqLXI4bm5hSD0iRDhxamEiIHJSZEg9Im9CcnI4diIgTGFqeXk9IiAgIj4gPHlkanYgeXJSYUg9IiAgICBEalFubHYtUWxuZXI6IHpkdTsiPiA8bERuIHlRTD0iLi4vUUh5OEJRTEh5L2xEam5IeS85bG52LThGRi5kdm4iIHlyUmFIPSJlSGxuZXI6IFVoZHU7IERqUW5sdi1yOGQ6IC1oZHU7IERqUW5sdi1hSEZyOiBoZHU7Ij48L3lkanY+ICA5bG52LThGRjwvb0Jycjh2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLUw4dnJIdnIiIHlyUmFIPSJlSGxuZXI6IGpCcjg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InJqby1kanZIIGpMcmxPSCIgbHE9InFsT19MZWpyX0w4RERIdnJ5X2FseXIiICB5clJhSD0iRGp1LWVIbG5lcjpVQ21kdTsgOE9IUUZhOGI6IHlMUThhYTsiPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2VUsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RjhRRCBMYWp5eT0iRjhRRC1lOFFsUzh2cmphIGFIRnItamFsbnYiIGxxPSJGOFFEX0xlanIiIERIcmU4cT0iNGM5dyIgakxybDh2PSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IkxlanItbHZkQnIgeWRqdlVLICI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJIdXJqUUhqIExhanl5PSJMZWpyLWx2ZEJybzh1IHlkanZVSyIgUThieT0iQyIgTDhheT0iem0iIHlyUmFIPSJibHFyZTogem0lIiB2akRIPSJMZWpyX0w4RERIdnIiIFE4Ynk9IksiPjwvckh1cmpRSGo+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9CcnI4diBMYWp5eT0ib3J2IG9ydi1kUWxEalFSIExlanJfeUh2cV9vcnYiIHJSZEg9Im9CcnI4diI+PGwgTGFqeXk9ImxMOHYtOFciPjwvbD4gOUh2cTwvb0Jycjh2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRjhRRD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09IDlyalFyIHhCSFFSIDlITHJsOHYgPT09PT0gLS0+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJyam8tZGp2SCA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghSERkclIoJF81aXhKaTl3WydqX3Jqb19Eamx2J10pICYmICRfNWl4Smk5d1snal9yam9fRGpsdiddID09ICd0QkhRUi15SExybDh2LWQ4eXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhMZTggJ2pMcmxPSCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+IiBscT0idEJIUVIteUhMcmw4di1kOHlyIiB5clJhSD0iRGpRbmx2OiBVbWR1IENkdSBVbWR1IENkdTsiPiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZOIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJROGItRmFCbHEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWggTGFqeXk9ImRCYWEtYUhGciI+SThRV0ZhOGIgOXJqckJ5ICA8L2VoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InlkanZLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2E4TFdfSHFscl95cmpyQnkgPSBqUVFqUihVLCBoLCBDLCBVVSwgVUMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ITGU4ICR5ckhkX2pMTEh5eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICghbHZfalFRalIoJGFqckh5cl95cmpyQnlfcUhyamxheVttXVsneXJqckJ5J10sICRvYThMV19IcWxyX3lyanJCeSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJHlySGRfakxMSHl5ID09IFUgJiYgbHZfalFRalIoJG9PbHEsICRqX3lySGRfalFRKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsRiAoJGRqUWphYUhhX3lySGRfUUJ2dmx2biA9PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyRqYVFIanFSX0J5SFFfZFE4TEh5eUhxID0gJEk4UVdGYThiLT5uSHJfSVpFOXJqckJ5XzZacV9KWk0oJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydCeUhRX2xxJ10sICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddLCAkb2xxLCAkb09scSwgJGxEX1FscSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xGIChMOEJ2cigkamFRSGpxUl9CeUhRX2RROExIeXlIcSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKEw4QnZyKCRhanJIUWphX0ZhOGJfeXJIZHlfbHZkUThMSHl5KSA8PSBtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b0Jycjh2IExhanl5PSJvQnJyOHZvYWx2VyIgeXJSYUg9IiAgRjh2ci15bFNIOiBVVWR1OyIgZVFIRj0iI0Q4cWphX3lyanJCeV9xanllbzhqUXFVIiAgcWpyai1yOG5uYUg9IkQ4cWphIiByUmRIPSJvQnJyOHYiIExhanl5PSIgICI+IDx5ZGp2IHlyUmFIPSIgICAgRGpRbmx2LVFsbmVyOiB6ZHU7Ij4gPGxEbiB5UUw9Ii4uL1FIeThCUUxIeS9sRGpuSHkvOWxudi04RkYuZHZuIiB5clJhSD0iZUhsbmVyOiBVaGR1OyBEalFubHYtcjhkOiAtaGR1OyBEalFubHYtYUhGcjogaGR1OyI+PC95ZGp2PiAgOWxudi04RkY8L29CcnI4dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy99CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlUSB5clJhSD0iRGpRbmx2OiBtZHUgbWR1IFVtZHUgbWR1OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/ZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PiAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdksiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aiBlUUhGPSIjIiBscT0iUWpseUhfdEJIUVIiIHZqREggPSAiUWpseUhfdEJIUVIiIFE4YUg9Im9CcnI4diIgTGFqeXk9Im9ydiBRamx5SF90QkhRUiBvcnYgb3J2LWx2RjgiIHlyUmFIPSJlSGxuZXI6IEtLZHUgIWxEZDhRcmp2cjsgRGpRbmx2LWFIRnI6IEttZHU7Ij45SHZxIHhCSFFSIHI4IC4uLjwvaj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGOFFEIExhanl5PSJGOFFELWU4UWxTOHZyamEgYUhGci1qYWxudiIgbHE9IkY4UURfdEJIUVJfTDhEREh2ciIgREhyZThxPSI0Yzl3IiBqTHJsOHY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iTGVqci1sdmRCciB5ZGp2VUsgIiB5clJhSD0iRGpRbmx2LXI4ZDogbWR1OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFqb0hhIHlyUmFIPSJGOHZyLWJIbG5lcjpvOGFxOyI+eEJIUVIgd0h1cjwvYWpvSGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJIdXJqUUhqIExhanl5PSIgeWRqdlVLIiBROGJ5PSJDIiBMOGF5PSJ6bSIgeXJSYUg9ImJscXJlOiB6bSUiIHZqREg9InRCSFFSX0w4RERIdnIiIGxxID0gInRCSFFSX0w4RERIdnIiIFE4Ynk9IksiPjwvckh1cmpRSGo+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b0Jycjh2IExhanl5PSJvcnYgb3J2LWRRbERqUVIgdEJIUVJfeUh2cV9vcnYiIHJSZEg9Im9CcnI4diIgeXJSYUg9IiAgICBEalFubHYtYUhGcjogWHpkdTsiPjxsIExhanl5PSJsTDh2LThXIj48L2w+IDlIdnE8L29CcnI4dj4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GOFFEPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlUSB5clJhSD0iRGpRbmx2OiB6ZHU7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdlVLIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0icmpvLUw4dnJIdnIiIHlyUmFIPSJlSGxuZXI6IGpCcjg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InJqby1kanZIIGpMcmxPSCIgbHE9InFsT19MZWpyX3RCSFFSX2FseXIiPgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9xbE8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBpdnEgeEJIUVIgOUhMcmw4diA9PT09PT09PT09PT0gLS0+CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gOXJqUXIgSThRV0ZhOGIgVmx2V2x2biA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9InJqby1kanZIIiBscT0iSThRVzNhOGItVmx2V2x2biIgeXJSYUg9IkRqUW5sdjogVW1kdSBDZHUgVW1kdSBDZHU7Ij4gICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxxbE8gTGFqeXk9IlE4Yi1GYUJscSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cWxPIExhanl5PSJ5ZGp2TiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0iUThiLUZhQmxxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdk4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVoIExhanl5PSJkQmFhLWFIRnIiPkk4UVdGYThiIFZsdldsdm4gIDwvZWg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHFsTyBMYWp5eT0ieWRqdksiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYThMV19IcWxyX3lyanJCeSA9IGpRUWpSKFUsIGgsIEMsIFVVLCBVQyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hMZTggJHlySGRfakxMSHl5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEYgKCFsdl9qUVFqUigkYWpySHlyX3lyanJCeV9xSHJqbGF5W21dWyd5cmpyQnknXSwgJG9hOExXX0hxbHJfeXJqckJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkeXJIZF9qTExIeXkgPT0gVSAmJiBsdl9qUVFqUigkb09scSwgJGpfeXJIZF9qUVEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGICgkZGpRamFhSGFfeXJIZF9RQnZ2bHZuID09IG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxGIChMOEJ2cigkYWpySFFqYV9GYThiX3lySGR5X2x2ZFE4TEh5eSkgPD0gbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9CcnI4diBMYWp5eT0ib0Jycjh2b2FsdlciIHlyUmFIPSIgIEY4dnIteWxTSDogVVVkdTsiIGVRSEY9IiNEOHFqYV95cmpyQnlfcWp5ZW84alFxVSIgIHFqcmotcjhubmFIPSJEOHFqYSIgclJkSD0ib0Jycjh2IiBMYWp5eT0iICAiPiA8eWRqdiB5clJhSD0iICAgIERqUW5sdi1RbG5lcjogemR1OyI+IDxsRG4geVFMPSIuLi9RSHk4QlFMSHkvbERqbkh5LzlsbnYtOEZGLmR2biIgeXJSYUg9ImVIbG5lcjogVWhkdTsgRGpRbmx2LXI4ZDogLWhkdTsgRGpRbmx2LWFIRnI6IGhkdTsiPjwveWRqdj4gOWxudi04RkY8L29CcnI4dj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P2RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy99CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb0JsYXFIUXlfYkZfUThhSCA9ICRJOFFXRmE4Yi0+bkhyX0k2QmxhcUhRXzZSNThhSF9KeUhRMlE4QmQoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydIRGRxanllJ11bJ0hEZF9ROGFIJ10sICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJGRscSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb0JsYXFIUXlfYkZfUUJhSCA9ICRJOFFXRmE4Yi0+bkhyX0k2QmxhcUhRXzZSNUJhSF9KeUhRMlE4QmQoJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydIRGRxanllJ11bJ0hEZF9ROGFIJ10sICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnUThhSCddLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJGRscSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb0JsYXFIUXlfYkZfQnlIUSA9ICRJOFFXRmE4Yi0+bkhyX0k2QmxhcUhRXzZSNUJhSF9KeUhRKCRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddLCAkZGxxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvQmxhcUhReV9iRl9CeUhRX2xxID0gJEk4UVdGYThiLT5uSHJfSTZCbGFxSFFfNlI1OGFIX0p5SFFacSgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0hEZHFqeWUnXVsnSERkX1E4YUgnXSwgJF85aTk5WmMwWzlpOTlaYzBfWUE1XzBBRWldWydROGFIJ10sICRfOWk5OVpjMFs5aTk5WmMwX1lBNV8wQUVpXVsnQnlIUV9scSddLCAkZGxxLCAkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ3FIZHJfbHEnXSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9CbGFxSFF5X2JGX2RROExIeXlIcV9CeUhRX2xxID0gJEk4UVdGYThiLT5uSHJfSTNfNFE4TEh5eUhxX0paTSgkXzlpOTlaYzBbOWk5OVpjMF9ZQTVfMEFFaV1bJ0J5SFFfbHEnXSwgJGRscSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9CbGFxSFF5X2FseXJVID0galFRalJfREhRbkgoJG9CbGFxSFF5X2JGX1E4YUgsICRvQmxhcUhReV9iRl9RQmFIKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvQmxhcUhReV9hbHlySyA9IGpRUWpSX0RIUW5IKCRvQmxhcUhReV9hbHlyVSwgJG9CbGFxSFF5X2JGX0J5SFEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9CbGFxSFF5X2FseXJYID0galFRalJfREhRbkgoJG9CbGFxSFF5X2FseXJLLCAkb0JsYXFIUXlfYkZfZFE4TEh5eUhxX0J5SFFfbHEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvQmxhcUhReV9hbHlyID0galFRalJfREhRbkgoJG9CbGFxSFF5X2FseXJYLCAkb0JsYXFIUXlfYkZfQnlIUV9scSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9CbGFxSFF5X2FseXJfalFRID0galFRalJfQnZsdEJIKGpRUWpSX0w4YUJEdigkb0JsYXFIUXlfYWx5ciwgJ2xxJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9CbGFxSFF5X2FseXJfalFRID0galFRalJfT2phQkh5KCRvQmxhcUhReV9hbHlyX2pRUSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcWxPPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3FsTz4KCi