Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode('CiBjbGFzcyBQcmludF9pbnZvaWNlIGV4dGVuZHMgQ0lfQ29udHJvbGxlciB7IGZ1..

Decoded Output download


 class Print_invoice extends CI_Controller { function __construct() { parent::__construct("print"); $this->load->library("sale_lib"); $this->load->library("purchase_order_lib"); $this->load->library("sales_order_lib"); } function page($sale_id) { $this->Employee->clear_location_id_print(); $this->load->library("encryption"); $encrypted_id = base64_decode($sale_id); $sale_id_ex = $this->encryption->decrypt($encrypted_id); $value = explode(" ", $sale_id_ex); $data["sale_my_id"] = $value[0]; $this->Employee->set_location_id_print($value[1]); $data["type"] = $value[2]; $sale_id = $data["sale_my_id"]; $type = $data["type"]; $this->sale_lib->save_current_sale_state(); $data["is_sale"] = FALSE; $sale_info = $this->Sale->get_info($sale_id)->row_array(); $this->sale_lib->clear_all(); $this->sale_lib->set_sale_discount_type($sale_info["discount_type"]); $data["current_discount_type"] = $this->sale_lib->get_sale_discount_type(); if ($sale_info["manual_bill_no"]) { $this->sale_lib->set_manual_bill_no($sale_info["manual_bill_no"]); $data["manual_bill_no"] = $this->sale_lib->get_manual_bill_no(); } if ($sale_info["manual_round_off"]) { $this->sale_lib->set_manual_round_off($sale_info["manual_round_off"]); $data["manual_round_off"] = $this->sale_lib->get_manual_round_off(); } if ($sale_info["no_tax_sale"]) { $this->sale_lib->set_no_tax_sale($sale_info["no_tax_sale"]); } $data["no_tax_sale"] = $this->sale_lib->get_no_tax_sale(); $this->sale_lib->copy_entire_sale($sale_id, true); $data["cart"] = $this->sale_lib->get_cart(); $data["payments"] = $this->sale_lib->get_payments(); $data["is_sale_cash_payment"] = $this->sale_lib->is_sale_cash_payment(); $data["show_payment_times"] = TRUE; $data["subtotal"] = $this->sale_lib->get_subtotal($sale_id); if ($this->config->item("default_break_up") == 2) { $data["taxes1"] = $this->sale_lib->get_taxes(); $data["taxes"] = $this->sale_lib->get_taxes_for_sale(); $data["table"] = sale_tax_table(); } else { $data["taxes1"] = $this->sale_lib->get_taxes(); $data["taxes"] = $this->sale_lib->get_taxes_for_sale(); $data["table"] = sale_tax_table(); } $data["total"] = $this->sale_lib->get_total($sale_id); $data["receipt_title"] = $this->sale_lib->get_sale_bill_type() == "receipt" ? lang("sales_receipt") : lang("sales_invoice"); $data["comment"] = $this->Sale->get_comment($sale_id); $data["show_comment_on_receipt"] = $this->Sale->get_comment_on_receipt($sale_id); $data["transaction_time"] = date(get_date_format() . " " . get_time_format(), strtotime($sale_info["sale_time"])); $customer_id = $this->sale_lib->get_customer(); $delivery_det = $this->Sale->get_door_delivery_details($sale_id)->row(); $data["dname"] = $delivery_det->name; $data["daddress"] = $delivery_det->address; $data["trans_mode"] = $delivery_det->transportation_mode; $data["vehcle_no"] = $delivery_det->vehcle_no; $data["supply_date"] = $delivery_det->supply_date; $data["supply_place"] = $delivery_det->supply_place; $emp_info = $this->Employee->get_info($sale_info["employee_id"]); $data["payment_type"] = $sale_info["payment_type"]; $data["amount_change"] = $this->sale_lib->get_amount_due($sale_id) * -1; $data["employee"] = $emp_info->first_name . " " . $emp_info->last_name; $data["ref_no"] = $sale_info["cc_ref_no"]; $data["auth_code"] = $sale_info["auth_code"]; $data["discount_exists"] = $this->_does_discount_exists($data["cart"]); if ($customer_id != -1) { $cust_info = $this->Customer->get_info($customer_id); $data["customer"] = $cust_info->first_name . " " . $cust_info->last_name; $data["customer_address"] = $cust_info->address; $data["customer_state"] = $cust_info->state; $data["customer_country"] = $cust_info->country; $data["customer_phone"] = $cust_info->phone_number; $data["customer_email"] = $cust_info->email; $data["customer_gstn"] = $cust_info->gstn; $data["customer_company_name"] = $cust_info->company_name; $data["customer_taxable"] = $cust_info->taxable; } $data["sale_id"] = $this->config->item("sale_prefix") . " " . $sale_id; $data["store_account_payment"] = FALSE; foreach ($data["cart"] as $item) { if ($item["name"] == lang("sales_store_account_payment")) { $data["store_account_payment"] = TRUE; break; } } $total_mrp = 0; foreach ($data["cart"] as $row_cart) { $total_mrp = $total_mrp + $row_cart["mrp"] * $row_cart["quantity"]; } $data["total_mrp"] = $total_mrp; $data["amount_saved"] = $total_mrp - $data["total"]; if ($this->config->item("show_amount_to_words_in_receipt")) { $data["amount_in_words"] = $this->amount_to_words($data["total"]); } if (($cust_info->taxable or $customer_id == -1) && !$this->sale_lib->get_no_tax_sale()) { foreach ($data["cart"] as $key => $item) { $price_to_use = $this->sale_lib->_get_price_for_item_in_cart($item); if ($this->sale_lib->get_sale_igst_enabled()) { $tax_info = isset($item["item_id"]) ? $this->Item_taxes_finder->get_igst_info($item["item_id"]) : $this->Item_kit_taxes_finder->get_igst_info($item["item_kit_id"]); $tax_amount = ($price_to_use * $item["quantity"] - $price_to_use * $item["quantity"] * $item["discount"] / 100) * ($tax_info[0]["percent"] / 100); $data["cart"][$key][$tax_info[0]["name"]] = array("percent" => $tax_info[0]["percent"], "amount" => $tax_amount); } else { $tax_info = isset($item["item_id"]) ? $this->Item_taxes_finder->get_info($item["item_id"]) : $this->Item_kit_taxes_finder->get_info($item["item_kit_id"]); $tax_names = array(); foreach ($tax_info as $tax) { $tax_amount = ($price_to_use * $item["quantity"] - $price_to_use * $item["quantity"] * $item["discount"] / 100) * ($tax["percent"] / 100); $data["cart"][$key][$tax["name"]] = array("percent" => $tax["percent"], "amount" => $tax_amount); $tax_names[] = $tax["name"]; } $data["cart"][$key]["tax_names"] = $tax_names; } if ($this->config->item("GST") == 1) { $cess_tax_info = isset($item["item_id"]) ? $this->Item_taxes_finder->get_cess_info($item["item_id"]) : $this->Item_kit_taxes_finder->get_cess_info($item["item_kit_id"]); if ($cess_tax_info) { $cess_tax_amount = ($price_to_use * $item["quantity"] - $price_to_use * $item["quantity"] * $item["discount"] / 100) * ($cess_tax_info[0]["percent"] / 100); $data["cart"][$key]["CESS"] = array("percent" => $cess_tax_info[0]["percent"], "amount" => $cess_tax_amount); $data["cess_added"] = 1; } } } } if ($this->sale_lib->get_sale_igst_enabled()) { $data["sale_tax_type"] = "IGST"; } else { $data["sale_tax_type"] = "Other"; } foreach ($data["cart"] as $key => $item) { $taxable_value = $this->sale_lib->get_taxable_value($item, $sale_id, $key); $data["cart"][$key]["taxable_value"] = $taxable_value; } if ($type == 0) { $this->load->view("sales/receipt_email_preview", $data); } else { $this->load->view("sales/invoice_email_preview", $data); } $this->sale_lib->clear_all(); $this->sale_lib->restore_current_sale_state(); $this->removeDuplicateSessionCookieHeaders(); } function removeDuplicateSessionCookieHeaders() { if (function_exists("header_remove")) { $CI =& get_instance(); $headers = headers_list(); $cookies_to_output = array(); $header_session_cookie = ''; $session_cookie_name = $CI->config->item("sess_cookie_name"); foreach ($headers as $header) { list($header_type, $data) = explode(":", $header, 2); $header_type = trim($header_type); $data = trim($data); if (strtolower($header_type) == "set-cookie") { header_remove("Set-Cookie"); $cookie_value = current(explode(";", $data)); list($key, $val) = explode("=", $cookie_value); $key = trim($key); if ($key == $session_cookie_name) { $header_session_cookie = $data; continue; } else { $cookies_to_output[] = array("header_type" => $header_type, "data" => $data); } } } if (!empty($header_session_cookie)) { $cookies_to_output[] = array("header_type" => "Set-Cookie", "data" => $header_session_cookie); } foreach ($cookies_to_output as $cookie) { header("{$cookie["header_type"]}: {$cookie["data"]}", false); } } } function _does_discount_exists($cart) { foreach ($cart as $line => $item) { if ($item["discount"] > 0) { return TRUE; } } return FALSE; } function amount_to_words($number) { $negative = false; $number_negative_sp = explode("-", $number); if (count($number_negative_sp) > 1) { $number = $number_negative_sp[1]; $negative = true; } $split_amount = explode(".", to_currency_no_money($number)); $no = $split_amount[0]; $point = $split_amount[1]; $hundred = null; $digits_1 = strlen($no); $i = 0; $str = array(); $words = array("1" => "One", "2" => "Two", "3" => "Three", "4" => "Four", "5" => "Five", "6" => "Six", "7" => "Seven", "8" => "Eight", "9" => "Nine", "10" => "Ten", "11" => "Eleven", "12" => "Twelve", "13" => "Thirteen", "14" => "Fourteen", "15" => "Fifteen", "16" => "Sixteen", "17" => "Seventeen", "18" => "Eighteen", "19" => "Nineteen", "20" => "Twenty", "30" => "Thirty", "40" => "Forty", "50" => "Fifty", "60" => "Sixty", "70" => "Seventy", "80" => "Eighty", "90" => "Ninety"); $point_words = array("0" => "Zero", "1" => "One", "2" => "Two", "3" => "Three", "4" => "Four", "5" => "Five", "6" => "Six", "7" => "Seven", "8" => "Eight", "9" => "Nine"); $digits = array('', "Hundred", "Thousand", "Lakh", "Crore"); while ($i < $digits_1) { $divider = $i == 2 ? 10 : 100; $number = floor($no % $divider); $no = floor($no / $divider); $i += $divider == 10 ? 1 : 2; if ($number) { $plural = ($counter = count($str)) && $number > 9 ? "s" : null; $hundred = $counter == 1 && $str[0] ? " and " : null; $str[] = $number < 21 ? $words[$number] . " " . $digits[$counter] . $plural . " " . $hundred : $words[floor($number / 10) * 10] . " " . $words[$number % 10] . " " . $digits[$counter] . $plural . " " . $hundred; } else { $str[] = null; } } $str = array_reverse($str); $result = implode('', $str); if ($negative) { $result = "Minus " . $result; } $point_digits = strlen($point); $i = 0; while ($i < $point_digits) { $divider = $i == 2 ? 10 : 100; $number = floor($point % $divider); $point = floor($point / $divider); $i += $divider == 10 ? 1 : 2; if ($number) { $plural = ($counter = count($str1)) && $number > 9 ? "s" : null; $hundred = $counter == 1 && $str1[0] ? " and " : null; $str1[] = $number < 21 ? $words[$number] . " " . $digits[$counter] . $plural . " " . $hundred : $words[floor($number / 10) * 10] . " " . $words[$number % 10] . " " . $digits[$counter] . $plural . " " . $hundred; } else { $str1[] = null; } } $str1 = array_reverse($str1); $point_result = implode('', $str1); if ($this->config->item("currency_type") == "none") { $points = $point_result ? $point_result . " " : ''; } else { if ($this->config->item("currency_type") == "rupees") { $points = $point_result ? " and " . $point_result . " " : ''; } else { $points = $point_result ? $point_result . " " : ''; } } if ($this->config->item("currency_type") == "rupees") { $currency = " Rupees "; $currency_decimal = " Paise "; } if ($point_result) { if ($this->config->item("currency_type") == "rupees") { return $result . $currency . $points . $currency_decimal . "only"; } else { if ($this->config->item("currency_type") == "none") { return $result . " point " . $points . $this->config->item("currency_symbol") . " only"; } else { return $result . " point " . $points . $this->config->item("currency_type") . " only"; } } } else { if ($this->config->item("currency_type") == "rupees") { return $result . $currency . "only"; } else { if ($this->config->item("currency_type") == "none") { return $result . $this->config->item("currency_symbol") . " only"; } else { return $result . $this->config->item("currency_type") . " only"; } } } } function page_purchase($sale_id) { $this->Employee->clear_location_id_print(); $this->load->library("encryption"); $encrypted_id = base64_decode($sale_id); $sale_id_ex = $this->encryption->decrypt($encrypted_id); $value = explode(" ", $sale_id_ex); $data["sale_id"] = $value[0]; $this->Employee->set_location_id_print($value[1]); $po_id = $data["sale_id"]; $po_info = $this->purchase_orders->get_info($po_id)->row_array(); $this->purchase_order_lib->clear_all(); $data["no_tax_po"] = $po_info["no_tax_po"]; if ($po_info["no_tax_po"]) { $this->purchase_order_lib->set_no_tax_po(); } $this->purchase_order_lib->copy_entire_po($po_id); $data["cart"] = $this->purchase_order_lib->get_cart(); $data["subtotal"] = $this->purchase_order_lib->get_subtotal($po_id); $data["taxes"] = $this->purchase_order_lib->get_taxes_for_po(); $data["total"] = $this->purchase_order_lib->get_total($po_id); $data["receipt_title"] = lang("purchase_order_receipt"); $data["comment"] = $this->purchase_orders->get_comment($po_id); $data["order_time"] = date(get_date_format() . " " . get_time_format(), strtotime($po_info["order_time"])); $supplier_id = $this->purchase_order_lib->get_supplier(); $emp_info = $this->Employee->get_info($po_info["employee_id"]); $data["employee"] = $emp_info->first_name . " " . $emp_info->last_name; if ($supplier_id != -1) { $suppl_info = $this->Supplier->get_info($supplier_id); $data["supplier"] = $suppl_info->company_name; if ($suppl_info->first_name || $suppl_info->last_name) { $data["supplier"] .= " (" . $suppl_info->first_name . " " . $suppl_info->last_name . ")"; } $data["supplier_company_name"] = $suppl_info->company_name; $data["supplier_address"] = $suppl_info->address; $data["supplier_phone"] = $suppl_info->phone_number; $data["supplier_email"] = $suppl_info->email; $data["supplier_gstn"] = $suppl_info->gstn; $data["supplier_state"] = $suppl_info->state; } $data["order_id"] = $this->config->item("purchase_order_prefix") . " " . $po_id; $data["amount_in_words"] = $this->amount_to_words($data["total"]); if (empty($data["taxes"])) { foreach (array_keys($data["cart"]) as $key) { if (isset($data["cart"][$key]["item_id"])) { $item_info = $this->Item->get_info($data["cart"][$key]["item_id"]); if ($item_info->cost_price_tax_included) { $price_to_use = get_price_for_item_excluding_taxes($data["cart"][$key]["item_id"], $data["cart"][$key]["price"]); $data["cart"][$key]["price"] = $price_to_use; } } } } if (!$this->purchase_order_lib->get_no_tax_po()) { foreach ($data["cart"] as $key => $item) { $price_to_use = $this->purchase_order_lib->_get_price_for_item_in_cart($item, false); if ($this->purchase_order_lib->get_po_igst_enabled()) { $tax_info = $this->Item_taxes_finder->get_igst_info($item["item_id"]); $tax_amount = $price_to_use * $item["quantity"] * ($tax_info[0]["percent"] / 100); $data["cart"][$key][$tax_info[0]["name"]] = array("percent" => $tax_info[0]["percent"], "amount" => $tax_amount); } else { $tax_info = $this->Item_taxes_finder->get_info($item["item_id"]); $tax_names = array(); foreach ($tax_info as $tax) { $tax_amount = $price_to_use * $item["quantity"] * ($tax["percent"] / 100); $data["cart"][$key][$tax["name"]] = array("percent" => $tax["percent"], "amount" => $tax_amount); $tax_names[] = $tax["name"]; } $data["cart"][$key]["tax_names"] = $tax_names; } if ($this->config->item("GST") == 1) { $cess_tax_info = isset($item["item_id"]) ? $this->Item_taxes_finder->get_cess_info($item["item_id"]) : $this->Item_kit_taxes_finder->get_cess_info($item["item_kit_id"]); if ($cess_tax_info) { $cess_tax_amount = ($price_to_use * $item["quantity"] - $price_to_use * $item["quantity"] * $item["discount"] / 100) * ($cess_tax_info[0]["percent"] / 100); $data["cart"][$key]["CESS"] = array("percent" => $cess_tax_info[0]["percent"], "amount" => $cess_tax_amount); $data["cess_added"] = 1; } } } } foreach ($data["cart"] as $key => $item) { $taxable_value = $this->purchase_order_lib->get_taxable_value($item, $po_id); $data["cart"][$key]["taxable_value"] = $taxable_value; } if ($this->purchase_order_lib->get_po_igst_enabled()) { $data["sale_tax_type"] = "IGST"; } else { $data["sale_tax_type"] = "Other"; } $this->load->view("purchase_order/receipt_email_preview", $data); $this->purchase_order_lib->clear_all(); $this->removeDuplicateSessionCookieHeaders(); } function page_sales_order($sale_id) { $this->Employee->clear_location_id_print(); $this->load->library("encryption"); $encrypted_id = base64_decode($sale_id); $sale_id_ex = $this->encryption->decrypt($encrypted_id); $value = explode(" ", $sale_id_ex); $data["sale_my_id"] = $value[0]; $data["type"] = $value[2]; $this->Employee->set_location_id_print($value[1]); $sales_order_id = $data["sale_my_id"]; $type = $data["type"]; $sales_order_info = $this->Sales_orders->get_info($sales_order_id)->row_array(); $this->sales_order_lib->set_sales_order_discount_type($sale_info["discount_type"]); $data["current_discount_type"] = $this->sales_order_lib->get_sales_order_discount_type(); if ($sales_order_info["manual_bill_no"]) { $this->sales_order_lib->set_sales_order_manual_bill_no($sales_order_info["manual_bill_no"]); $data["manual_bill_no"] = $this->sales_order_lib->get_sales_order_manual_bill_no(); } if ($sales_order_info["manual_round_off"]) { $this->sales_order_lib->set_manual_round_off($sales_order_info["manual_round_off"]); $data["manual_round_off"] = $this->sales_order_lib->get_manual_round_off(); } $data["no_tax_sale"] = $sales_order_info["no_tax_sale"]; $this->sales_order_lib->copy_entire_sale($sales_order_id, true); $data["cart"] = $this->sales_order_lib->get_cart(); $data["subtotal"] = $this->sales_order_lib->get_subtotal($sales_order_id); $data["taxes"] = $this->sales_order_lib->get_taxes_for_sales_order(false); $data["total"] = $this->sales_order_lib->get_total($sales_order_id); $data["receipt_title"] = lang("sales_order_receipt_title"); $data["comment"] = $this->Sales_orders->get_comment($sales_order_id); $data["transaction_time"] = date(get_date_format() . " " . get_time_format(), strtotime($sales_order_info["sales_order_time"])); $customer_id = $this->sales_order_lib->get_customer(); $emp_info = $this->Employee->get_info($sales_order_info["employee_id"]); $data["employee"] = $emp_info->first_name . " " . $emp_info->last_name; $data["discount_exists"] = $this->_does_discount_exists($data["cart"]); if ($customer_id != -1) { $cust_info = $this->Customer->get_info($customer_id); $data["customer"] = $cust_info->first_name . " " . $cust_info->last_name; $data["customer_address"] = $cust_info->address; $data["customer_state"] = $cust_info->state; $data["customer_country"] = $cust_info->country; $data["customer_phone"] = $cust_info->phone_number; $data["customer_email"] = $cust_info->email; $data["customer_gstn"] = $cust_info->gstn; $data["customer_company_name"] = $cust_info->company_name; $data["customer_taxable"] = $cust_info->taxable; } $data["sale_id"] = $this->config->item("sales_order_prefix") . " " . $sales_order_id; $total_mrp = 0; foreach ($data["cart"] as $row_cart) { $total_mrp = $total_mrp + $row_cart["mrp"] * $row_cart["quantity"]; } $data["total_mrp"] = $total_mrp; $data["amount_saved"] = $total_mrp - $data["total"]; $data["amount_in_words"] = $this->amount_to_words($data["total"]); if (($cust_info->taxable or $customer_id == -1) && !$this->sales_order_lib->get_no_tax_sale()) { foreach ($data["cart"] as $key => $item) { $price_to_use = $this->sales_order_lib->_get_price_for_item_in_cart($item); if ($this->sales_order_lib->get_sales_order_igst_enabled()) { $tax_info = isset($item["item_id"]) ? $this->Item_taxes_finder->get_igst_info($item["item_id"]) : $this->Item_kit_taxes_finder->get_igst_info($item["item_kit_id"]); $tax_amount = ($price_to_use * $item["quantity"] - $price_to_use * $item["quantity"] * $item["discount"] / 100) * ($tax_info[0]["percent"] / 100); $data["cart"][$key][$tax_info[0]["name"]] = array("percent" => $tax_info[0]["percent"], "amount" => $tax_amount); } else { $tax_info = isset($item["item_id"]) ? $this->Item_taxes_finder->get_info($item["item_id"]) : $this->Item_kit_taxes_finder->get_info($item["item_kit_id"]); $tax_names = array(); foreach ($tax_info as $tax) { $tax_amount = ($price_to_use * $item["quantity"] - $price_to_use * $item["quantity"] * $item["discount"] / 100) * ($tax["percent"] / 100); $data["cart"][$key][$tax["name"]] = array("percent" => $tax["percent"], "amount" => $tax_amount); $tax_names[] = $tax["name"]; } $data["cart"][$key]["tax_names"] = $tax_names; } if ($this->config->item("GST") == 1) { $cess_tax_info = isset($item["item_id"]) ? $this->Item_taxes_finder->get_cess_info($item["item_id"]) : $this->Item_kit_taxes_finder->get_cess_info($item["item_kit_id"]); if ($cess_tax_info) { $cess_tax_amount = ($price_to_use * $item["quantity"] - $price_to_use * $item["quantity"] * $item["discount"] / 100) * ($cess_tax_info[0]["percent"] / 100); $data["cart"][$key]["CESS"] = array("percent" => $cess_tax_info[0]["percent"], "amount" => $cess_tax_amount); $data["cess_added"] = 1; } } } } foreach ($data["cart"] as $key => $item) { $taxable_value = $this->sales_order_lib->get_taxable_value($item, $sales_order_id, ''); $data["cart"][$key]["taxable_value"] = $taxable_value; } if ($this->sales_order_lib->get_sales_order_igst_enabled()) { $data["sale_tax_type"] = "IGST"; } else { $data["sale_tax_type"] = "Other"; } if ($type == 0) { $this->load->view("sales_order/receipt_email_preview", $data); } else { $this->load->view("sales_order/invoice_email_preview", $data); } $this->sales_order_lib->clear_all(); $this->removeDuplicateSessionCookieHeaders(); }

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBjbGFzcyBQcmludF9pbnZvaWNlIGV4dGVuZHMgQ0lfQ29udHJvbGxlciB7IGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgeyBwYXJlbnQ6Ol9fY29uc3RydWN0KCJcMTYwXDE2Mlx4NjlceDZlXDE2NCIpOyAkdGhpcy0+bG9hZC0+bGlicmFyeSgiXHg3M1x4NjFceDZjXHg2NVwxMzdcMTU0XDE1MVwxNDIiKTsgJHRoaXMtPmxvYWQtPmxpYnJhcnkoIlwxNjBcMTY1XHg3Mlx4NjNcMTUwXDE0MVwxNjNcMTQ1XDEzN1x4NmZceDcyXDE0NFx4NjVcMTYyXDEzN1x4NmNceDY5XHg2MiIpOyAkdGhpcy0+bG9hZC0+bGlicmFyeSgiXDE2M1wxNDFceDZjXDE0NVx4NzNceDVmXDE1N1x4NzJceDY0XHg2NVx4NzJceDVmXHg2Y1wxNTFcMTQyIik7IH0gZnVuY3Rpb24gcGFnZSgkc2FsZV9pZCkgeyAkdGhpcy0+RW1wbG95ZWUtPmNsZWFyX2xvY2F0aW9uX2lkX3ByaW50KCk7ICR0aGlzLT5sb2FkLT5saWJyYXJ5KCJceDY1XHg2ZVx4NjNceDcyXHg3OVx4NzBceDc0XHg2OVx4NmZcMTU2Iik7ICRlbmNyeXB0ZWRfaWQgPSBiYXNlNjRfZGVjb2RlKCRzYWxlX2lkKTsgJHNhbGVfaWRfZXggPSAkdGhpcy0+ZW5jcnlwdGlvbi0+ZGVjcnlwdCgkZW5jcnlwdGVkX2lkKTsgJHZhbHVlID0gZXhwbG9kZSgiXDQwIiwgJHNhbGVfaWRfZXgpOyAkZGF0YVsiXDE2M1x4NjFceDZjXHg2NVx4NWZcMTU1XDE3MVwxMzdceDY5XDE0NCJdID0gJHZhbHVlWzBdOyAkdGhpcy0+RW1wbG95ZWUtPnNldF9sb2NhdGlvbl9pZF9wcmludCgkdmFsdWVbMV0pOyAkZGF0YVsiXDE2NFx4NzlceDcwXDE0NSJdID0gJHZhbHVlWzJdOyAkc2FsZV9pZCA9ICRkYXRhWyJceDczXDE0MVwxNTRceDY1XDEzN1wxNTVcMTcxXDEzN1x4NjlcMTQ0Il07ICR0eXBlID0gJGRhdGFbIlx4NzRceDc5XHg3MFwxNDUiXTsgJHRoaXMtPnNhbGVfbGliLT5zYXZlX2N1cnJlbnRfc2FsZV9zdGF0ZSgpOyAkZGF0YVsiXDE1MVwxNjNceDVmXDE2M1wxNDFceDZjXDE0NSJdID0gRkFMU0U7ICRzYWxlX2luZm8gPSAkdGhpcy0+U2FsZS0+Z2V0X2luZm8oJHNhbGVfaWQpLT5yb3dfYXJyYXkoKTsgJHRoaXMtPnNhbGVfbGliLT5jbGVhcl9hbGwoKTsgJHRoaXMtPnNhbGVfbGliLT5zZXRfc2FsZV9kaXNjb3VudF90eXBlKCRzYWxlX2luZm9bIlx4NjRcMTUxXHg3M1x4NjNceDZmXDE2NVwxNTZceDc0XDEzN1x4NzRcMTcxXDE2MFx4NjUiXSk7ICRkYXRhWyJceDYzXHg3NVwxNjJcMTYyXHg2NVx4NmVcMTY0XDEzN1wxNDRcMTUxXHg3M1wxNDNceDZmXDE2NVx4NmVceDc0XDEzN1x4NzRcMTcxXHg3MFwxNDUiXSA9ICR0aGlzLT5zYWxlX2xpYi0+Z2V0X3NhbGVfZGlzY291bnRfdHlwZSgpOyBpZiAoJHNhbGVfaW5mb1siXDE1NVwxNDFcMTU2XDE2NVwxNDFcMTU0XHg1Zlx4NjJceDY5XHg2Y1x4NmNcMTM3XDE1NlwxNTciXSkgeyAkdGhpcy0+c2FsZV9saWItPnNldF9tYW51YWxfYmlsbF9ubygkc2FsZV9pbmZvWyJcMTU1XDE0MVx4NmVcMTY1XDE0MVx4NmNcMTM3XHg2MlwxNTFcMTU0XHg2Y1x4NWZceDZlXDE1NyJdKTsgJGRhdGFbIlx4NmRceDYxXDE1Nlx4NzVcMTQxXDE1NFwxMzdcMTQyXDE1MVwxNTRcMTU0XHg1ZlwxNTZcMTU3Il0gPSAkdGhpcy0+c2FsZV9saWItPmdldF9tYW51YWxfYmlsbF9ubygpOyB9IGlmICgkc2FsZV9pbmZvWyJceDZkXDE0MVx4NmVcMTY1XDE0MVwxNTRceDVmXDE2MlwxNTdceDc1XHg2ZVwxNDRcMTM3XDE1N1x4NjZcMTQ2Il0pIHsgJHRoaXMtPnNhbGVfbGliLT5zZXRfbWFudWFsX3JvdW5kX29mZigkc2FsZV9pbmZvWyJceDZkXHg2MVwxNTZceDc1XHg2MVx4NmNcMTM3XDE2MlwxNTdcMTY1XHg2ZVx4NjRceDVmXDE1N1wxNDZceDY2Il0pOyAkZGF0YVsiXDE1NVwxNDFcMTU2XDE2NVwxNDFceDZjXDEzN1x4NzJcMTU3XHg3NVx4NmVceDY0XHg1ZlwxNTdcMTQ2XHg2NiJdID0gJHRoaXMtPnNhbGVfbGliLT5nZXRfbWFudWFsX3JvdW5kX29mZigpOyB9IGlmICgkc2FsZV9pbmZvWyJcMTU2XHg2Zlx4NWZcMTY0XHg2MVwxNzBceDVmXHg3M1x4NjFcMTU0XDE0NSJdKSB7ICR0aGlzLT5zYWxlX2xpYi0+c2V0X25vX3RheF9zYWxlKCRzYWxlX2luZm9bIlwxNTZcMTU3XHg1Zlx4NzRceDYxXDE3MFwxMzdcMTYzXHg2MVx4NmNceDY1Il0pOyB9ICRkYXRhWyJcMTU2XDE1N1x4NWZceDc0XDE0MVx4NzhceDVmXDE2M1x4NjFceDZjXHg2NSJdID0gJHRoaXMtPnNhbGVfbGliLT5nZXRfbm9fdGF4X3NhbGUoKTsgJHRoaXMtPnNhbGVfbGliLT5jb3B5X2VudGlyZV9zYWxlKCRzYWxlX2lkLCB0cnVlKTsgJGRhdGFbIlwxNDNceDYxXDE2Mlx4NzQiXSA9ICR0aGlzLT5zYWxlX2xpYi0+Z2V0X2NhcnQoKTsgJGRhdGFbIlwxNjBcMTQxXDE3MVwxNTVcMTQ1XHg2ZVwxNjRcMTYzIl0gPSAkdGhpcy0+c2FsZV9saWItPmdldF9wYXltZW50cygpOyAkZGF0YVsiXHg2OVwxNjNceDVmXHg3M1wxNDFceDZjXHg2NVx4NWZcMTQzXDE0MVx4NzNcMTUwXHg1ZlwxNjBcMTQxXHg3OVwxNTVcMTQ1XHg2ZVx4NzQiXSA9ICR0aGlzLT5zYWxlX2xpYi0+aXNfc2FsZV9jYXNoX3BheW1lbnQoKTsgJGRhdGFbIlwxNjNceDY4XDE1N1x4NzdceDVmXDE2MFwxNDFceDc5XDE1NVx4NjVcMTU2XHg3NFwxMzdcMTY0XDE1MVx4NmRceDY1XHg3MyJdID0gVFJVRTsgJGRhdGFbIlwxNjNceDc1XHg2MlwxNjRceDZmXDE2NFx4NjFcMTU0Il0gPSAkdGhpcy0+c2FsZV9saWItPmdldF9zdWJ0b3RhbCgkc2FsZV9pZCk7IGlmICgkdGhpcy0+Y29uZmlnLT5pdGVtKCJcMTQ0XDE0NVwxNDZceDYxXHg3NVwxNTRceDc0XDEzN1wxNDJceDcyXDE0NVx4NjFceDZiXDEzN1x4NzVcMTYwIikgPT0gMikgeyAkZGF0YVsiXHg3NFwxNDFcMTcwXHg2NVx4NzNcNjEiXSA9ICR0aGlzLT5zYWxlX2xpYi0+Z2V0X3RheGVzKCk7ICRkYXRhWyJcMTY0XDE0MVwxNzBcMTQ1XHg3MyJdID0gJHRoaXMtPnNhbGVfbGliLT5nZXRfdGF4ZXNfZm9yX3NhbGUoKTsgJGRhdGFbIlwxNjRceDYxXDE0MlwxNTRcMTQ1Il0gPSBzYWxlX3RheF90YWJsZSgpOyB9IGVsc2UgeyAkZGF0YVsiXDE2NFwxNDFceDc4XHg2NVwxNjNceDMxIl0gPSAkdGhpcy0+c2FsZV9saWItPmdldF90YXhlcygpOyAkZGF0YVsiXHg3NFwxNDFceDc4XDE0NVx4NzMiXSA9ICR0aGlzLT5zYWxlX2xpYi0+Z2V0X3RheGVzX2Zvcl9zYWxlKCk7ICRkYXRhWyJceDc0XHg2MVx4NjJceDZjXHg2NSJdID0gc2FsZV90YXhfdGFibGUoKTsgfSAkZGF0YVsiXHg3NFx4NmZcMTY0XHg2MVx4NmMiXSA9ICR0aGlzLT5zYWxlX2xpYi0+Z2V0X3RvdGFsKCRzYWxlX2lkKTsgJGRhdGFbIlx4NzJceDY1XDE0M1x4NjVceDY5XDE2MFx4NzRcMTM3XHg3NFwxNTFceDc0XHg2Y1x4NjUiXSA9ICR0aGlzLT5zYWxlX2xpYi0+Z2V0X3NhbGVfYmlsbF90eXBlKCkgPT0gIlx4NzJcMTQ1XDE0M1x4NjVceDY5XDE2MFwxNjQiID8gbGFuZygiXHg3M1x4NjFcMTU0XHg2NVwxNjNcMTM3XHg3MlwxNDVceDYzXDE0NVwxNTFceDcwXHg3NCIpIDogbGFuZygiXHg3M1x4NjFcMTU0XHg2NVwxNjNcMTM3XHg2OVx4NmVceDc2XDE1N1wxNTFcMTQzXDE0NSIpOyAkZGF0YVsiXDE0M1x4NmZceDZkXHg2ZFx4NjVcMTU2XDE2NCJdID0gJHRoaXMtPlNhbGUtPmdldF9jb21tZW50KCRzYWxlX2lkKTsgJGRhdGFbIlwxNjNceDY4XDE1N1wxNjdcMTM3XDE0M1wxNTdceDZkXHg2ZFx4NjVcMTU2XDE2NFx4NWZcMTU3XHg2ZVx4NWZcMTYyXDE0NVx4NjNcMTQ1XDE1MVwxNjBceDc0Il0gPSAkdGhpcy0+U2FsZS0+Z2V0X2NvbW1lbnRfb25fcmVjZWlwdCgkc2FsZV9pZCk7ICRkYXRhWyJceDc0XDE2MlwxNDFcMTU2XDE2M1x4NjFceDYzXDE2NFx4NjlcMTU3XDE1Nlx4NWZceDc0XHg2OVwxNTVcMTQ1Il0gPSBkYXRlKGdldF9kYXRlX2Zvcm1hdCgpIC4gIlx4MjAiIC4gZ2V0X3RpbWVfZm9ybWF0KCksIHN0cnRvdGltZSgkc2FsZV9pbmZvWyJcMTYzXHg2MVx4NmNceDY1XHg1Zlx4NzRcMTUxXHg2ZFx4NjUiXSkpOyAkY3VzdG9tZXJfaWQgPSAkdGhpcy0+c2FsZV9saWItPmdldF9jdXN0b21lcigpOyAkZGVsaXZlcnlfZGV0ID0gJHRoaXMtPlNhbGUtPmdldF9kb29yX2RlbGl2ZXJ5X2RldGFpbHMoJHNhbGVfaWQpLT5yb3coKTsgJGRhdGFbIlx4NjRceDZlXDE0MVwxNTVcMTQ1Il0gPSAkZGVsaXZlcnlfZGV0LT5uYW1lOyAkZGF0YVsiXDE0NFwxNDFceDY0XDE0NFx4NzJcMTQ1XHg3M1wxNjMiXSA9ICRkZWxpdmVyeV9kZXQtPmFkZHJlc3M7ICRkYXRhWyJceDc0XDE2MlwxNDFcMTU2XDE2M1x4NWZcMTU1XHg2ZlwxNDRceDY1Il0gPSAkZGVsaXZlcnlfZGV0LT50cmFuc3BvcnRhdGlvbl9tb2RlOyAkZGF0YVsiXDE2NlwxNDVceDY4XHg2M1wxNTRceDY1XHg1Zlx4NmVceDZmIl0gPSAkZGVsaXZlcnlfZGV0LT52ZWhjbGVfbm87ICRkYXRhWyJceDczXDE2NVx4NzBcMTYwXDE1NFwxNzFcMTM3XHg2NFwxNDFceDc0XHg2NSJdID0gJGRlbGl2ZXJ5X2RldC0+c3VwcGx5X2RhdGU7ICRkYXRhWyJcMTYzXHg3NVx4NzBcMTYwXHg2Y1wxNzFcMTM3XHg3MFwxNTRcMTQxXDE0M1x4NjUiXSA9ICRkZWxpdmVyeV9kZXQtPnN1cHBseV9wbGFjZTsgJGVtcF9pbmZvID0gJHRoaXMtPkVtcGxveWVlLT5nZXRfaW5mbygkc2FsZV9pbmZvWyJceDY1XHg2ZFx4NzBceDZjXDE1N1x4NzlceDY1XDE0NVwxMzdceDY5XDE0NCJdKTsgJGRhdGFbIlwxNjBceDYxXHg3OVwxNTVceDY1XDE1Nlx4NzRceDVmXHg3NFwxNzFcMTYwXDE0NSJdID0gJHNhbGVfaW5mb1siXHg3MFwxNDFcMTcxXDE1NVx4NjVceDZlXHg3NFx4NWZcMTY0XDE3MVwxNjBceDY1Il07ICRkYXRhWyJcMTQxXDE1NVwxNTdcMTY1XHg2ZVx4NzRcMTM3XDE0M1wxNTBceDYxXHg2ZVx4NjdceDY1Il0gPSAkdGhpcy0+c2FsZV9saWItPmdldF9hbW91bnRfZHVlKCRzYWxlX2lkKSAqIC0xOyAkZGF0YVsiXHg2NVwxNTVceDcwXHg2Y1x4NmZcMTcxXHg2NVwxNDUiXSA9ICRlbXBfaW5mby0+Zmlyc3RfbmFtZSAuICJceDIwIiAuICRlbXBfaW5mby0+bGFzdF9uYW1lOyAkZGF0YVsiXHg3Mlx4NjVcMTQ2XHg1Zlx4NmVceDZmIl0gPSAkc2FsZV9pbmZvWyJceDYzXDE0M1x4NWZceDcyXDE0NVwxNDZcMTM3XDE1NlwxNTciXTsgJGRhdGFbIlx4NjFcMTY1XDE2NFx4NjhcMTM3XHg2M1wxNTdcMTQ0XDE0NSJdID0gJHNhbGVfaW5mb1siXDE0MVwxNjVceDc0XHg2OFx4NWZceDYzXHg2ZlwxNDRcMTQ1Il07ICRkYXRhWyJceDY0XDE1MVx4NzNceDYzXHg2ZlwxNjVcMTU2XHg3NFx4NWZcMTQ1XDE3MFwxNTFceDczXHg3NFwxNjMiXSA9ICR0aGlzLT5fZG9lc19kaXNjb3VudF9leGlzdHMoJGRhdGFbIlx4NjNceDYxXDE2MlwxNjQiXSk7IGlmICgkY3VzdG9tZXJfaWQgIT0gLTEpIHsgJGN1c3RfaW5mbyA9ICR0aGlzLT5DdXN0b21lci0+Z2V0X2luZm8oJGN1c3RvbWVyX2lkKTsgJGRhdGFbIlx4NjNcMTY1XDE2M1x4NzRcMTU3XDE1NVwxNDVceDcyIl0gPSAkY3VzdF9pbmZvLT5maXJzdF9uYW1lIC4gIlx4MjAiIC4gJGN1c3RfaW5mby0+bGFzdF9uYW1lOyAkZGF0YVsiXDE0M1wxNjVcMTYzXDE2NFx4NmZcMTU1XDE0NVwxNjJcMTM3XDE0MVx4NjRcMTQ0XDE2Mlx4NjVcMTYzXHg3MyJdID0gJGN1c3RfaW5mby0+YWRkcmVzczsgJGRhdGFbIlx4NjNcMTY1XDE2M1wxNjRceDZmXDE1NVx4NjVceDcyXDEzN1x4NzNceDc0XDE0MVx4NzRceDY1Il0gPSAkY3VzdF9pbmZvLT5zdGF0ZTsgJGRhdGFbIlx4NjNcMTY1XDE2M1wxNjRcMTU3XDE1NVx4NjVcMTYyXDEzN1x4NjNceDZmXDE2NVx4NmVceDc0XHg3MlwxNzEiXSA9ICRjdXN0X2luZm8tPmNvdW50cnk7ICRkYXRhWyJcMTQzXHg3NVwxNjNcMTY0XDE1N1wxNTVceDY1XHg3MlwxMzdcMTYwXHg2OFx4NmZceDZlXDE0NSJdID0gJGN1c3RfaW5mby0+cGhvbmVfbnVtYmVyOyAkZGF0YVsiXDE0M1x4NzVceDczXHg3NFx4NmZceDZkXHg2NVx4NzJceDVmXHg2NVwxNTVcMTQxXDE1MVwxNTQiXSA9ICRjdXN0X2luZm8tPmVtYWlsOyAkZGF0YVsiXDE0M1wxNjVceDczXHg3NFx4NmZcMTU1XHg2NVwxNjJceDVmXHg2N1x4NzNcMTY0XDE1NiJdID0gJGN1c3RfaW5mby0+Z3N0bjsgJGRhdGFbIlx4NjNcMTY1XHg3M1x4NzRcMTU3XDE1NVwxNDVceDcyXDEzN1wxNDNcMTU3XDE1NVx4NzBceDYxXDE1Nlx4NzlceDVmXDE1Nlx4NjFceDZkXHg2NSJdID0gJGN1c3RfaW5mby0+Y29tcGFueV9uYW1lOyAkZGF0YVsiXHg2M1x4NzVcMTYzXHg3NFx4NmZceDZkXDE0NVx4NzJcMTM3XDE2NFwxNDFcMTcwXHg2MVx4NjJcMTU0XDE0NSJdID0gJGN1c3RfaW5mby0+dGF4YWJsZTsgfSAkZGF0YVsiXHg3M1x4NjFceDZjXDE0NVwxMzdceDY5XHg2NCJdID0gJHRoaXMtPmNvbmZpZy0+aXRlbSgiXHg3M1wxNDFcMTU0XDE0NVwxMzdcMTYwXHg3MlwxNDVcMTQ2XHg2OVx4NzgiKSAuICJcNDAiIC4gJHNhbGVfaWQ7ICRkYXRhWyJcMTYzXHg3NFwxNTdcMTYyXHg2NVwxMzdcMTQxXHg2M1wxNDNceDZmXHg3NVx4NmVcMTY0XHg1Zlx4NzBceDYxXDE3MVx4NmRceDY1XDE1Nlx4NzQiXSA9IEZBTFNFOyBmb3JlYWNoICgkZGF0YVsiXHg2M1wxNDFcMTYyXDE2NCJdIGFzICRpdGVtKSB7IGlmICgkaXRlbVsiXDE1Nlx4NjFcMTU1XDE0NSJdID09IGxhbmcoIlx4NzNcMTQxXDE1NFx4NjVceDczXHg1ZlwxNjNcMTY0XHg2Zlx4NzJcMTQ1XDEzN1x4NjFceDYzXDE0M1wxNTdcMTY1XDE1Nlx4NzRceDVmXHg3MFwxNDFceDc5XHg2ZFwxNDVceDZlXHg3NCIpKSB7ICRkYXRhWyJcMTYzXHg3NFx4NmZcMTYyXDE0NVwxMzdcMTQxXHg2M1x4NjNcMTU3XDE2NVx4NmVcMTY0XHg1Zlx4NzBceDYxXHg3OVwxNTVceDY1XDE1Nlx4NzQiXSA9IFRSVUU7IGJyZWFrOyB9IH0gJHRvdGFsX21ycCA9IDA7IGZvcmVhY2ggKCRkYXRhWyJceDYzXDE0MVwxNjJceDc0Il0gYXMgJHJvd19jYXJ0KSB7ICR0b3RhbF9tcnAgPSAkdG90YWxfbXJwICsgJHJvd19jYXJ0WyJcMTU1XDE2Mlx4NzAiXSAqICRyb3dfY2FydFsiXHg3MVx4NzVceDYxXHg2ZVwxNjRcMTUxXHg3NFx4NzkiXTsgfSAkZGF0YVsiXHg3NFx4NmZcMTY0XHg2MVwxNTRceDVmXHg2ZFx4NzJcMTYwIl0gPSAkdG90YWxfbXJwOyAkZGF0YVsiXHg2MVx4NmRcMTU3XDE2NVx4NmVceDc0XDEzN1wxNjNceDYxXDE2NlwxNDVceDY0Il0gPSAkdG90YWxfbXJwIC0gJGRhdGFbIlx4NzRcMTU3XHg3NFwxNDFcMTU0Il07IGlmICgkdGhpcy0+Y29uZmlnLT5pdGVtKCJcMTYzXDE1MFwxNTdcMTY3XHg1ZlwxNDFceDZkXDE1N1x4NzVcMTU2XHg3NFx4NWZceDc0XHg2Zlx4NWZceDc3XDE1N1x4NzJcMTQ0XDE2M1wxMzdceDY5XHg2ZVx4NWZceDcyXDE0NVwxNDNcMTQ1XDE1MVwxNjBceDc0IikpIHsgJGRhdGFbIlx4NjFceDZkXHg2ZlwxNjVceDZlXDE2NFx4NWZcMTUxXHg2ZVwxMzdceDc3XHg2Zlx4NzJceDY0XDE2MyJdID0gJHRoaXMtPmFtb3VudF90b193b3JkcygkZGF0YVsiXDE2NFx4NmZceDc0XDE0MVx4NmMiXSk7IH0gaWYgKCgkY3VzdF9pbmZvLT50YXhhYmxlIG9yICRjdXN0b21lcl9pZCA9PSAtMSkgJiYgISR0aGlzLT5zYWxlX2xpYi0+Z2V0X25vX3RheF9zYWxlKCkpIHsgZm9yZWFjaCAoJGRhdGFbIlx4NjNceDYxXDE2MlwxNjQiXSBhcyAka2V5ID0+ICRpdGVtKSB7ICRwcmljZV90b191c2UgPSAkdGhpcy0+c2FsZV9saWItPl9nZXRfcHJpY2VfZm9yX2l0ZW1faW5fY2FydCgkaXRlbSk7IGlmICgkdGhpcy0+c2FsZV9saWItPmdldF9zYWxlX2lnc3RfZW5hYmxlZCgpKSB7ICR0YXhfaW5mbyA9IGlzc2V0KCRpdGVtWyJceDY5XDE2NFwxNDVceDZkXDEzN1wxNTFcMTQ0Il0pID8gJHRoaXMtPkl0ZW1fdGF4ZXNfZmluZGVyLT5nZXRfaWdzdF9pbmZvKCRpdGVtWyJcMTUxXHg3NFwxNDVceDZkXHg1Zlx4NjlceDY0Il0pIDogJHRoaXMtPkl0ZW1fa2l0X3RheGVzX2ZpbmRlci0+Z2V0X2lnc3RfaW5mbygkaXRlbVsiXDE1MVwxNjRceDY1XHg2ZFwxMzdcMTUzXHg2OVwxNjRceDVmXDE1MVwxNDQiXSk7ICR0YXhfYW1vdW50ID0gKCRwcmljZV90b191c2UgKiAkaXRlbVsiXDE2MVx4NzVcMTQxXHg2ZVwxNjRcMTUxXHg3NFwxNzEiXSAtICRwcmljZV90b191c2UgKiAkaXRlbVsiXHg3MVx4NzVceDYxXDE1NlwxNjRceDY5XHg3NFwxNzEiXSAqICRpdGVtWyJceDY0XDE1MVwxNjNceDYzXHg2ZlwxNjVceDZlXDE2NCJdIC8gMTAwKSAqICgkdGF4X2luZm9bMF1bIlx4NzBceDY1XHg3Mlx4NjNceDY1XDE1NlwxNjQiXSAvIDEwMCk7ICRkYXRhWyJcMTQzXDE0MVx4NzJcMTY0Il1bJGtleV1bJHRheF9pbmZvWzBdWyJcMTU2XDE0MVwxNTVcMTQ1Il1dID0gYXJyYXkoIlx4NzBceDY1XDE2Mlx4NjNceDY1XDE1Nlx4NzQiID0+ICR0YXhfaW5mb1swXVsiXDE2MFx4NjVceDcyXDE0M1wxNDVceDZlXHg3NCJdLCAiXDE0MVwxNTVcMTU3XHg3NVwxNTZcMTY0IiA9PiAkdGF4X2Ftb3VudCk7IH0gZWxzZSB7ICR0YXhfaW5mbyA9IGlzc2V0KCRpdGVtWyJceDY5XDE2NFwxNDVceDZkXHg1ZlwxNTFcMTQ0Il0pID8gJHRoaXMtPkl0ZW1fdGF4ZXNfZmluZGVyLT5nZXRfaW5mbygkaXRlbVsiXDE1MVwxNjRcMTQ1XHg2ZFwxMzdcMTUxXHg2NCJdKSA6ICR0aGlzLT5JdGVtX2tpdF90YXhlc19maW5kZXItPmdldF9pbmZvKCRpdGVtWyJcMTUxXHg3NFx4NjVcMTU1XDEzN1wxNTNceDY5XDE2NFx4NWZceDY5XDE0NCJdKTsgJHRheF9uYW1lcyA9IGFycmF5KCk7IGZvcmVhY2ggKCR0YXhfaW5mbyBhcyAkdGF4KSB7ICR0YXhfYW1vdW50ID0gKCRwcmljZV90b191c2UgKiAkaXRlbVsiXDE2MVx4NzVcMTQxXHg2ZVx4NzRceDY5XDE2NFx4NzkiXSAtICRwcmljZV90b191c2UgKiAkaXRlbVsiXHg3MVwxNjVceDYxXHg2ZVwxNjRceDY5XHg3NFwxNzEiXSAqICRpdGVtWyJcMTQ0XHg2OVwxNjNcMTQzXHg2Zlx4NzVcMTU2XDE2NCJdIC8gMTAwKSAqICgkdGF4WyJcMTYwXHg2NVx4NzJcMTQzXHg2NVx4NmVcMTY0Il0gLyAxMDApOyAkZGF0YVsiXHg2M1x4NjFcMTYyXDE2NCJdWyRrZXldWyR0YXhbIlwxNTZcMTQxXHg2ZFwxNDUiXV0gPSBhcnJheSgiXDE2MFwxNDVcMTYyXHg2M1x4NjVcMTU2XDE2NCIgPT4gJHRheFsiXHg3MFx4NjVcMTYyXDE0M1wxNDVcMTU2XDE2NCJdLCAiXDE0MVwxNTVcMTU3XHg3NVwxNTZceDc0IiA9PiAkdGF4X2Ftb3VudCk7ICR0YXhfbmFtZXNbXSA9ICR0YXhbIlx4NmVcMTQxXHg2ZFwxNDUiXTsgfSAkZGF0YVsiXHg2M1wxNDFceDcyXDE2NCJdWyRrZXldWyJceDc0XHg2MVwxNzBcMTM3XHg2ZVx4NjFcMTU1XHg2NVwxNjMiXSA9ICR0YXhfbmFtZXM7IH0gaWYgKCR0aGlzLT5jb25maWctPml0ZW0oIlwxMDdceDUzXHg1NCIpID09IDEpIHsgJGNlc3NfdGF4X2luZm8gPSBpc3NldCgkaXRlbVsiXDE1MVx4NzRcMTQ1XHg2ZFx4NWZceDY5XHg2NCJdKSA/ICR0aGlzLT5JdGVtX3RheGVzX2ZpbmRlci0+Z2V0X2Nlc3NfaW5mbygkaXRlbVsiXHg2OVwxNjRcMTQ1XDE1NVwxMzdcMTUxXDE0NCJdKSA6ICR0aGlzLT5JdGVtX2tpdF90YXhlc19maW5kZXItPmdldF9jZXNzX2luZm8oJGl0ZW1bIlx4NjlcMTY0XHg2NVwxNTVceDVmXDE1M1wxNTFcMTY0XHg1Zlx4NjlcMTQ0Il0pOyBpZiAoJGNlc3NfdGF4X2luZm8pIHsgJGNlc3NfdGF4X2Ftb3VudCA9ICgkcHJpY2VfdG9fdXNlICogJGl0ZW1bIlwxNjFcMTY1XDE0MVx4NmVceDc0XDE1MVx4NzRcMTcxIl0gLSAkcHJpY2VfdG9fdXNlICogJGl0ZW1bIlwxNjFceDc1XHg2MVwxNTZceDc0XHg2OVwxNjRcMTcxIl0gKiAkaXRlbVsiXHg2NFwxNTFcMTYzXDE0M1wxNTdceDc1XDE1NlwxNjQiXSAvIDEwMCkgKiAoJGNlc3NfdGF4X2luZm9bMF1bIlx4NzBceDY1XHg3MlwxNDNceDY1XDE1Nlx4NzQiXSAvIDEwMCk7ICRkYXRhWyJceDYzXDE0MVx4NzJcMTY0Il1bJGtleV1bIlwxMDNcMTA1XHg1M1wxMjMiXSA9IGFycmF5KCJcMTYwXHg2NVwxNjJceDYzXDE0NVwxNTZcMTY0IiA9PiAkY2Vzc190YXhfaW5mb1swXVsiXHg3MFwxNDVcMTYyXDE0M1x4NjVceDZlXHg3NCJdLCAiXDE0MVx4NmRceDZmXHg3NVx4NmVcMTY0IiA9PiAkY2Vzc190YXhfYW1vdW50KTsgJGRhdGFbIlwxNDNcMTQ1XHg3M1x4NzNceDVmXHg2MVx4NjRcMTQ0XHg2NVx4NjQiXSA9IDE7IH0gfSB9IH0gaWYgKCR0aGlzLT5zYWxlX2xpYi0+Z2V0X3NhbGVfaWdzdF9lbmFibGVkKCkpIHsgJGRhdGFbIlwxNjNcMTQxXDE1NFwxNDVcMTM3XHg3NFx4NjFceDc4XDEzN1wxNjRceDc5XHg3MFx4NjUiXSA9ICJcMTExXDEwN1wxMjNceDU0IjsgfSBlbHNlIHsgJGRhdGFbIlx4NzNcMTQxXDE1NFwxNDVceDVmXDE2NFx4NjFceDc4XDEzN1x4NzRcMTcxXHg3MFx4NjUiXSA9ICJceDRmXHg3NFwxNTBceDY1XDE2MiI7IH0gZm9yZWFjaCAoJGRhdGFbIlwxNDNcMTQxXDE2Mlx4NzQiXSBhcyAka2V5ID0+ICRpdGVtKSB7ICR0YXhhYmxlX3ZhbHVlID0gJHRoaXMtPnNhbGVfbGliLT5nZXRfdGF4YWJsZV92YWx1ZSgkaXRlbSwgJHNhbGVfaWQsICRrZXkpOyAkZGF0YVsiXDE0M1x4NjFcMTYyXHg3NCJdWyRrZXldWyJcMTY0XDE0MVwxNzBcMTQxXHg2MlwxNTRceDY1XHg1ZlwxNjZcMTQxXHg2Y1x4NzVcMTQ1Il0gPSAkdGF4YWJsZV92YWx1ZTsgfSBpZiAoJHR5cGUgPT0gMCkgeyAkdGhpcy0+bG9hZC0+dmlldygiXDE2M1wxNDFcMTU0XHg2NVx4NzNcNTdceDcyXHg2NVwxNDNcMTQ1XDE1MVwxNjBcMTY0XHg1ZlwxNDVceDZkXHg2MVx4NjlcMTU0XHg1ZlwxNjBcMTYyXDE0NVwxNjZcMTUxXDE0NVwxNjciLCAkZGF0YSk7IH0gZWxzZSB7ICR0aGlzLT5sb2FkLT52aWV3KCJcMTYzXDE0MVx4NmNceDY1XDE2M1w1N1wxNTFcMTU2XHg3NlwxNTdceDY5XDE0M1wxNDVceDVmXHg2NVx4NmRceDYxXHg2OVwxNTRceDVmXDE2MFx4NzJcMTQ1XHg3Nlx4NjlcMTQ1XDE2NyIsICRkYXRhKTsgfSAkdGhpcy0+c2FsZV9saWItPmNsZWFyX2FsbCgpOyAkdGhpcy0+c2FsZV9saWItPnJlc3RvcmVfY3VycmVudF9zYWxlX3N0YXRlKCk7ICR0aGlzLT5yZW1vdmVEdXBsaWNhdGVTZXNzaW9uQ29va2llSGVhZGVycygpOyB9IGZ1bmN0aW9uIHJlbW92ZUR1cGxpY2F0ZVNlc3Npb25Db29raWVIZWFkZXJzKCkgeyBpZiAoZnVuY3Rpb25fZXhpc3RzKCJcMTUwXDE0NVwxNDFceDY0XHg2NVwxNjJceDVmXDE2Mlx4NjVcMTU1XDE1N1wxNjZceDY1IikpIHsgJENJID0mIGdldF9pbnN0YW5jZSgpOyAkaGVhZGVycyA9IGhlYWRlcnNfbGlzdCgpOyAkY29va2llc190b19vdXRwdXQgPSBhcnJheSgpOyAkaGVhZGVyX3Nlc3Npb25fY29va2llID0gJyc7ICRzZXNzaW9uX2Nvb2tpZV9uYW1lID0gJENJLT5jb25maWctPml0ZW0oIlx4NzNceDY1XDE2M1x4NzNcMTM3XHg2M1x4NmZceDZmXHg2Ylx4NjlcMTQ1XHg1Zlx4NmVceDYxXDE1NVwxNDUiKTsgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlcikgeyBsaXN0KCRoZWFkZXJfdHlwZSwgJGRhdGEpID0gZXhwbG9kZSgiXDcyIiwgJGhlYWRlciwgMik7ICRoZWFkZXJfdHlwZSA9IHRyaW0oJGhlYWRlcl90eXBlKTsgJGRhdGEgPSB0cmltKCRkYXRhKTsgaWYgKHN0cnRvbG93ZXIoJGhlYWRlcl90eXBlKSA9PSAiXHg3M1x4NjVceDc0XHgyZFwxNDNcMTU3XDE1N1x4NmJcMTUxXDE0NSIpIHsgaGVhZGVyX3JlbW92ZSgiXHg1M1x4NjVcMTY0XHgyZFwxMDNcMTU3XDE1N1wxNTNceDY5XHg2NSIpOyAkY29va2llX3ZhbHVlID0gY3VycmVudChleHBsb2RlKCJcNzMiLCAkZGF0YSkpOyBsaXN0KCRrZXksICR2YWwpID0gZXhwbG9kZSgiXHgzZCIsICRjb29raWVfdmFsdWUpOyAka2V5ID0gdHJpbSgka2V5KTsgaWYgKCRrZXkgPT0gJHNlc3Npb25fY29va2llX25hbWUpIHsgJGhlYWRlcl9zZXNzaW9uX2Nvb2tpZSA9ICRkYXRhOyBjb250aW51ZTsgfSBlbHNlIHsgJGNvb2tpZXNfdG9fb3V0cHV0W10gPSBhcnJheSgiXDE1MFx4NjVceDYxXHg2NFx4NjVceDcyXDEzN1x4NzRcMTcxXDE2MFx4NjUiID0+ICRoZWFkZXJfdHlwZSwgIlx4NjRceDYxXDE2NFx4NjEiID0+ICRkYXRhKTsgfSB9IH0gaWYgKCFlbXB0eSgkaGVhZGVyX3Nlc3Npb25fY29va2llKSkgeyAkY29va2llc190b19vdXRwdXRbXSA9IGFycmF5KCJcMTUwXDE0NVx4NjFcMTQ0XHg2NVx4NzJceDVmXDE2NFwxNzFcMTYwXDE0NSIgPT4gIlx4NTNceDY1XDE2NFx4MmRcMTAzXHg2ZlwxNTdceDZiXDE1MVx4NjUiLCAiXDE0NFx4NjFcMTY0XDE0MSIgPT4gJGhlYWRlcl9zZXNzaW9uX2Nvb2tpZSk7IH0gZm9yZWFjaCAoJGNvb2tpZXNfdG9fb3V0cHV0IGFzICRjb29raWUpIHsgaGVhZGVyKCJ7JGNvb2tpZVsiXDE1MFx4NjVceDYxXDE0NFwxNDVceDcyXDEzN1x4NzRceDc5XHg3MFwxNDUiXX1cNzJceDIweyRjb29raWVbIlwxNDRceDYxXHg3NFwxNDEiXX0iLCBmYWxzZSk7IH0gfSB9IGZ1bmN0aW9uIF9kb2VzX2Rpc2NvdW50X2V4aXN0cygkY2FydCkgeyBmb3JlYWNoICgkY2FydCBhcyAkbGluZSA9PiAkaXRlbSkgeyBpZiAoJGl0ZW1bIlx4NjRcMTUxXDE2M1x4NjNceDZmXHg3NVx4NmVcMTY0Il0gPiAwKSB7IHJldHVybiBUUlVFOyB9IH0gcmV0dXJuIEZBTFNFOyB9IGZ1bmN0aW9uIGFtb3VudF90b193b3JkcygkbnVtYmVyKSB7ICRuZWdhdGl2ZSA9IGZhbHNlOyAkbnVtYmVyX25lZ2F0aXZlX3NwID0gZXhwbG9kZSgiXDU1IiwgJG51bWJlcik7IGlmIChjb3VudCgkbnVtYmVyX25lZ2F0aXZlX3NwKSA+IDEpIHsgJG51bWJlciA9ICRudW1iZXJfbmVnYXRpdmVfc3BbMV07ICRuZWdhdGl2ZSA9IHRydWU7IH0gJHNwbGl0X2Ftb3VudCA9IGV4cGxvZGUoIlw1NiIsIHRvX2N1cnJlbmN5X25vX21vbmV5KCRudW1iZXIpKTsgJG5vID0gJHNwbGl0X2Ftb3VudFswXTsgJHBvaW50ID0gJHNwbGl0X2Ftb3VudFsxXTsgJGh1bmRyZWQgPSBudWxsOyAkZGlnaXRzXzEgPSBzdHJsZW4oJG5vKTsgJGkgPSAwOyAkc3RyID0gYXJyYXkoKTsgJHdvcmRzID0gYXJyYXkoIlw2MSIgPT4gIlx4NGZceDZlXHg2NSIsICJceDMyIiA9PiAiXDEyNFwxNjdcMTU3IiwgIlw2MyIgPT4gIlwxMjRcMTUwXHg3MlwxNDVcMTQ1IiwgIlw2NCIgPT4gIlx4NDZcMTU3XDE2NVx4NzIiLCAiXDY1IiA9PiAiXDEwNlx4NjlcMTY2XHg2NSIsICJceDM2IiA9PiAiXHg1M1wxNTFcMTcwIiwgIlw2NyIgPT4gIlwxMjNceDY1XDE2Nlx4NjVcMTU2IiwgIlw3MCIgPT4gIlx4NDVcMTUxXHg2N1wxNTBceDc0IiwgIlx4MzkiID0+ICJcMTE2XHg2OVx4NmVcMTQ1IiwgIlx4MzFceDMwIiA9PiAiXDEyNFx4NjVcMTU2IiwgIlw2MVw2MSIgPT4gIlx4NDVceDZjXDE0NVwxNjZcMTQ1XHg2ZSIsICJcNjFcNjIiID0+ICJceDU0XHg3N1wxNDVceDZjXDE2NlwxNDUiLCAiXDYxXHgzMyIgPT4gIlwxMjRceDY4XDE1MVx4NzJceDc0XDE0NVx4NjVcMTU2IiwgIlw2MVw2NCIgPT4gIlwxMDZceDZmXDE2NVwxNjJceDc0XDE0NVwxNDVceDZlIiwgIlw2MVx4MzUiID0+ICJcMTA2XHg2OVx4NjZceDc0XHg2NVx4NjVcMTU2IiwgIlx4MzFcNjYiID0+ICJceDUzXHg2OVwxNzBcMTY0XDE0NVx4NjVcMTU2IiwgIlx4MzFcNjciID0+ICJcMTIzXDE0NVx4NzZceDY1XDE1NlwxNjRcMTQ1XDE0NVwxNTYiLCAiXDYxXDcwIiA9PiAiXDEwNVwxNTFcMTQ3XDE1MFwxNjRcMTQ1XDE0NVx4NmUiLCAiXDYxXDcxIiA9PiAiXDExNlx4NjlceDZlXHg2NVwxNjRcMTQ1XDE0NVx4NmUiLCAiXHgzMlw2MCIgPT4gIlx4NTRceDc3XHg2NVwxNTZceDc0XHg3OSIsICJceDMzXDYwIiA9PiAiXHg1NFwxNTBcMTUxXDE2Mlx4NzRcMTcxIiwgIlw2NFx4MzAiID0+ICJcMTA2XHg2ZlwxNjJcMTY0XHg3OSIsICJceDM1XDYwIiA9PiAiXHg0NlwxNTFceDY2XHg3NFx4NzkiLCAiXDY2XDYwIiA9PiAiXDEyM1x4NjlcMTcwXDE2NFx4NzkiLCAiXHgzN1w2MCIgPT4gIlx4NTNcMTQ1XHg3NlwxNDVceDZlXDE2NFx4NzkiLCAiXDcwXDYwIiA9PiAiXDEwNVwxNTFceDY3XHg2OFx4NzRcMTcxIiwgIlw3MVw2MCIgPT4gIlwxMTZceDY5XDE1NlwxNDVcMTY0XDE3MSIpOyAkcG9pbnRfd29yZHMgPSBhcnJheSgiXHgzMCIgPT4gIlx4NWFceDY1XDE2Mlx4NmYiLCAiXHgzMSIgPT4gIlx4NGZceDZlXDE0NSIsICJcNjIiID0+ICJceDU0XHg3N1wxNTciLCAiXHgzMyIgPT4gIlwxMjRcMTUwXDE2Mlx4NjVceDY1IiwgIlw2NCIgPT4gIlx4NDZceDZmXDE2NVwxNjIiLCAiXHgzNSIgPT4gIlx4NDZceDY5XHg3Nlx4NjUiLCAiXDY2IiA9PiAiXDEyM1x4NjlceDc4IiwgIlw2NyIgPT4gIlx4NTNceDY1XHg3NlwxNDVceDZlIiwgIlx4MzgiID0+ICJceDQ1XHg2OVx4NjdcMTUwXHg3NCIsICJceDM5IiA9PiAiXDExNlx4NjlceDZlXHg2NSIpOyAkZGlnaXRzID0gYXJyYXkoJycsICJceDQ4XDE2NVx4NmVceDY0XHg3MlwxNDVceDY0IiwgIlx4NTRcMTUwXDE1N1x4NzVceDczXHg2MVx4NmVcMTQ0IiwgIlwxMTRceDYxXDE1M1x4NjgiLCAiXDEwM1wxNjJcMTU3XDE2Mlx4NjUiKTsgd2hpbGUgKCRpIDwgJGRpZ2l0c18xKSB7ICRkaXZpZGVyID0gJGkgPT0gMiA/IDEwIDogMTAwOyAkbnVtYmVyID0gZmxvb3IoJG5vICUgJGRpdmlkZXIpOyAkbm8gPSBmbG9vcigkbm8gLyAkZGl2aWRlcik7ICRpICs9ICRkaXZpZGVyID09IDEwID8gMSA6IDI7IGlmICgkbnVtYmVyKSB7ICRwbHVyYWwgPSAoJGNvdW50ZXIgPSBjb3VudCgkc3RyKSkgJiYgJG51bWJlciA+IDkgPyAiXHg3MyIgOiBudWxsOyAkaHVuZHJlZCA9ICRjb3VudGVyID09IDEgJiYgJHN0clswXSA/ICJcNDBceDYxXDE1Nlx4NjRcNDAiIDogbnVsbDsgJHN0cltdID0gJG51bWJlciA8IDIxID8gJHdvcmRzWyRudW1iZXJdIC4gIlx4MjAiIC4gJGRpZ2l0c1skY291bnRlcl0gLiAkcGx1cmFsIC4gIlx4MjAiIC4gJGh1bmRyZWQgOiAkd29yZHNbZmxvb3IoJG51bWJlciAvIDEwKSAqIDEwXSAuICJceDIwIiAuICR3b3Jkc1skbnVtYmVyICUgMTBdIC4gIlx4MjAiIC4gJGRpZ2l0c1skY291bnRlcl0gLiAkcGx1cmFsIC4gIlw0MCIgLiAkaHVuZHJlZDsgfSBlbHNlIHsgJHN0cltdID0gbnVsbDsgfSB9ICRzdHIgPSBhcnJheV9yZXZlcnNlKCRzdHIpOyAkcmVzdWx0ID0gaW1wbG9kZSgnJywgJHN0cik7IGlmICgkbmVnYXRpdmUpIHsgJHJlc3VsdCA9ICJceDRkXDE1MVx4NmVceDc1XHg3M1w0MCIgLiAkcmVzdWx0OyB9ICRwb2ludF9kaWdpdHMgPSBzdHJsZW4oJHBvaW50KTsgJGkgPSAwOyB3aGlsZSAoJGkgPCAkcG9pbnRfZGlnaXRzKSB7ICRkaXZpZGVyID0gJGkgPT0gMiA/IDEwIDogMTAwOyAkbnVtYmVyID0gZmxvb3IoJHBvaW50ICUgJGRpdmlkZXIpOyAkcG9pbnQgPSBmbG9vcigkcG9pbnQgLyAkZGl2aWRlcik7ICRpICs9ICRkaXZpZGVyID09IDEwID8gMSA6IDI7IGlmICgkbnVtYmVyKSB7ICRwbHVyYWwgPSAoJGNvdW50ZXIgPSBjb3VudCgkc3RyMSkpICYmICRudW1iZXIgPiA5ID8gIlx4NzMiIDogbnVsbDsgJGh1bmRyZWQgPSAkY291bnRlciA9PSAxICYmICRzdHIxWzBdID8gIlw0MFwxNDFceDZlXDE0NFx4MjAiIDogbnVsbDsgJHN0cjFbXSA9ICRudW1iZXIgPCAyMSA/ICR3b3Jkc1skbnVtYmVyXSAuICJceDIwIiAuICRkaWdpdHNbJGNvdW50ZXJdIC4gJHBsdXJhbCAuICJcNDAiIC4gJGh1bmRyZWQgOiAkd29yZHNbZmxvb3IoJG51bWJlciAvIDEwKSAqIDEwXSAuICJceDIwIiAuICR3b3Jkc1skbnVtYmVyICUgMTBdIC4gIlw0MCIgLiAkZGlnaXRzWyRjb3VudGVyXSAuICRwbHVyYWwgLiAiXHgyMCIgLiAkaHVuZHJlZDsgfSBlbHNlIHsgJHN0cjFbXSA9IG51bGw7IH0gfSAkc3RyMSA9IGFycmF5X3JldmVyc2UoJHN0cjEpOyAkcG9pbnRfcmVzdWx0ID0gaW1wbG9kZSgnJywgJHN0cjEpOyBpZiAoJHRoaXMtPmNvbmZpZy0+aXRlbSgiXHg2M1x4NzVceDcyXDE2MlwxNDVcMTU2XDE0M1x4NzlcMTM3XHg3NFx4NzlcMTYwXDE0NSIpID09ICJceDZlXDE1N1wxNTZcMTQ1IikgeyAkcG9pbnRzID0gJHBvaW50X3Jlc3VsdCA/ICRwb2ludF9yZXN1bHQgLiAiXDQwIiA6ICcnOyB9IGVsc2UgeyBpZiAoJHRoaXMtPmNvbmZpZy0+aXRlbSgiXDE0M1x4NzVceDcyXDE2MlwxNDVceDZlXHg2M1wxNzFcMTM3XHg3NFwxNzFceDcwXHg2NSIpID09ICJceDcyXDE2NVx4NzBceDY1XDE0NVx4NzMiKSB7ICRwb2ludHMgPSAkcG9pbnRfcmVzdWx0ID8gIlw0MFwxNDFceDZlXHg2NFw0MCIgLiAkcG9pbnRfcmVzdWx0IC4gIlx4MjAiIDogJyc7IH0gZWxzZSB7ICRwb2ludHMgPSAkcG9pbnRfcmVzdWx0ID8gJHBvaW50X3Jlc3VsdCAuICJceDIwIiA6ICcnOyB9IH0gaWYgKCR0aGlzLT5jb25maWctPml0ZW0oIlwxNDNcMTY1XHg3MlwxNjJceDY1XHg2ZVx4NjNcMTcxXDEzN1wxNjRceDc5XDE2MFx4NjUiKSA9PSAiXDE2MlwxNjVceDcwXHg2NVx4NjVcMTYzIikgeyAkY3VycmVuY3kgPSAiXHgyMFx4NTJceDc1XHg3MFwxNDVcMTQ1XHg3M1w0MCI7ICRjdXJyZW5jeV9kZWNpbWFsID0gIlx4MjBcMTIwXDE0MVx4NjlceDczXDE0NVx4MjAiOyB9IGlmICgkcG9pbnRfcmVzdWx0KSB7IGlmICgkdGhpcy0+Y29uZmlnLT5pdGVtKCJcMTQzXHg3NVx4NzJceDcyXDE0NVwxNTZcMTQzXHg3OVwxMzdcMTY0XHg3OVx4NzBceDY1IikgPT0gIlwxNjJceDc1XHg3MFwxNDVcMTQ1XHg3MyIpIHsgcmV0dXJuICRyZXN1bHQgLiAkY3VycmVuY3kgLiAkcG9pbnRzIC4gJGN1cnJlbmN5X2RlY2ltYWwgLiAiXHg2ZlwxNTZceDZjXHg3OSI7IH0gZWxzZSB7IGlmICgkdGhpcy0+Y29uZmlnLT5pdGVtKCJceDYzXHg3NVx4NzJceDcyXHg2NVwxNTZcMTQzXHg3OVwxMzdceDc0XHg3OVx4NzBcMTQ1IikgPT0gIlwxNTZceDZmXHg2ZVx4NjUiKSB7IHJldHVybiAkcmVzdWx0IC4gIlw0MFwxNjBceDZmXDE1MVx4NmVceDc0XDQwIiAuICRwb2ludHMgLiAkdGhpcy0+Y29uZmlnLT5pdGVtKCJcMTQzXDE2NVwxNjJceDcyXDE0NVwxNTZcMTQzXHg3OVwxMzdceDczXDE3MVx4NmRcMTQyXDE1N1x4NmMiKSAuICJceDIwXHg2Zlx4NmVcMTU0XHg3OSI7IH0gZWxzZSB7IHJldHVybiAkcmVzdWx0IC4gIlx4MjBcMTYwXHg2Zlx4NjlceDZlXDE2NFx4MjAiIC4gJHBvaW50cyAuICR0aGlzLT5jb25maWctPml0ZW0oIlwxNDNcMTY1XHg3MlwxNjJcMTQ1XDE1Nlx4NjNcMTcxXHg1Zlx4NzRceDc5XHg3MFx4NjUiKSAuICJceDIwXDE1N1x4NmVceDZjXHg3OSI7IH0gfSB9IGVsc2UgeyBpZiAoJHRoaXMtPmNvbmZpZy0+aXRlbSgiXDE0M1x4NzVcMTYyXHg3Mlx4NjVceDZlXDE0M1x4NzlcMTM3XDE2NFwxNzFcMTYwXDE0NSIpID09ICJcMTYyXDE2NVx4NzBcMTQ1XHg2NVx4NzMiKSB7IHJldHVybiAkcmVzdWx0IC4gJGN1cnJlbmN5IC4gIlwxNTdcMTU2XDE1NFwxNzEiOyB9IGVsc2UgeyBpZiAoJHRoaXMtPmNvbmZpZy0+aXRlbSgiXDE0M1x4NzVceDcyXHg3MlwxNDVceDZlXHg2M1wxNzFceDVmXDE2NFx4NzlcMTYwXDE0NSIpID09ICJcMTU2XHg2ZlwxNTZceDY1IikgeyByZXR1cm4gJHJlc3VsdCAuICR0aGlzLT5jb25maWctPml0ZW0oIlx4NjNceDc1XHg3MlwxNjJcMTQ1XDE1NlwxNDNcMTcxXDEzN1x4NzNcMTcxXDE1NVx4NjJceDZmXDE1NCIpIC4gIlx4MjBcMTU3XHg2ZVx4NmNceDc5IjsgfSBlbHNlIHsgcmV0dXJuICRyZXN1bHQgLiAkdGhpcy0+Y29uZmlnLT5pdGVtKCJceDYzXHg3NVwxNjJceDcyXDE0NVwxNTZcMTQzXDE3MVx4NWZcMTY0XHg3OVwxNjBcMTQ1IikgLiAiXDQwXDE1N1x4NmVceDZjXHg3OSI7IH0gfSB9IH0gZnVuY3Rpb24gcGFnZV9wdXJjaGFzZSgkc2FsZV9pZCkgeyAkdGhpcy0+RW1wbG95ZWUtPmNsZWFyX2xvY2F0aW9uX2lkX3ByaW50KCk7ICR0aGlzLT5sb2FkLT5saWJyYXJ5KCJceDY1XDE1NlwxNDNceDcyXDE3MVx4NzBceDc0XDE1MVx4NmZcMTU2Iik7ICRlbmNyeXB0ZWRfaWQgPSBiYXNlNjRfZGVjb2RlKCRzYWxlX2lkKTsgJHNhbGVfaWRfZXggPSAkdGhpcy0+ZW5jcnlwdGlvbi0+ZGVjcnlwdCgkZW5jcnlwdGVkX2lkKTsgJHZhbHVlID0gZXhwbG9kZSgiXHgyMCIsICRzYWxlX2lkX2V4KTsgJGRhdGFbIlwxNjNceDYxXHg2Y1x4NjVcMTM3XDE1MVwxNDQiXSA9ICR2YWx1ZVswXTsgJHRoaXMtPkVtcGxveWVlLT5zZXRfbG9jYXRpb25faWRfcHJpbnQoJHZhbHVlWzFdKTsgJHBvX2lkID0gJGRhdGFbIlwxNjNcMTQxXHg2Y1wxNDVceDVmXDE1MVwxNDQiXTsgJHBvX2luZm8gPSAkdGhpcy0+cHVyY2hhc2Vfb3JkZXJzLT5nZXRfaW5mbygkcG9faWQpLT5yb3dfYXJyYXkoKTsgJHRoaXMtPnB1cmNoYXNlX29yZGVyX2xpYi0+Y2xlYXJfYWxsKCk7ICRkYXRhWyJceDZlXHg2Zlx4NWZcMTY0XDE0MVwxNzBceDVmXHg3MFwxNTciXSA9ICRwb19pbmZvWyJceDZlXHg2Zlx4NWZcMTY0XDE0MVwxNzBcMTM3XDE2MFwxNTciXTsgaWYgKCRwb19pbmZvWyJceDZlXHg2ZlwxMzdcMTY0XDE0MVx4NzhceDVmXDE2MFx4NmYiXSkgeyAkdGhpcy0+cHVyY2hhc2Vfb3JkZXJfbGliLT5zZXRfbm9fdGF4X3BvKCk7IH0gJHRoaXMtPnB1cmNoYXNlX29yZGVyX2xpYi0+Y29weV9lbnRpcmVfcG8oJHBvX2lkKTsgJGRhdGFbIlwxNDNcMTQxXHg3MlwxNjQiXSA9ICR0aGlzLT5wdXJjaGFzZV9vcmRlcl9saWItPmdldF9jYXJ0KCk7ICRkYXRhWyJcMTYzXHg3NVx4NjJceDc0XDE1N1wxNjRceDYxXHg2YyJdID0gJHRoaXMtPnB1cmNoYXNlX29yZGVyX2xpYi0+Z2V0X3N1YnRvdGFsKCRwb19pZCk7ICRkYXRhWyJcMTY0XHg2MVwxNzBceDY1XHg3MyJdID0gJHRoaXMtPnB1cmNoYXNlX29yZGVyX2xpYi0+Z2V0X3RheGVzX2Zvcl9wbygpOyAkZGF0YVsiXDE2NFx4NmZceDc0XHg2MVx4NmMiXSA9ICR0aGlzLT5wdXJjaGFzZV9vcmRlcl9saWItPmdldF90b3RhbCgkcG9faWQpOyAkZGF0YVsiXHg3Mlx4NjVceDYzXHg2NVx4NjlceDcwXHg3NFx4NWZcMTY0XDE1MVwxNjRcMTU0XHg2NSJdID0gbGFuZygiXHg3MFwxNjVcMTYyXDE0M1x4NjhceDYxXHg3M1wxNDVceDVmXHg2Zlx4NzJceDY0XHg2NVwxNjJcMTM3XDE2MlwxNDVcMTQzXHg2NVwxNTFcMTYwXDE2NCIpOyAkZGF0YVsiXDE0M1wxNTdcMTU1XHg2ZFx4NjVceDZlXHg3NCJdID0gJHRoaXMtPnB1cmNoYXNlX29yZGVycy0+Z2V0X2NvbW1lbnQoJHBvX2lkKTsgJGRhdGFbIlx4NmZcMTYyXDE0NFx4NjVceDcyXHg1ZlwxNjRceDY5XDE1NVwxNDUiXSA9IGRhdGUoZ2V0X2RhdGVfZm9ybWF0KCkgLiAiXDQwIiAuIGdldF90aW1lX2Zvcm1hdCgpLCBzdHJ0b3RpbWUoJHBvX2luZm9bIlwxNTdceDcyXHg2NFx4NjVcMTYyXHg1Zlx4NzRcMTUxXDE1NVwxNDUiXSkpOyAkc3VwcGxpZXJfaWQgPSAkdGhpcy0+cHVyY2hhc2Vfb3JkZXJfbGliLT5nZXRfc3VwcGxpZXIoKTsgJGVtcF9pbmZvID0gJHRoaXMtPkVtcGxveWVlLT5nZXRfaW5mbygkcG9faW5mb1siXDE0NVwxNTVceDcwXHg2Y1x4NmZceDc5XHg2NVx4NjVceDVmXHg2OVx4NjQiXSk7ICRkYXRhWyJcMTQ1XHg2ZFwxNjBcMTU0XDE1N1wxNzFcMTQ1XDE0NSJdID0gJGVtcF9pbmZvLT5maXJzdF9uYW1lIC4gIlw0MCIgLiAkZW1wX2luZm8tPmxhc3RfbmFtZTsgaWYgKCRzdXBwbGllcl9pZCAhPSAtMSkgeyAkc3VwcGxfaW5mbyA9ICR0aGlzLT5TdXBwbGllci0+Z2V0X2luZm8oJHN1cHBsaWVyX2lkKTsgJGRhdGFbIlx4NzNcMTY1XHg3MFwxNjBcMTU0XDE1MVx4NjVceDcyIl0gPSAkc3VwcGxfaW5mby0+Y29tcGFueV9uYW1lOyBpZiAoJHN1cHBsX2luZm8tPmZpcnN0X25hbWUgfHwgJHN1cHBsX2luZm8tPmxhc3RfbmFtZSkgeyAkZGF0YVsiXDE2M1wxNjVceDcwXHg3MFwxNTRceDY5XHg2NVx4NzIiXSAuPSAiXHgyMFx4MjgiIC4gJHN1cHBsX2luZm8tPmZpcnN0X25hbWUgLiAiXHgyMCIgLiAkc3VwcGxfaW5mby0+bGFzdF9uYW1lIC4gIlx4MjkiOyB9ICRkYXRhWyJceDczXHg3NVwxNjBcMTYwXHg2Y1x4NjlceDY1XHg3MlwxMzdcMTQzXDE1N1x4NmRcMTYwXHg2MVwxNTZceDc5XDEzN1wxNTZcMTQxXHg2ZFx4NjUiXSA9ICRzdXBwbF9pbmZvLT5jb21wYW55X25hbWU7ICRkYXRhWyJceDczXDE2NVwxNjBceDcwXDE1NFwxNTFceDY1XHg3MlwxMzdcMTQxXHg2NFwxNDRcMTYyXHg2NVx4NzNcMTYzIl0gPSAkc3VwcGxfaW5mby0+YWRkcmVzczsgJGRhdGFbIlwxNjNcMTY1XDE2MFwxNjBcMTU0XDE1MVx4NjVceDcyXDEzN1x4NzBcMTUwXDE1N1x4NmVceDY1Il0gPSAkc3VwcGxfaW5mby0+cGhvbmVfbnVtYmVyOyAkZGF0YVsiXDE2M1x4NzVcMTYwXHg3MFx4NmNcMTUxXDE0NVwxNjJcMTM3XHg2NVwxNTVceDYxXHg2OVx4NmMiXSA9ICRzdXBwbF9pbmZvLT5lbWFpbDsgJGRhdGFbIlx4NzNcMTY1XDE2MFx4NzBceDZjXDE1MVx4NjVceDcyXDEzN1wxNDdcMTYzXHg3NFwxNTYiXSA9ICRzdXBwbF9pbmZvLT5nc3RuOyAkZGF0YVsiXHg3M1x4NzVceDcwXHg3MFwxNTRceDY5XDE0NVx4NzJceDVmXHg3M1wxNjRcMTQxXDE2NFwxNDUiXSA9ICRzdXBwbF9pbmZvLT5zdGF0ZTsgfSAkZGF0YVsiXHg2ZlwxNjJceDY0XHg2NVwxNjJcMTM3XDE1MVwxNDQiXSA9ICR0aGlzLT5jb25maWctPml0ZW0oIlwxNjBceDc1XDE2MlwxNDNceDY4XHg2MVx4NzNcMTQ1XDEzN1x4NmZceDcyXDE0NFx4NjVcMTYyXDEzN1x4NzBceDcyXHg2NVx4NjZcMTUxXHg3OCIpIC4gIlx4MjAiIC4gJHBvX2lkOyAkZGF0YVsiXHg2MVwxNTVcMTU3XHg3NVwxNTZceDc0XDEzN1x4NjlceDZlXHg1Zlx4NzdceDZmXHg3Mlx4NjRcMTYzIl0gPSAkdGhpcy0+YW1vdW50X3RvX3dvcmRzKCRkYXRhWyJcMTY0XDE1N1wxNjRcMTQxXDE1NCJdKTsgaWYgKGVtcHR5KCRkYXRhWyJcMTY0XDE0MVwxNzBcMTQ1XHg3MyJdKSkgeyBmb3JlYWNoIChhcnJheV9rZXlzKCRkYXRhWyJceDYzXHg2MVwxNjJcMTY0Il0pIGFzICRrZXkpIHsgaWYgKGlzc2V0KCRkYXRhWyJcMTQzXDE0MVwxNjJceDc0Il1bJGtleV1bIlx4NjlceDc0XDE0NVwxNTVceDVmXHg2OVx4NjQiXSkpIHsgJGl0ZW1faW5mbyA9ICR0aGlzLT5JdGVtLT5nZXRfaW5mbygkZGF0YVsiXDE0M1x4NjFcMTYyXHg3NCJdWyRrZXldWyJcMTUxXDE2NFx4NjVceDZkXHg1ZlwxNTFcMTQ0Il0pOyBpZiAoJGl0ZW1faW5mby0+Y29zdF9wcmljZV90YXhfaW5jbHVkZWQpIHsgJHByaWNlX3RvX3VzZSA9IGdldF9wcmljZV9mb3JfaXRlbV9leGNsdWRpbmdfdGF4ZXMoJGRhdGFbIlwxNDNceDYxXDE2MlwxNjQiXVska2V5XVsiXHg2OVx4NzRcMTQ1XDE1NVwxMzdcMTUxXHg2NCJdLCAkZGF0YVsiXHg2M1x4NjFcMTYyXHg3NCJdWyRrZXldWyJceDcwXDE2MlwxNTFceDYzXHg2NSJdKTsgJGRhdGFbIlwxNDNcMTQxXHg3MlwxNjQiXVska2V5XVsiXDE2MFwxNjJceDY5XHg2M1x4NjUiXSA9ICRwcmljZV90b191c2U7IH0gfSB9IH0gaWYgKCEkdGhpcy0+cHVyY2hhc2Vfb3JkZXJfbGliLT5nZXRfbm9fdGF4X3BvKCkpIHsgZm9yZWFjaCAoJGRhdGFbIlx4NjNceDYxXDE2Mlx4NzQiXSBhcyAka2V5ID0+ICRpdGVtKSB7ICRwcmljZV90b191c2UgPSAkdGhpcy0+cHVyY2hhc2Vfb3JkZXJfbGliLT5fZ2V0X3ByaWNlX2Zvcl9pdGVtX2luX2NhcnQoJGl0ZW0sIGZhbHNlKTsgaWYgKCR0aGlzLT5wdXJjaGFzZV9vcmRlcl9saWItPmdldF9wb19pZ3N0X2VuYWJsZWQoKSkgeyAkdGF4X2luZm8gPSAkdGhpcy0+SXRlbV90YXhlc19maW5kZXItPmdldF9pZ3N0X2luZm8oJGl0ZW1bIlx4NjlcMTY0XHg2NVwxNTVcMTM3XDE1MVwxNDQiXSk7ICR0YXhfYW1vdW50ID0gJHByaWNlX3RvX3VzZSAqICRpdGVtWyJcMTYxXHg3NVx4NjFcMTU2XHg3NFwxNTFceDc0XHg3OSJdICogKCR0YXhfaW5mb1swXVsiXHg3MFx4NjVceDcyXHg2M1wxNDVceDZlXDE2NCJdIC8gMTAwKTsgJGRhdGFbIlwxNDNceDYxXHg3MlwxNjQiXVska2V5XVskdGF4X2luZm9bMF1bIlwxNTZceDYxXDE1NVwxNDUiXV0gPSBhcnJheSgiXDE2MFx4NjVcMTYyXHg2M1wxNDVceDZlXDE2NCIgPT4gJHRheF9pbmZvWzBdWyJcMTYwXHg2NVwxNjJcMTQzXHg2NVx4NmVceDc0Il0sICJcMTQxXHg2ZFwxNTdcMTY1XHg2ZVx4NzQiID0+ICR0YXhfYW1vdW50KTsgfSBlbHNlIHsgJHRheF9pbmZvID0gJHRoaXMtPkl0ZW1fdGF4ZXNfZmluZGVyLT5nZXRfaW5mbygkaXRlbVsiXHg2OVx4NzRcMTQ1XHg2ZFwxMzdceDY5XDE0NCJdKTsgJHRheF9uYW1lcyA9IGFycmF5KCk7IGZvcmVhY2ggKCR0YXhfaW5mbyBhcyAkdGF4KSB7ICR0YXhfYW1vdW50ID0gJHByaWNlX3RvX3VzZSAqICRpdGVtWyJceDcxXHg3NVwxNDFcMTU2XDE2NFx4NjlcMTY0XHg3OSJdICogKCR0YXhbIlwxNjBcMTQ1XHg3MlwxNDNceDY1XDE1Nlx4NzQiXSAvIDEwMCk7ICRkYXRhWyJceDYzXDE0MVx4NzJceDc0Il1bJGtleV1bJHRheFsiXDE1Nlx4NjFceDZkXDE0NSJdXSA9IGFycmF5KCJcMTYwXHg2NVx4NzJceDYzXHg2NVwxNTZceDc0IiA9PiAkdGF4WyJceDcwXDE0NVx4NzJcMTQzXDE0NVwxNTZceDc0Il0sICJcMTQxXHg2ZFx4NmZceDc1XHg2ZVwxNjQiID0+ICR0YXhfYW1vdW50KTsgJHRheF9uYW1lc1tdID0gJHRheFsiXDE1NlwxNDFcMTU1XDE0NSJdOyB9ICRkYXRhWyJceDYzXHg2MVwxNjJcMTY0Il1bJGtleV1bIlx4NzRceDYxXDE3MFwxMzdcMTU2XHg2MVwxNTVcMTQ1XDE2MyJdID0gJHRheF9uYW1lczsgfSBpZiAoJHRoaXMtPmNvbmZpZy0+aXRlbSgiXDEwN1x4NTNcMTI0IikgPT0gMSkgeyAkY2Vzc190YXhfaW5mbyA9IGlzc2V0KCRpdGVtWyJcMTUxXDE2NFx4NjVceDZkXHg1Zlx4NjlcMTQ0Il0pID8gJHRoaXMtPkl0ZW1fdGF4ZXNfZmluZGVyLT5nZXRfY2Vzc19pbmZvKCRpdGVtWyJcMTUxXHg3NFx4NjVcMTU1XHg1Zlx4NjlcMTQ0Il0pIDogJHRoaXMtPkl0ZW1fa2l0X3RheGVzX2ZpbmRlci0+Z2V0X2Nlc3NfaW5mbygkaXRlbVsiXDE1MVx4NzRcMTQ1XDE1NVx4NWZceDZiXHg2OVx4NzRcMTM3XHg2OVx4NjQiXSk7IGlmICgkY2Vzc190YXhfaW5mbykgeyAkY2Vzc190YXhfYW1vdW50ID0gKCRwcmljZV90b191c2UgKiAkaXRlbVsiXDE2MVx4NzVceDYxXDE1NlwxNjRcMTUxXDE2NFx4NzkiXSAtICRwcmljZV90b191c2UgKiAkaXRlbVsiXDE2MVwxNjVcMTQxXHg2ZVwxNjRcMTUxXHg3NFx4NzkiXSAqICRpdGVtWyJceDY0XDE1MVx4NzNcMTQzXHg2ZlwxNjVcMTU2XDE2NCJdIC8gMTAwKSAqICgkY2Vzc190YXhfaW5mb1swXVsiXDE2MFwxNDVceDcyXHg2M1wxNDVcMTU2XDE2NCJdIC8gMTAwKTsgJGRhdGFbIlwxNDNceDYxXDE2Mlx4NzQiXVska2V5XVsiXDEwM1x4NDVceDUzXHg1MyJdID0gYXJyYXkoIlwxNjBceDY1XDE2Mlx4NjNcMTQ1XDE1Nlx4NzQiID0+ICRjZXNzX3RheF9pbmZvWzBdWyJceDcwXHg2NVwxNjJceDYzXDE0NVx4NmVcMTY0Il0sICJceDYxXHg2ZFwxNTdcMTY1XDE1Nlx4NzQiID0+ICRjZXNzX3RheF9hbW91bnQpOyAkZGF0YVsiXDE0M1x4NjVcMTYzXDE2M1wxMzdcMTQxXHg2NFwxNDRceDY1XHg2NCJdID0gMTsgfSB9IH0gfSBmb3JlYWNoICgkZGF0YVsiXHg2M1x4NjFceDcyXDE2NCJdIGFzICRrZXkgPT4gJGl0ZW0pIHsgJHRheGFibGVfdmFsdWUgPSAkdGhpcy0+cHVyY2hhc2Vfb3JkZXJfbGliLT5nZXRfdGF4YWJsZV92YWx1ZSgkaXRlbSwgJHBvX2lkKTsgJGRhdGFbIlx4NjNceDYxXHg3Mlx4NzQiXVska2V5XVsiXHg3NFwxNDFceDc4XDE0MVx4NjJcMTU0XHg2NVx4NWZcMTY2XDE0MVx4NmNcMTY1XHg2NSJdID0gJHRheGFibGVfdmFsdWU7IH0gaWYgKCR0aGlzLT5wdXJjaGFzZV9vcmRlcl9saWItPmdldF9wb19pZ3N0X2VuYWJsZWQoKSkgeyAkZGF0YVsiXDE2M1x4NjFceDZjXHg2NVwxMzdceDc0XHg2MVx4NzhcMTM3XDE2NFx4NzlceDcwXDE0NSJdID0gIlwxMTFcMTA3XDEyM1wxMjQiOyB9IGVsc2UgeyAkZGF0YVsiXHg3M1wxNDFcMTU0XHg2NVwxMzdcMTY0XHg2MVwxNzBcMTM3XDE2NFwxNzFceDcwXDE0NSJdID0gIlwxMTdcMTY0XHg2OFx4NjVceDcyIjsgfSAkdGhpcy0+bG9hZC0+dmlldygiXDE2MFwxNjVceDcyXDE0M1x4NjhcMTQxXDE2M1x4NjVceDVmXDE1N1x4NzJcMTQ0XDE0NVx4NzJceDJmXDE2Mlx4NjVcMTQzXHg2NVx4NjlceDcwXHg3NFx4NWZcMTQ1XDE1NVx4NjFcMTUxXHg2Y1wxMzdcMTYwXHg3Mlx4NjVcMTY2XHg2OVwxNDVcMTY3IiwgJGRhdGEpOyAkdGhpcy0+cHVyY2hhc2Vfb3JkZXJfbGliLT5jbGVhcl9hbGwoKTsgJHRoaXMtPnJlbW92ZUR1cGxpY2F0ZVNlc3Npb25Db29raWVIZWFkZXJzKCk7IH0gZnVuY3Rpb24gcGFnZV9zYWxlc19vcmRlcigkc2FsZV9pZCkgeyAkdGhpcy0+RW1wbG95ZWUtPmNsZWFyX2xvY2F0aW9uX2lkX3ByaW50KCk7ICR0aGlzLT5sb2FkLT5saWJyYXJ5KCJcMTQ1XDE1Nlx4NjNcMTYyXHg3OVx4NzBceDc0XHg2OVx4NmZceDZlIik7ICRlbmNyeXB0ZWRfaWQgPSBiYXNlNjRfZGVjb2RlKCRzYWxlX2lkKTsgJHNhbGVfaWRfZXggPSAkdGhpcy0+ZW5jcnlwdGlvbi0+ZGVjcnlwdCgkZW5jcnlwdGVkX2lkKTsgJHZhbHVlID0gZXhwbG9kZSgiXDQwIiwgJHNhbGVfaWRfZXgpOyAkZGF0YVsiXDE2M1x4NjFcMTU0XHg2NVwxMzdcMTU1XHg3OVx4NWZcMTUxXDE0NCJdID0gJHZhbHVlWzBdOyAkZGF0YVsiXDE2NFx4NzlceDcwXHg2NSJdID0gJHZhbHVlWzJdOyAkdGhpcy0+RW1wbG95ZWUtPnNldF9sb2NhdGlvbl9pZF9wcmludCgkdmFsdWVbMV0pOyAkc2FsZXNfb3JkZXJfaWQgPSAkZGF0YVsiXDE2M1x4NjFcMTU0XDE0NVx4NWZceDZkXHg3OVx4NWZcMTUxXDE0NCJdOyAkdHlwZSA9ICRkYXRhWyJceDc0XHg3OVwxNjBcMTQ1Il07ICRzYWxlc19vcmRlcl9pbmZvID0gJHRoaXMtPlNhbGVzX29yZGVycy0+Z2V0X2luZm8oJHNhbGVzX29yZGVyX2lkKS0+cm93X2FycmF5KCk7ICR0aGlzLT5zYWxlc19vcmRlcl9saWItPnNldF9zYWxlc19vcmRlcl9kaXNjb3VudF90eXBlKCRzYWxlX2luZm9bIlwxNDRceDY5XHg3M1x4NjNcMTU3XDE2NVx4NmVceDc0XDEzN1x4NzRceDc5XDE2MFwxNDUiXSk7ICRkYXRhWyJcMTQzXDE2NVx4NzJceDcyXDE0NVx4NmVceDc0XDEzN1wxNDRcMTUxXDE2M1wxNDNcMTU3XHg3NVwxNTZcMTY0XHg1ZlwxNjRceDc5XHg3MFwxNDUiXSA9ICR0aGlzLT5zYWxlc19vcmRlcl9saWItPmdldF9zYWxlc19vcmRlcl9kaXNjb3VudF90eXBlKCk7IGlmICgkc2FsZXNfb3JkZXJfaW5mb1siXHg2ZFwxNDFcMTU2XDE2NVwxNDFceDZjXDEzN1x4NjJcMTUxXDE1NFwxNTRceDVmXHg2ZVwxNTciXSkgeyAkdGhpcy0+c2FsZXNfb3JkZXJfbGliLT5zZXRfc2FsZXNfb3JkZXJfbWFudWFsX2JpbGxfbm8oJHNhbGVzX29yZGVyX2luZm9bIlx4NmRcMTQxXHg2ZVwxNjVceDYxXDE1NFx4NWZceDYyXHg2OVwxNTRcMTU0XHg1ZlwxNTZceDZmIl0pOyAkZGF0YVsiXDE1NVwxNDFceDZlXHg3NVx4NjFceDZjXHg1Zlx4NjJceDY5XHg2Y1x4NmNcMTM3XDE1NlwxNTciXSA9ICR0aGlzLT5zYWxlc19vcmRlcl9saWItPmdldF9zYWxlc19vcmRlcl9tYW51YWxfYmlsbF9ubygpOyB9IGlmICgkc2FsZXNfb3JkZXJfaW5mb1siXDE1NVx4NjFceDZlXDE2NVx4NjFceDZjXHg1Zlx4NzJcMTU3XHg3NVwxNTZceDY0XHg1ZlwxNTdceDY2XDE0NiJdKSB7ICR0aGlzLT5zYWxlc19vcmRlcl9saWItPnNldF9tYW51YWxfcm91bmRfb2ZmKCRzYWxlc19vcmRlcl9pbmZvWyJceDZkXDE0MVwxNTZceDc1XHg2MVx4NmNceDVmXHg3MlwxNTdcMTY1XDE1NlwxNDRcMTM3XHg2Zlx4NjZceDY2Il0pOyAkZGF0YVsiXDE1NVx4NjFceDZlXHg3NVwxNDFceDZjXDEzN1wxNjJcMTU3XHg3NVx4NmVceDY0XDEzN1wxNTdceDY2XDE0NiJdID0gJHRoaXMtPnNhbGVzX29yZGVyX2xpYi0+Z2V0X21hbnVhbF9yb3VuZF9vZmYoKTsgfSAkZGF0YVsiXHg2ZVwxNTdcMTM3XHg3NFwxNDFcMTcwXDEzN1wxNjNceDYxXDE1NFwxNDUiXSA9ICRzYWxlc19vcmRlcl9pbmZvWyJcMTU2XDE1N1x4NWZceDc0XHg2MVx4NzhceDVmXDE2M1x4NjFcMTU0XHg2NSJdOyAkdGhpcy0+c2FsZXNfb3JkZXJfbGliLT5jb3B5X2VudGlyZV9zYWxlKCRzYWxlc19vcmRlcl9pZCwgdHJ1ZSk7ICRkYXRhWyJceDYzXHg2MVx4NzJcMTY0Il0gPSAkdGhpcy0+c2FsZXNfb3JkZXJfbGliLT5nZXRfY2FydCgpOyAkZGF0YVsiXHg3M1wxNjVceDYyXDE2NFwxNTdcMTY0XHg2MVx4NmMiXSA9ICR0aGlzLT5zYWxlc19vcmRlcl9saWItPmdldF9zdWJ0b3RhbCgkc2FsZXNfb3JkZXJfaWQpOyAkZGF0YVsiXDE2NFx4NjFcMTcwXHg2NVx4NzMiXSA9ICR0aGlzLT5zYWxlc19vcmRlcl9saWItPmdldF90YXhlc19mb3Jfc2FsZXNfb3JkZXIoZmFsc2UpOyAkZGF0YVsiXHg3NFwxNTdceDc0XHg2MVx4NmMiXSA9ICR0aGlzLT5zYWxlc19vcmRlcl9saWItPmdldF90b3RhbCgkc2FsZXNfb3JkZXJfaWQpOyAkZGF0YVsiXHg3Mlx4NjVcMTQzXHg2NVx4NjlcMTYwXHg3NFx4NWZcMTY0XDE1MVwxNjRcMTU0XDE0NSJdID0gbGFuZygiXHg3M1wxNDFceDZjXDE0NVx4NzNceDVmXHg2ZlwxNjJceDY0XDE0NVwxNjJcMTM3XDE2Mlx4NjVcMTQzXHg2NVx4NjlcMTYwXHg3NFwxMzdceDc0XDE1MVwxNjRceDZjXHg2NSIpOyAkZGF0YVsiXDE0M1x4NmZceDZkXDE1NVx4NjVcMTU2XHg3NCJdID0gJHRoaXMtPlNhbGVzX29yZGVycy0+Z2V0X2NvbW1lbnQoJHNhbGVzX29yZGVyX2lkKTsgJGRhdGFbIlwxNjRcMTYyXDE0MVwxNTZcMTYzXDE0MVx4NjNcMTY0XDE1MVx4NmZceDZlXHg1Zlx4NzRceDY5XHg2ZFwxNDUiXSA9IGRhdGUoZ2V0X2RhdGVfZm9ybWF0KCkgLiAiXDQwIiAuIGdldF90aW1lX2Zvcm1hdCgpLCBzdHJ0b3RpbWUoJHNhbGVzX29yZGVyX2luZm9bIlwxNjNceDYxXHg2Y1wxNDVceDczXDEzN1wxNTdceDcyXDE0NFwxNDVceDcyXDEzN1x4NzRceDY5XHg2ZFx4NjUiXSkpOyAkY3VzdG9tZXJfaWQgPSAkdGhpcy0+c2FsZXNfb3JkZXJfbGliLT5nZXRfY3VzdG9tZXIoKTsgJGVtcF9pbmZvID0gJHRoaXMtPkVtcGxveWVlLT5nZXRfaW5mbygkc2FsZXNfb3JkZXJfaW5mb1siXHg2NVx4NmRcMTYwXDE1NFx4NmZcMTcxXDE0NVx4NjVcMTM3XHg2OVx4NjQiXSk7ICRkYXRhWyJcMTQ1XDE1NVx4NzBceDZjXHg2Zlx4NzlcMTQ1XDE0NSJdID0gJGVtcF9pbmZvLT5maXJzdF9uYW1lIC4gIlx4MjAiIC4gJGVtcF9pbmZvLT5sYXN0X25hbWU7ICRkYXRhWyJcMTQ0XDE1MVwxNjNcMTQzXDE1N1wxNjVcMTU2XDE2NFx4NWZceDY1XHg3OFwxNTFcMTYzXHg3NFwxNjMiXSA9ICR0aGlzLT5fZG9lc19kaXNjb3VudF9leGlzdHMoJGRhdGFbIlwxNDNcMTQxXDE2MlwxNjQiXSk7IGlmICgkY3VzdG9tZXJfaWQgIT0gLTEpIHsgJGN1c3RfaW5mbyA9ICR0aGlzLT5DdXN0b21lci0+Z2V0X2luZm8oJGN1c3RvbWVyX2lkKTsgJGRhdGFbIlx4NjNcMTY1XHg3M1x4NzRcMTU3XHg2ZFx4NjVcMTYyIl0gPSAkY3VzdF9pbmZvLT5maXJzdF9uYW1lIC4gIlw0MCIgLiAkY3VzdF9pbmZvLT5sYXN0X25hbWU7ICRkYXRhWyJceDYzXHg3NVwxNjNcMTY0XHg2ZlwxNTVcMTQ1XHg3MlwxMzdcMTQxXHg2NFx4NjRceDcyXDE0NVwxNjNcMTYzIl0gPSAkY3VzdF9pbmZvLT5hZGRyZXNzOyAkZGF0YVsiXHg2M1x4NzVcMTYzXHg3NFwxNTdcMTU1XHg2NVwxNjJcMTM3XDE2M1wxNjRcMTQxXDE2NFwxNDUiXSA9ICRjdXN0X2luZm8tPnN0YXRlOyAkZGF0YVsiXHg2M1wxNjVcMTYzXDE2NFwxNTdceDZkXDE0NVx4NzJceDVmXDE0M1x4NmZcMTY1XDE1Nlx4NzRcMTYyXHg3OSJdID0gJGN1c3RfaW5mby0+Y291bnRyeTsgJGRhdGFbIlx4NjNcMTY1XDE2M1x4NzRceDZmXDE1NVx4NjVceDcyXDEzN1x4NzBcMTUwXDE1N1x4NmVcMTQ1Il0gPSAkY3VzdF9pbmZvLT5waG9uZV9udW1iZXI7ICRkYXRhWyJceDYzXDE2NVx4NzNcMTY0XHg2ZlwxNTVceDY1XDE2MlwxMzdcMTQ1XDE1NVx4NjFcMTUxXDE1NCJdID0gJGN1c3RfaW5mby0+ZW1haWw7ICRkYXRhWyJcMTQzXHg3NVx4NzNcMTY0XHg2Zlx4NmRcMTQ1XDE2MlwxMzdceDY3XHg3M1wxNjRceDZlIl0gPSAkY3VzdF9pbmZvLT5nc3RuOyAkZGF0YVsiXHg2M1wxNjVceDczXHg3NFx4NmZcMTU1XDE0NVwxNjJcMTM3XDE0M1x4NmZceDZkXDE2MFx4NjFceDZlXHg3OVx4NWZcMTU2XDE0MVwxNTVceDY1Il0gPSAkY3VzdF9pbmZvLT5jb21wYW55X25hbWU7ICRkYXRhWyJceDYzXHg3NVx4NzNcMTY0XDE1N1wxNTVceDY1XHg3Mlx4NWZcMTY0XHg2MVx4NzhcMTQxXDE0Mlx4NmNcMTQ1Il0gPSAkY3VzdF9pbmZvLT50YXhhYmxlOyB9ICRkYXRhWyJcMTYzXHg2MVx4NmNcMTQ1XDEzN1wxNTFcMTQ0Il0gPSAkdGhpcy0+Y29uZmlnLT5pdGVtKCJcMTYzXDE0MVwxNTRceDY1XDE2M1wxMzdceDZmXDE2MlwxNDRcMTQ1XDE2Mlx4NWZceDcwXDE2MlwxNDVceDY2XHg2OVwxNzAiKSAuICJceDIwIiAuICRzYWxlc19vcmRlcl9pZDsgJHRvdGFsX21ycCA9IDA7IGZvcmVhY2ggKCRkYXRhWyJcMTQzXDE0MVwxNjJceDc0Il0gYXMgJHJvd19jYXJ0KSB7ICR0b3RhbF9tcnAgPSAkdG90YWxfbXJwICsgJHJvd19jYXJ0WyJceDZkXHg3MlwxNjAiXSAqICRyb3dfY2FydFsiXHg3MVwxNjVceDYxXDE1Nlx4NzRceDY5XDE2NFx4NzkiXTsgfSAkZGF0YVsiXDE2NFwxNTdceDc0XDE0MVx4NmNcMTM3XHg2ZFx4NzJcMTYwIl0gPSAkdG90YWxfbXJwOyAkZGF0YVsiXHg2MVwxNTVcMTU3XDE2NVx4NmVceDc0XDEzN1wxNjNceDYxXHg3NlwxNDVcMTQ0Il0gPSAkdG90YWxfbXJwIC0gJGRhdGFbIlx4NzRceDZmXHg3NFwxNDFcMTU0Il07ICRkYXRhWyJcMTQxXHg2ZFx4NmZcMTY1XDE1NlwxNjRcMTM3XDE1MVwxNTZcMTM3XDE2N1x4NmZcMTYyXDE0NFx4NzMiXSA9ICR0aGlzLT5hbW91bnRfdG9fd29yZHMoJGRhdGFbIlx4NzRceDZmXHg3NFwxNDFcMTU0Il0pOyBpZiAoKCRjdXN0X2luZm8tPnRheGFibGUgb3IgJGN1c3RvbWVyX2lkID09IC0xKSAmJiAhJHRoaXMtPnNhbGVzX29yZGVyX2xpYi0+Z2V0X25vX3RheF9zYWxlKCkpIHsgZm9yZWFjaCAoJGRhdGFbIlx4NjNcMTQxXHg3Mlx4NzQiXSBhcyAka2V5ID0+ICRpdGVtKSB7ICRwcmljZV90b191c2UgPSAkdGhpcy0+c2FsZXNfb3JkZXJfbGliLT5fZ2V0X3ByaWNlX2Zvcl9pdGVtX2luX2NhcnQoJGl0ZW0pOyBpZiAoJHRoaXMtPnNhbGVzX29yZGVyX2xpYi0+Z2V0X3NhbGVzX29yZGVyX2lnc3RfZW5hYmxlZCgpKSB7ICR0YXhfaW5mbyA9IGlzc2V0KCRpdGVtWyJcMTUxXDE2NFx4NjVceDZkXHg1ZlwxNTFcMTQ0Il0pID8gJHRoaXMtPkl0ZW1fdGF4ZXNfZmluZGVyLT5nZXRfaWdzdF9pbmZvKCRpdGVtWyJcMTUxXDE2NFwxNDVceDZkXDEzN1x4NjlceDY0Il0pIDogJHRoaXMtPkl0ZW1fa2l0X3RheGVzX2ZpbmRlci0+Z2V0X2lnc3RfaW5mbygkaXRlbVsiXHg2OVwxNjRcMTQ1XDE1NVwxMzdceDZiXHg2OVwxNjRceDVmXHg2OVwxNDQiXSk7ICR0YXhfYW1vdW50ID0gKCRwcmljZV90b191c2UgKiAkaXRlbVsiXDE2MVwxNjVceDYxXHg2ZVwxNjRcMTUxXDE2NFwxNzEiXSAtICRwcmljZV90b191c2UgKiAkaXRlbVsiXDE2MVwxNjVceDYxXDE1Nlx4NzRcMTUxXDE2NFx4NzkiXSAqICRpdGVtWyJceDY0XHg2OVx4NzNceDYzXDE1N1wxNjVceDZlXHg3NCJdIC8gMTAwKSAqICgkdGF4X2luZm9bMF1bIlx4NzBceDY1XDE2Mlx4NjNcMTQ1XHg2ZVx4NzQiXSAvIDEwMCk7ICRkYXRhWyJcMTQzXHg2MVwxNjJcMTY0Il1bJGtleV1bJHRheF9pbmZvWzBdWyJceDZlXHg2MVwxNTVceDY1Il1dID0gYXJyYXkoIlwxNjBceDY1XDE2Mlx4NjNceDY1XDE1Nlx4NzQiID0+ICR0YXhfaW5mb1swXVsiXDE2MFwxNDVcMTYyXDE0M1x4NjVcMTU2XDE2NCJdLCAiXDE0MVwxNTVceDZmXDE2NVx4NmVcMTY0IiA9PiAkdGF4X2Ftb3VudCk7IH0gZWxzZSB7ICR0YXhfaW5mbyA9IGlzc2V0KCRpdGVtWyJcMTUxXHg3NFx4NjVcMTU1XHg1Zlx4NjlceDY0Il0pID8gJHRoaXMtPkl0ZW1fdGF4ZXNfZmluZGVyLT5nZXRfaW5mbygkaXRlbVsiXDE1MVwxNjRcMTQ1XDE1NVwxMzdcMTUxXHg2NCJdKSA6ICR0aGlzLT5JdGVtX2tpdF90YXhlc19maW5kZXItPmdldF9pbmZvKCRpdGVtWyJceDY5XDE2NFwxNDVceDZkXHg1ZlwxNTNcMTUxXDE2NFx4NWZcMTUxXHg2NCJdKTsgJHRheF9uYW1lcyA9IGFycmF5KCk7IGZvcmVhY2ggKCR0YXhfaW5mbyBhcyAkdGF4KSB7ICR0YXhfYW1vdW50ID0gKCRwcmljZV90b191c2UgKiAkaXRlbVsiXHg3MVwxNjVceDYxXHg2ZVx4NzRceDY5XHg3NFwxNzEiXSAtICRwcmljZV90b191c2UgKiAkaXRlbVsiXDE2MVwxNjVcMTQxXHg2ZVwxNjRceDY5XDE2NFx4NzkiXSAqICRpdGVtWyJcMTQ0XDE1MVx4NzNcMTQzXHg2Zlx4NzVceDZlXDE2NCJdIC8gMTAwKSAqICgkdGF4WyJceDcwXDE0NVx4NzJcMTQzXDE0NVwxNTZcMTY0Il0gLyAxMDApOyAkZGF0YVsiXHg2M1wxNDFceDcyXHg3NCJdWyRrZXldWyR0YXhbIlwxNTZcMTQxXHg2ZFwxNDUiXV0gPSBhcnJheSgiXDE2MFwxNDVceDcyXDE0M1wxNDVcMTU2XHg3NCIgPT4gJHRheFsiXHg3MFx4NjVceDcyXDE0M1wxNDVceDZlXDE2NCJdLCAiXDE0MVx4NmRcMTU3XDE2NVwxNTZceDc0IiA9PiAkdGF4X2Ftb3VudCk7ICR0YXhfbmFtZXNbXSA9ICR0YXhbIlx4NmVcMTQxXHg2ZFx4NjUiXTsgfSAkZGF0YVsiXDE0M1x4NjFceDcyXDE2NCJdWyRrZXldWyJceDc0XHg2MVx4NzhcMTM3XDE1Nlx4NjFceDZkXDE0NVwxNjMiXSA9ICR0YXhfbmFtZXM7IH0gaWYgKCR0aGlzLT5jb25maWctPml0ZW0oIlx4NDdceDUzXDEyNCIpID09IDEpIHsgJGNlc3NfdGF4X2luZm8gPSBpc3NldCgkaXRlbVsiXHg2OVwxNjRceDY1XDE1NVwxMzdceDY5XDE0NCJdKSA/ICR0aGlzLT5JdGVtX3RheGVzX2ZpbmRlci0+Z2V0X2Nlc3NfaW5mbygkaXRlbVsiXDE1MVx4NzRcMTQ1XDE1NVx4NWZceDY5XHg2NCJdKSA6ICR0aGlzLT5JdGVtX2tpdF90YXhlc19maW5kZXItPmdldF9jZXNzX2luZm8oJGl0ZW1bIlwxNTFceDc0XDE0NVx4NmRceDVmXDE1M1wxNTFceDc0XDEzN1x4NjlcMTQ0Il0pOyBpZiAoJGNlc3NfdGF4X2luZm8pIHsgJGNlc3NfdGF4X2Ftb3VudCA9ICgkcHJpY2VfdG9fdXNlICogJGl0ZW1bIlx4NzFcMTY1XHg2MVwxNTZceDc0XHg2OVx4NzRceDc5Il0gLSAkcHJpY2VfdG9fdXNlICogJGl0ZW1bIlx4NzFcMTY1XDE0MVwxNTZcMTY0XHg2OVwxNjRcMTcxIl0gKiAkaXRlbVsiXDE0NFx4NjlcMTYzXHg2M1wxNTdceDc1XHg2ZVx4NzQiXSAvIDEwMCkgKiAoJGNlc3NfdGF4X2luZm9bMF1bIlwxNjBceDY1XHg3Mlx4NjNceDY1XDE1NlwxNjQiXSAvIDEwMCk7ICRkYXRhWyJceDYzXHg2MVx4NzJceDc0Il1bJGtleV1bIlwxMDNceDQ1XHg1M1x4NTMiXSA9IGFycmF5KCJceDcwXHg2NVx4NzJceDYzXDE0NVx4NmVcMTY0IiA9PiAkY2Vzc190YXhfaW5mb1swXVsiXHg3MFwxNDVcMTYyXHg2M1x4NjVceDZlXHg3NCJdLCAiXHg2MVx4NmRceDZmXHg3NVx4NmVceDc0IiA9PiAkY2Vzc190YXhfYW1vdW50KTsgJGRhdGFbIlwxNDNcMTQ1XDE2M1x4NzNcMTM3XHg2MVx4NjRceDY0XDE0NVx4NjQiXSA9IDE7IH0gfSB9IH0gZm9yZWFjaCAoJGRhdGFbIlwxNDNcMTQxXDE2Mlx4NzQiXSBhcyAka2V5ID0+ICRpdGVtKSB7ICR0YXhhYmxlX3ZhbHVlID0gJHRoaXMtPnNhbGVzX29yZGVyX2xpYi0+Z2V0X3RheGFibGVfdmFsdWUoJGl0ZW0sICRzYWxlc19vcmRlcl9pZCwgJycpOyAkZGF0YVsiXHg2M1wxNDFcMTYyXDE2NCJdWyRrZXldWyJceDc0XDE0MVwxNzBcMTQxXHg2MlwxNTRceDY1XHg1Zlx4NzZcMTQxXDE1NFx4NzVceDY1Il0gPSAkdGF4YWJsZV92YWx1ZTsgfSBpZiAoJHRoaXMtPnNhbGVzX29yZGVyX2xpYi0+Z2V0X3NhbGVzX29yZGVyX2lnc3RfZW5hYmxlZCgpKSB7ICRkYXRhWyJceDczXHg2MVwxNTRceDY1XDEzN1x4NzRcMTQxXHg3OFx4NWZcMTY0XHg3OVx4NzBcMTQ1Il0gPSAiXDExMVx4NDdcMTIzXHg1NCI7IH0gZWxzZSB7ICRkYXRhWyJcMTYzXHg2MVwxNTRceDY1XDEzN1wxNjRcMTQxXHg3OFx4NWZceDc0XDE3MVwxNjBceDY1Il0gPSAiXDExN1wxNjRceDY4XHg2NVx4NzIiOyB9IGlmICgkdHlwZSA9PSAwKSB7ICR0aGlzLT5sb2FkLT52aWV3KCJceDczXDE0MVwxNTRceDY1XDE2M1wxMzdcMTU3XHg3MlwxNDRceDY1XHg3Mlx4MmZcMTYyXHg2NVwxNDNceDY1XDE1MVx4NzBceDc0XDEzN1x4NjVceDZkXDE0MVwxNTFceDZjXDEzN1x4NzBceDcyXHg2NVx4NzZcMTUxXDE0NVx4NzciLCAkZGF0YSk7IH0gZWxzZSB7ICR0aGlzLT5sb2FkLT52aWV3KCJcMTYzXHg2MVwxNTRcMTQ1XHg3M1wxMzdcMTU3XHg3Mlx4NjRcMTQ1XDE2Mlx4MmZcMTUxXDE1NlwxNjZcMTU3XHg2OVwxNDNcMTQ1XHg1ZlwxNDVcMTU1XHg2MVx4NjlceDZjXDEzN1x4NzBceDcyXDE0NVx4NzZcMTUxXHg2NVwxNjciLCAkZGF0YSk7IH0gJHRoaXMtPnNhbGVzX29yZGVyX2xpYi0+Y2xlYXJfYWxsKCk7ICR0aGlzLT5yZW1vdmVEdXBsaWNhdGVTZXNzaW9uQ29va2llSGVhZGVycygpOyB9')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 604d5cb07e985ce446de8fee0cdb078e
Eval Count 1
Decode Time 171 ms