From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30177 invoked by alias); 27 Jun 2005 10:31:48 -0000 Mailing-List: contact binutils-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sources.redhat.com Received: (qmail 30158 invoked by uid 22791); 27 Jun 2005 10:31:42 -0000 Received: from public.id2-vpn.continvity.gns.novell.com (HELO emea1-mh.id2.novell.com) (195.33.99.129) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Mon, 27 Jun 2005 10:31:42 +0000 Received: from EMEA1-MTA by emea1-mh.id2.novell.com with Novell_GroupWise; Mon, 27 Jun 2005 11:31:35 +0200 Message-Id: <42BFF1C3020000780001D842@emea1-mh.id2.novell.com> Date: Mon, 27 Jun 2005 10:31:00 -0000 From: "Jan Beulich" To: "James Wilson" Cc: Subject: Re: [PATCH] ia64: unwind directive handling Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__PartF3D003B3.2__=" X-Virus-Checked: Checked by ClamAV on sourceware.org X-SW-Source: 2005-06/txt/msg00585.txt.bz2 This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__PartF3D003B3.2__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-length: 3860 >>> James E Wilson 10.06.05 02:06:49 >>> >On Mon, 2005-05-23 at 03:00, Jan Beulich wrote: >> The main purpose of this patch is to add parser level support for the >> optional tags various of the unwind directives permit and to make '}' a >> statement separator as is done in ias. Along with that it consolidates >> some redundant functionality, tightens operand checking for many unwind >> directives, and fixes some other bugs. > >Comments attached. Here's the updated patch, with (I believe) all issues addressed (except for= where I gave reasons for why things were done the way they are in an earli= er reply). Additionally to that there are four more new warnings (noting in= consistencies between .prologue and later .save-s). Built and tested on ia64-unknown-linux-gnu. Jan gas/ 2005-06-27 Jan Beulich * config/tc-ia64.c (line_separator_chars): Add '{' and '}'. (output_spill_psprel, output_spill_psprel_p): Combine. (output_spill_sprel, output_spill_sprel_p): Combine. (output_spill_reg, output_spill_regp_p): Combine. (process_one_record): Handle psp_psprel. (parse_predicate_and_operand): New. (convert_expr_to_ab_reg): Two new parameters. Return void. Always initialize output values. Emit diagnostic case here. (convert_expr_to_xy_reg): Likewise. Don't allow r0, f0, and f1. (add_unwind_entry): New second parameter. Allow first parameter to be NULL. Parse optional tag, emit warning about further support for it otherwise being missing. Check end-of-line when requested. (dot_fframe): Clear operand when wrong. Allow tag. (dot_vframe): Likewise. (dot_vframesp): Likewise. Rename parameter, issue warning when psp relative. (dot_vframepsp): Remove. (dot_altrp): Clear operand when wrong. Allow tag. (dot_save): Likewise. Let default case also go through add_unwind_entry. (dot_savemem): Likewise. (dot_restore): Don't return when wrong operand. Allow tag. (dot_spillreg, dot_spillreg_p): Combine. Simplify by using parse_predicate_and_operand and the new arguments to convert_expr_to_ab_reg and convert_expr_to_xy_reg. Don't return when wrong operand. Allow tag. (dot_restorereg, dot_restorereg_p): Likewise. (dot_spillmem, dot_spillmem_p): Likewise. (dot_saveg): Clear operand when wrong. Perform tighter operand checks. Allow tag. (dot_savef): Likewise. (dot_saveb): Likewise. (dot_savegf): Likewise. (dot_spill): Remove end-of-line check. Combine. Simplify by using parse_predicate_and_operand and the new arguments to convert_expr_to_ab_reg and convert_expr_to_xy_reg. Don't return when wrong operand. Allow tag. (popcount): New. (dot_label_state): Don't return when wrong operand. (dot_copy_state): Likewise. (dot_unwabi): Likewise. Check if in prologue. (dot_body): Don't call demand_empty_rest_of_line. (dot_prologue): Type of mask and grsave is unsigned. Perform tighter operand checks. (md_pseudo_table): Also use dot_restorereg for .restorereg.p. Also use dot_spillreg for .spillreg.p. Also use dot_spillmem for .spillpsp.p and .spillsp.p. Also use dot_vframesp for .vframepsp. (parse_operand): New second parameter. Don't deal with '}' here anymore. Don't advance past end-of-line. (parse_operands): Pass second argument to parse_operand. (ia64_start_line): Prevent out-of-bounds access through input_line_pointer. Deal with '}' here. (ia64_unrecognized_line): Don't deal with '}' here. (dot_alias): Use ignore_rest_of_line not its deprecated alias discard_rest_of_line. gas/testsuite/ 2005-06-27 Jan Beulich * gas/ia64/group-2.s: Use register as second operand of .prologue. * gas/ia64/unwind-err.s: Add check for .vframesp. * gas/ia64/unwind-err.l: Adjust. * gas/ia64/strange.[sd]: New. * gas/ia64/unwind-bad.[sl]: New. * gas/ia64/unwind-ok.[sd]: New. * gas/ia64/ia64.exp: Run new tests. --=__PartF3D003B3.2__= Content-Type: application/octet-stream; name="binutils-mainline-ia64-unwind.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="binutils-mainline-ia64-unwind.patch" Content-length: 105213 QnVpbHQgYW5kIHRlc3RlZCBvbiBpYTY0LXVua25vd24tbGludXgtZ251LgoK SmFuCgpnYXMvCjIwMDUtMDYtMjcgIEphbiBCZXVsaWNoICA8amJldWxpY2hA bm92ZWxsLmNvbT4KCgkqIGNvbmZpZy90Yy1pYTY0LmMgKGxpbmVfc2VwYXJh dG9yX2NoYXJzKTogQWRkICd7JyBhbmQgJ30nLgoJKG91dHB1dF9zcGlsbF9w c3ByZWwsIG91dHB1dF9zcGlsbF9wc3ByZWxfcCk6IENvbWJpbmUuCgkob3V0 cHV0X3NwaWxsX3NwcmVsLCBvdXRwdXRfc3BpbGxfc3ByZWxfcCk6IENvbWJp bmUuCgkob3V0cHV0X3NwaWxsX3JlZywgb3V0cHV0X3NwaWxsX3JlZ3BfcCk6 IENvbWJpbmUuCgkocHJvY2Vzc19vbmVfcmVjb3JkKTogSGFuZGxlIHBzcF9w c3ByZWwuCgkocGFyc2VfcHJlZGljYXRlX2FuZF9vcGVyYW5kKTogTmV3LgoJ KGNvbnZlcnRfZXhwcl90b19hYl9yZWcpOiBUd28gbmV3IHBhcmFtZXRlcnMu IFJldHVybiB2b2lkLiBBbHdheXMKCWluaXRpYWxpemUgb3V0cHV0IHZhbHVl cy4gRW1pdCBkaWFnbm9zdGljIGNhc2UgaGVyZS4KCShjb252ZXJ0X2V4cHJf dG9feHlfcmVnKTogTGlrZXdpc2UuIERvbid0IGFsbG93IHIwLCBmMCwgYW5k IGYxLgoJKGFkZF91bndpbmRfZW50cnkpOiBOZXcgc2Vjb25kIHBhcmFtZXRl ci4gQWxsb3cgZmlyc3QgcGFyYW1ldGVyIHRvCgliZSBOVUxMLiBQYXJzZSBv cHRpb25hbCB0YWcsIGVtaXQgd2FybmluZyBhYm91dCBmdXJ0aGVyIHN1cHBv cnQgZm9yCglpdCBvdGhlcndpc2UgYmVpbmcgbWlzc2luZy4gQ2hlY2sgZW5k LW9mLWxpbmUgd2hlbiByZXF1ZXN0ZWQuCgkoZG90X2ZmcmFtZSk6IENsZWFy IG9wZXJhbmQgd2hlbiB3cm9uZy4gQWxsb3cgdGFnLgoJKGRvdF92ZnJhbWUp OiBMaWtld2lzZS4KCShkb3RfdmZyYW1lc3ApOiBMaWtld2lzZS4gUmVuYW1l IHBhcmFtZXRlciwgaXNzdWUgd2FybmluZyB3aGVuIHBzcAoJcmVsYXRpdmUu CgkoZG90X3ZmcmFtZXBzcCk6IFJlbW92ZS4KCShkb3RfYWx0cnApOiBDbGVh ciBvcGVyYW5kIHdoZW4gd3JvbmcuIEFsbG93IHRhZy4KCShkb3Rfc2F2ZSk6 IExpa2V3aXNlLiBMZXQgZGVmYXVsdCBjYXNlIGFsc28gZ28gdGhyb3VnaAoJ YWRkX3Vud2luZF9lbnRyeS4KCShkb3Rfc2F2ZW1lbSk6IExpa2V3aXNlLgoJ KGRvdF9yZXN0b3JlKTogRG9uJ3QgcmV0dXJuIHdoZW4gd3Jvbmcgb3BlcmFu ZC4gQWxsb3cgdGFnLgoJKGRvdF9zcGlsbHJlZywgZG90X3NwaWxscmVnX3Ap OiBDb21iaW5lLiBTaW1wbGlmeSBieSB1c2luZwoJcGFyc2VfcHJlZGljYXRl X2FuZF9vcGVyYW5kIGFuZCB0aGUgbmV3IGFyZ3VtZW50cyB0bwoJY29udmVy dF9leHByX3RvX2FiX3JlZyBhbmQgY29udmVydF9leHByX3RvX3h5X3JlZy4g RG9uJ3QgcmV0dXJuCgl3aGVuIHdyb25nIG9wZXJhbmQuIEFsbG93IHRhZy4K CShkb3RfcmVzdG9yZXJlZywgZG90X3Jlc3RvcmVyZWdfcCk6IExpa2V3aXNl LgoJKGRvdF9zcGlsbG1lbSwgZG90X3NwaWxsbWVtX3ApOiBMaWtld2lzZS4K CShkb3Rfc2F2ZWcpOiBDbGVhciBvcGVyYW5kIHdoZW4gd3JvbmcuIFBlcmZv cm0gdGlnaHRlciBvcGVyYW5kCgljaGVja3MuIEFsbG93IHRhZy4KCShkb3Rf c2F2ZWYpOiBMaWtld2lzZS4KCShkb3Rfc2F2ZWIpOiBMaWtld2lzZS4KCShk b3Rfc2F2ZWdmKTogTGlrZXdpc2UuCgkoZG90X3NwaWxsKTogUmVtb3ZlIGVu ZC1vZi1saW5lIGNoZWNrLiAJQ29tYmluZS4gU2ltcGxpZnkgYnkgdXNpbmcK CXBhcnNlX3ByZWRpY2F0ZV9hbmRfb3BlcmFuZCBhbmQgdGhlIG5ldyBhcmd1 bWVudHMgdG8KCWNvbnZlcnRfZXhwcl90b19hYl9yZWcgYW5kIGNvbnZlcnRf ZXhwcl90b194eV9yZWcuIERvbid0IHJldHVybgoJd2hlbiB3cm9uZyBvcGVy YW5kLiBBbGxvdyB0YWcuCgkocG9wY291bnQpOiBOZXcuCgkoZG90X2xhYmVs X3N0YXRlKTogRG9uJ3QgcmV0dXJuIHdoZW4gd3Jvbmcgb3BlcmFuZC4KCShk b3RfY29weV9zdGF0ZSk6IExpa2V3aXNlLgoJKGRvdF91bndhYmkpOiBMaWtl d2lzZS4gQ2hlY2sgaWYgaW4gcHJvbG9ndWUuCgkoZG90X2JvZHkpOiBEb24n dCBjYWxsIGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUuCgkoZG90X3Byb2xv Z3VlKTogVHlwZSBvZiBtYXNrIGFuZCBncnNhdmUgaXMgdW5zaWduZWQuIFBl cmZvcm0gdGlnaHRlcgoJb3BlcmFuZCBjaGVja3MuCgkobWRfcHNldWRvX3Rh YmxlKTogQWxzbyB1c2UgZG90X3Jlc3RvcmVyZWcgZm9yIC5yZXN0b3JlcmVn LnAuIEFsc28KCXVzZSBkb3Rfc3BpbGxyZWcgZm9yIC5zcGlsbHJlZy5wLiBB bHNvIHVzZSBkb3Rfc3BpbGxtZW0gZm9yCgkuc3BpbGxwc3AucCBhbmQgLnNw aWxsc3AucC4gQWxzbyB1c2UgZG90X3ZmcmFtZXNwIGZvciAudmZyYW1lcHNw LgoJKHBhcnNlX29wZXJhbmQpOiBOZXcgc2Vjb25kIHBhcmFtZXRlci4gRG9u J3QgZGVhbCB3aXRoICd9JyBoZXJlCglhbnltb3JlLiBEb24ndCBhZHZhbmNl IHBhc3QgZW5kLW9mLWxpbmUuCgkocGFyc2Vfb3BlcmFuZHMpOiBQYXNzIHNl Y29uZCBhcmd1bWVudCB0byBwYXJzZV9vcGVyYW5kLgoJKGlhNjRfc3RhcnRf bGluZSk6IFByZXZlbnQgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgdGhyb3VnaAoJ aW5wdXRfbGluZV9wb2ludGVyLiBEZWFsIHdpdGggJ30nIGhlcmUuCgkoaWE2 NF91bnJlY29nbml6ZWRfbGluZSk6IERvbid0IGRlYWwgd2l0aCAnfScgaGVy ZS4KCShkb3RfYWxpYXMpOiBVc2UgaWdub3JlX3Jlc3Rfb2ZfbGluZSBub3Qg aXRzIGRlcHJlY2F0ZWQgYWxpYXMKCWRpc2NhcmRfcmVzdF9vZl9saW5lLgoK Z2FzL3Rlc3RzdWl0ZS8KMjAwNS0wNi0yNyAgSmFuIEJldWxpY2ggIDxqYmV1 bGljaEBub3ZlbGwuY29tPgoKCSogZ2FzL2lhNjQvZ3JvdXAtMi5zOiBVc2Ug cmVnaXN0ZXIgYXMgc2Vjb25kIG9wZXJhbmQgb2YgLnByb2xvZ3VlLgoJKiBn YXMvaWE2NC91bndpbmQtZXJyLnM6IEFkZCBjaGVjayBmb3IgLnZmcmFtZXNw LgoJKiBnYXMvaWE2NC91bndpbmQtZXJyLmw6IEFkanVzdC4KCSogZ2FzL2lh NjQvc3RyYW5nZS5bc2RdOiBOZXcuCgkqIGdhcy9pYTY0L3Vud2luZC1iYWQu W3NsXTogTmV3LgoJKiBnYXMvaWE2NC91bndpbmQtb2suW3NkXTogTmV3LgoJ KiBnYXMvaWE2NC9pYTY0LmV4cDogUnVuIG5ldyB0ZXN0cy4KCi0tLSAvaG9t ZS9qYmV1bGljaC9zcmMvYmludXRpbHMvbWFpbmxpbmUvMjAwNS0wNi0yNy9n YXMvY29uZmlnL3RjLWlhNjQuYwkyMDA1LTA2LTE2IDEwOjQyOjE3LjAwMDAw MDAwMCArMDIwMAorKysgMjAwNS0wNi0yNy9nYXMvY29uZmlnL3RjLWlhNjQu YwkyMDA1LTA2LTI3IDEyOjA0OjI1LjkxODg3NjIyMyArMDIwMApAQCAtMTkz LDcgKzE5Myw3IEBAIGNvbnN0IGNoYXIgbGluZV9jb21tZW50X2NoYXJzW10g PSAiIyI7CiAKIC8qIENoYXJhY3RlcnMgd2hpY2ggbWF5IGJlIHVzZWQgdG8g c2VwYXJhdGUgbXVsdGlwbGUgY29tbWFuZHMgb24gYQogICAgc2luZ2xlIGxp bmUuICAqLwotY29uc3QgY2hhciBsaW5lX3NlcGFyYXRvcl9jaGFyc1tdID0g IjsiOworY29uc3QgY2hhciBsaW5lX3NlcGFyYXRvcl9jaGFyc1tdID0gIjt7 fSI7CiAKIC8qIENoYXJhY3RlcnMgd2hpY2ggYXJlIHVzZWQgdG8gaW5kaWNh dGUgYW4gZXhwb25lbnQgaW4gYSBmbG9hdGluZwogICAgcG9pbnQgbnVtYmVy LiAgKi8KQEAgLTczNiw2ICs3MzYsNyBAQCBzdGF0aWMgc3RydWN0CiAgIC8q IFRSVUUgaWYgcHJvY2Vzc2luZyB1bndpbmQgZGlyZWN0aXZlcyBpbiBhIHBy b2xvZ3VlIHJlZ2lvbi4gICovCiAgIHVuc2lnbmVkIGludCBwcm9sb2d1ZSA6 IDE7CiAgIHVuc2lnbmVkIGludCBwcm9sb2d1ZV9tYXNrIDogNDsKKyAgdW5z aWduZWQgaW50IHByb2xvZ3VlX2dyIDogNzsKICAgdW5zaWduZWQgaW50IGJv ZHkgOiAxOwogICB1bnNpZ25lZCBpbnQgaW5zbiA6IDE7CiAgIHVuc2lnbmVk IGludCBwcm9sb2d1ZV9jb3VudDsJLyogbnVtYmVyIG9mIC5wcm9sb2d1ZXMg c2VlbiBzbyBmYXIgKi8KQEAgLTc2MiwxMSArNzYzLDkgQEAgc3RhdGljIHZv aWQgZG90X3Byb2MgUEFSQU1TICgoaW50KSk7CiBzdGF0aWMgdm9pZCBkb3Rf ZmZyYW1lIFBBUkFNUyAoKGludCkpOwogc3RhdGljIHZvaWQgZG90X3ZmcmFt ZSBQQVJBTVMgKChpbnQpKTsKIHN0YXRpYyB2b2lkIGRvdF92ZnJhbWVzcCBQ QVJBTVMgKChpbnQpKTsKLXN0YXRpYyB2b2lkIGRvdF92ZnJhbWVwc3AgUEFS QU1TICgoaW50KSk7CiBzdGF0aWMgdm9pZCBkb3Rfc2F2ZSBQQVJBTVMgKChp bnQpKTsKIHN0YXRpYyB2b2lkIGRvdF9yZXN0b3JlIFBBUkFNUyAoKGludCkp Owogc3RhdGljIHZvaWQgZG90X3Jlc3RvcmVyZWcgUEFSQU1TICgoaW50KSk7 Ci1zdGF0aWMgdm9pZCBkb3RfcmVzdG9yZXJlZ19wIFBBUkFNUyAoKGludCkp Owogc3RhdGljIHZvaWQgZG90X2hhbmRsZXJkYXRhICBQQVJBTVMgKChpbnQp KTsKIHN0YXRpYyB2b2lkIGRvdF91bndlbnRyeSBQQVJBTVMgKChpbnQpKTsK IHN0YXRpYyB2b2lkIGRvdF9hbHRycCBQQVJBTVMgKChpbnQpKTsKQEAgLTc3 OCw4ICs3NzcsNiBAQCBzdGF0aWMgdm9pZCBkb3Rfc2F2ZWdmIFBBUkFNUyAo KGludCkpOwogc3RhdGljIHZvaWQgZG90X3NwaWxsIFBBUkFNUyAoKGludCkp Owogc3RhdGljIHZvaWQgZG90X3NwaWxscmVnIFBBUkFNUyAoKGludCkpOwog c3RhdGljIHZvaWQgZG90X3NwaWxsbWVtIFBBUkFNUyAoKGludCkpOwotc3Rh dGljIHZvaWQgZG90X3NwaWxscmVnX3AgUEFSQU1TICgoaW50KSk7Ci1zdGF0 aWMgdm9pZCBkb3Rfc3BpbGxtZW1fcCBQQVJBTVMgKChpbnQpKTsKIHN0YXRp YyB2b2lkIGRvdF9sYWJlbF9zdGF0ZSBQQVJBTVMgKChpbnQpKTsKIHN0YXRp YyB2b2lkIGRvdF9jb3B5X3N0YXRlIFBBUkFNUyAoKGludCkpOwogc3RhdGlj IHZvaWQgZG90X3Vud2FiaSBQQVJBTVMgKChpbnQpKTsKQEAgLTgwOSwxNCAr ODA2LDE0IEBAIHN0YXRpYyB2b2lkIGRvdF9zZXJpYWxpemUgUEFSQU1TICgo aW50KSkKIHN0YXRpYyB2b2lkIGRvdF9kdl9tb2RlIFBBUkFNUyAoKGludCkp Owogc3RhdGljIHZvaWQgZG90X2VudHJ5IFBBUkFNUyAoKGludCkpOwogc3Rh dGljIHZvaWQgZG90X21lbV9vZmZzZXQgUEFSQU1TICgoaW50KSk7Ci1zdGF0 aWMgdm9pZCBhZGRfdW53aW5kX2VudHJ5IFBBUkFNUygodW53X3JlY19saXN0 ICpwdHIpKTsKK3N0YXRpYyB2b2lkIGFkZF91bndpbmRfZW50cnkgUEFSQU1T KCh1bndfcmVjX2xpc3QgKiwgaW50KSk7CiBzdGF0aWMgc3ltYm9sUyAqZGVj bGFyZV9yZWdpc3RlciBQQVJBTVMgKChjb25zdCBjaGFyICpuYW1lLCBpbnQg cmVnbnVtKSk7CiBzdGF0aWMgdm9pZCBkZWNsYXJlX3JlZ2lzdGVyX3NldCBQ QVJBTVMgKChjb25zdCBjaGFyICosIGludCwgaW50KSk7CiBzdGF0aWMgdW5z aWduZWQgaW50IG9wZXJhbmRfd2lkdGggUEFSQU1TICgoZW51bSBpYTY0X29w bmQpKTsKIHN0YXRpYyBlbnVtIG9wZXJhbmRfbWF0Y2hfcmVzdWx0IG9wZXJh bmRfbWF0Y2ggUEFSQU1TICgoY29uc3Qgc3RydWN0IGlhNjRfb3Bjb2RlICpp ZGVzYywKIAkJCQkJCQlpbnQgaW5kZXgsCiAJCQkJCQkJZXhwcmVzc2lvblMg KmUpKTsKLXN0YXRpYyBpbnQgcGFyc2Vfb3BlcmFuZCBQQVJBTVMgKChleHBy ZXNzaW9uUyAqZSkpOworc3RhdGljIGludCBwYXJzZV9vcGVyYW5kIFBBUkFN UyAoKGV4cHJlc3Npb25TICosIGludCkpOwogc3RhdGljIHN0cnVjdCBpYTY0 X29wY29kZSAqIHBhcnNlX29wZXJhbmRzIFBBUkFNUyAoKHN0cnVjdCBpYTY0 X29wY29kZSAqKSk7CiBzdGF0aWMgdm9pZCBidWlsZF9pbnNuIFBBUkFNUyAo KHN0cnVjdCBzbG90ICosIGJmZF92bWEgKikpOwogc3RhdGljIHZvaWQgZW1p dF9vbmVfYnVuZGxlIFBBUkFNUyAoKHZvaWQpKTsKQEAgLTkzNywxNSArOTM0 LDExIEBAIHN0YXRpYyB1bndfcmVjX2xpc3QgKm91dHB1dF91bndhYmkgUEFS QU0KIHN0YXRpYyB1bndfcmVjX2xpc3QgKm91dHB1dF9lcGlsb2d1ZSBQQVJB TVMgKCh1bnNpZ25lZCBsb25nKSk7CiBzdGF0aWMgdW53X3JlY19saXN0ICpv dXRwdXRfbGFiZWxfc3RhdGUgUEFSQU1TICgodW5zaWduZWQgbG9uZykpOwog c3RhdGljIHVud19yZWNfbGlzdCAqb3V0cHV0X2NvcHlfc3RhdGUgUEFSQU1T ICgodW5zaWduZWQgbG9uZykpOwotc3RhdGljIHVud19yZWNfbGlzdCAqb3V0 cHV0X3NwaWxsX3BzcHJlbCBQQVJBTVMgKCh1bnNpZ25lZCBpbnQsIHVuc2ln bmVkIGludCwgdW5zaWduZWQgaW50KSk7Ci1zdGF0aWMgdW53X3JlY19saXN0 ICpvdXRwdXRfc3BpbGxfc3ByZWwgUEFSQU1TICgodW5zaWduZWQgaW50LCB1 bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkpOwotc3RhdGljIHVud19yZWNf bGlzdCAqb3V0cHV0X3NwaWxsX3BzcHJlbF9wIFBBUkFNUyAoKHVuc2lnbmVk IGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsCitzdGF0aWMgdW53 X3JlY19saXN0ICpvdXRwdXRfc3BpbGxfcHNwcmVsIFBBUkFNUyAoKHVuc2ln bmVkIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsCiAJCQkJCQkg ICAgdW5zaWduZWQgaW50KSk7Ci1zdGF0aWMgdW53X3JlY19saXN0ICpvdXRw dXRfc3BpbGxfc3ByZWxfcCBQQVJBTVMgKCh1bnNpZ25lZCBpbnQsIHVuc2ln bmVkIGludCwgdW5zaWduZWQgaW50LAorc3RhdGljIHVud19yZWNfbGlzdCAq b3V0cHV0X3NwaWxsX3NwcmVsIFBBUkFNUyAoKHVuc2lnbmVkIGludCwgdW5z aWduZWQgaW50LCB1bnNpZ25lZCBpbnQsCiAJCQkJCQkgICB1bnNpZ25lZCBp bnQpKTsKIHN0YXRpYyB1bndfcmVjX2xpc3QgKm91dHB1dF9zcGlsbF9yZWcg UEFSQU1TICgodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVk IGludCwKLQkJCQkJICAgICAgIHVuc2lnbmVkIGludCkpOwotc3RhdGljIHVu d19yZWNfbGlzdCAqb3V0cHV0X3NwaWxsX3JlZ19wIFBBUkFNUyAoKHVuc2ln bmVkIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsCiAJCQkJCQkg dW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpKTsKIHN0YXRpYyB2b2lkIHBy b2Nlc3Nfb25lX3JlY29yZCBQQVJBTVMgKCh1bndfcmVjX2xpc3QgKiwgdmJ5 dGVfZnVuYykpOwogc3RhdGljIHZvaWQgcHJvY2Vzc191bndfcmVjb3JkcyBQ QVJBTVMgKCh1bndfcmVjX2xpc3QgKiwgdmJ5dGVfZnVuYykpOwpAQCAtOTU2 LDggKzk0OSw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNsb3RfaW5kZXgg UEFSQU1TICgKIAkJCQkJIGludCkpOwogc3RhdGljIHVud19yZWNfbGlzdCAq b3B0aW1pemVfdW53X3JlY29yZHMgUEFSQU1TICgodW53X3JlY19saXN0ICop KTsKIHN0YXRpYyB2b2lkIGZpeHVwX3Vud19yZWNvcmRzIFBBUkFNUyAoKHVu d19yZWNfbGlzdCAqLCBpbnQpKTsKLXN0YXRpYyBpbnQgY29udmVydF9leHBy X3RvX2FiX3JlZyBQQVJBTVMgKChleHByZXNzaW9uUyAqLCB1bnNpZ25lZCBp bnQgKiwgdW5zaWduZWQgaW50ICopKTsKLXN0YXRpYyBpbnQgY29udmVydF9l eHByX3RvX3h5X3JlZyBQQVJBTVMgKChleHByZXNzaW9uUyAqLCB1bnNpZ25l ZCBpbnQgKiwgdW5zaWduZWQgaW50ICopKTsKK3N0YXRpYyBpbnQgcGFyc2Vf cHJlZGljYXRlX2FuZF9vcGVyYW5kIFBBUkFNUyAoKGV4cHJlc3Npb25TICos IHVuc2lnbmVkICosIGNvbnN0IGNoYXIgKikpOworc3RhdGljIHZvaWQgY29u dmVydF9leHByX3RvX2FiX3JlZyBQQVJBTVMgKChjb25zdCBleHByZXNzaW9u UyAqLCB1bnNpZ25lZCBpbnQgKiwgdW5zaWduZWQgaW50ICosIGNvbnN0IGNo YXIgKiwgaW50KSk7CitzdGF0aWMgdm9pZCBjb252ZXJ0X2V4cHJfdG9feHlf cmVnIFBBUkFNUyAoKGNvbnN0IGV4cHJlc3Npb25TICosIHVuc2lnbmVkIGlu dCAqLCB1bnNpZ25lZCBpbnQgKiwgY29uc3QgY2hhciAqLCBpbnQpKTsKIHN0 YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3NhdmVkX3Byb2xvZ3VlX2NvdW50IFBB UkFNUyAoKHVuc2lnbmVkIGxvbmcpKTsKIHN0YXRpYyB2b2lkIHNhdmVfcHJv bG9ndWVfY291bnQgUEFSQU1TICgodW5zaWduZWQgbG9uZywgdW5zaWduZWQg aW50KSk7CiBzdGF0aWMgdm9pZCBmcmVlX3NhdmVkX3Byb2xvZ3VlX2NvdW50 cyBQQVJBTVMgKCh2b2lkKSk7CkBAIC0yMjg4LDM5ICsyMjgyLDEzIEBAIG91 dHB1dF9jb3B5X3N0YXRlICh1bnNpZ25lZCBsb25nIGxhYmVsKQogfQogCiBz dGF0aWMgdW53X3JlY19saXN0ICoKLW91dHB1dF9zcGlsbF9wc3ByZWwgKGFi LCByZWcsIG9mZnNldCkKLSAgICAgdW5zaWduZWQgaW50IGFiOwotICAgICB1 bnNpZ25lZCBpbnQgcmVnOwotICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0Owot ewotICB1bndfcmVjX2xpc3QgKnB0ciA9IGFsbG9jX3JlY29yZCAoc3BpbGxf cHNwcmVsKTsKLSAgcHRyLT5yLnJlY29yZC54LmFiID0gYWI7Ci0gIHB0ci0+ ci5yZWNvcmQueC5yZWcgPSByZWc7Ci0gIHB0ci0+ci5yZWNvcmQueC5wc3Bv ZmYgPSBFTkNPREVEX1BTUF9PRkZTRVQgKG9mZnNldCk7Ci0gIHJldHVybiBw dHI7Ci19Ci0KLXN0YXRpYyB1bndfcmVjX2xpc3QgKgotb3V0cHV0X3NwaWxs X3NwcmVsIChhYiwgcmVnLCBvZmZzZXQpCi0gICAgIHVuc2lnbmVkIGludCBh YjsKLSAgICAgdW5zaWduZWQgaW50IHJlZzsKLSAgICAgdW5zaWduZWQgaW50 IG9mZnNldDsKLXsKLSAgdW53X3JlY19saXN0ICpwdHIgPSBhbGxvY19yZWNv cmQgKHNwaWxsX3NwcmVsKTsKLSAgcHRyLT5yLnJlY29yZC54LmFiID0gYWI7 Ci0gIHB0ci0+ci5yZWNvcmQueC5yZWcgPSByZWc7Ci0gIHB0ci0+ci5yZWNv cmQueC5zcG9mZiA9IG9mZnNldCAvIDQ7Ci0gIHJldHVybiBwdHI7Ci19Ci0K LXN0YXRpYyB1bndfcmVjX2xpc3QgKgotb3V0cHV0X3NwaWxsX3BzcHJlbF9w IChhYiwgcmVnLCBvZmZzZXQsIHByZWRpY2F0ZSkKK291dHB1dF9zcGlsbF9w c3ByZWwgKGFiLCByZWcsIG9mZnNldCwgcHJlZGljYXRlKQogICAgICB1bnNp Z25lZCBpbnQgYWI7CiAgICAgIHVuc2lnbmVkIGludCByZWc7CiAgICAgIHVu c2lnbmVkIGludCBvZmZzZXQ7CiAgICAgIHVuc2lnbmVkIGludCBwcmVkaWNh dGU7CiB7Ci0gIHVud19yZWNfbGlzdCAqcHRyID0gYWxsb2NfcmVjb3JkIChz cGlsbF9wc3ByZWxfcCk7CisgIHVud19yZWNfbGlzdCAqcHRyID0gYWxsb2Nf cmVjb3JkIChwcmVkaWNhdGUgPyBzcGlsbF9wc3ByZWxfcCA6IHNwaWxsX3Bz cHJlbCk7CiAgIHB0ci0+ci5yZWNvcmQueC5hYiA9IGFiOwogICBwdHItPnIu cmVjb3JkLngucmVnID0gcmVnOwogICBwdHItPnIucmVjb3JkLngucHNwb2Zm ID0gRU5DT0RFRF9QU1BfT0ZGU0VUIChvZmZzZXQpOwpAQCAtMjMyOSwxMyAr MjI5NywxMyBAQCBvdXRwdXRfc3BpbGxfcHNwcmVsX3AgKGFiLCByZWcsIG9m ZnNldCwgCiB9CiAKIHN0YXRpYyB1bndfcmVjX2xpc3QgKgotb3V0cHV0X3Nw aWxsX3NwcmVsX3AgKGFiLCByZWcsIG9mZnNldCwgcHJlZGljYXRlKQorb3V0 cHV0X3NwaWxsX3NwcmVsIChhYiwgcmVnLCBvZmZzZXQsIHByZWRpY2F0ZSkK ICAgICAgdW5zaWduZWQgaW50IGFiOwogICAgICB1bnNpZ25lZCBpbnQgcmVn OwogICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwogICAgICB1bnNpZ25lZCBp bnQgcHJlZGljYXRlOwogewotICB1bndfcmVjX2xpc3QgKnB0ciA9IGFsbG9j X3JlY29yZCAoc3BpbGxfc3ByZWxfcCk7CisgIHVud19yZWNfbGlzdCAqcHRy ID0gYWxsb2NfcmVjb3JkIChwcmVkaWNhdGUgPyBzcGlsbF9zcHJlbF9wIDog c3BpbGxfc3ByZWwpOwogICBwdHItPnIucmVjb3JkLnguYWIgPSBhYjsKICAg cHRyLT5yLnJlY29yZC54LnJlZyA9IHJlZzsKICAgcHRyLT5yLnJlY29yZC54 LnNwb2ZmID0gb2Zmc2V0IC8gNDsKQEAgLTIzNDQsMjkgKzIzMTIsMTQgQEAg b3V0cHV0X3NwaWxsX3NwcmVsX3AgKGFiLCByZWcsIG9mZnNldCwgcAogfQog CiBzdGF0aWMgdW53X3JlY19saXN0ICoKLW91dHB1dF9zcGlsbF9yZWcgKGFi LCByZWcsIHRhcmdfcmVnLCB4eSkKLSAgICAgdW5zaWduZWQgaW50IGFiOwot ICAgICB1bnNpZ25lZCBpbnQgcmVnOwotICAgICB1bnNpZ25lZCBpbnQgdGFy Z19yZWc7Ci0gICAgIHVuc2lnbmVkIGludCB4eTsKLXsKLSAgdW53X3JlY19s aXN0ICpwdHIgPSBhbGxvY19yZWNvcmQgKHNwaWxsX3JlZyk7Ci0gIHB0ci0+ ci5yZWNvcmQueC5hYiA9IGFiOwotICBwdHItPnIucmVjb3JkLngucmVnID0g cmVnOwotICBwdHItPnIucmVjb3JkLngudHJlZyA9IHRhcmdfcmVnOwotICBw dHItPnIucmVjb3JkLngueHkgPSB4eTsKLSAgcmV0dXJuIHB0cjsKLX0KLQot c3RhdGljIHVud19yZWNfbGlzdCAqCi1vdXRwdXRfc3BpbGxfcmVnX3AgKGFi LCByZWcsIHRhcmdfcmVnLCB4eSwgcHJlZGljYXRlKQorb3V0cHV0X3NwaWxs X3JlZyAoYWIsIHJlZywgdGFyZ19yZWcsIHh5LCBwcmVkaWNhdGUpCiAgICAg IHVuc2lnbmVkIGludCBhYjsKICAgICAgdW5zaWduZWQgaW50IHJlZzsKICAg ICAgdW5zaWduZWQgaW50IHRhcmdfcmVnOwogICAgICB1bnNpZ25lZCBpbnQg eHk7CiAgICAgIHVuc2lnbmVkIGludCBwcmVkaWNhdGU7CiB7Ci0gIHVud19y ZWNfbGlzdCAqcHRyID0gYWxsb2NfcmVjb3JkIChzcGlsbF9yZWdfcCk7Cisg IHVud19yZWNfbGlzdCAqcHRyID0gYWxsb2NfcmVjb3JkIChwcmVkaWNhdGUg PyBzcGlsbF9yZWdfcCA6IHNwaWxsX3JlZyk7CiAgIHB0ci0+ci5yZWNvcmQu eC5hYiA9IGFiOwogICBwdHItPnIucmVjb3JkLngucmVnID0gcmVnOwogICBw dHItPnIucmVjb3JkLngudHJlZyA9IHRhcmdfcmVnOwpAQCAtMjU3Nyw2ICsy NTMwLDI4IEBAIGNhbGNfcmVjb3JkX3NpemUgKGxpc3QpCiAgIHJldHVybiB2 Ynl0ZV9jb3VudDsKIH0KIAorLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgYml0 cyBzZXQgaW4gdGhlIGlucHV0IHZhbHVlLgorICAgUGVyaGFwcyB0aGlzIGhh cyBhIGJldHRlciBwbGFjZS4uLiAgKi8KKyNpZiBfX0dOVUNfXyA+IDMgfHwg KF9fR05VQ19fID09IDMgJiYgX19HTlVDX01JTk9SX18gPj0gNCkKKyMgZGVm aW5lIHBvcGNvdW50IF9fYnVpbHRpbl9wb3Bjb3VudAorI2Vsc2UKK3N0YXRp YyBpbnQKK3BvcGNvdW50ICh1bnNpZ25lZCB4KQoreworICBzdGF0aWMgY29u c3QgdW5zaWduZWQgY2hhciBwb3BjbnRbMTZdID0KKyAgICB7CisgICAgICAw LCAxLCAxLCAyLAorICAgICAgMSwgMiwgMiwgMywKKyAgICAgIDEsIDIsIDIs IDMsCisgICAgICAyLCAzLCAzLCA0CisgICAgfTsKKworICBpZiAoeCA8IE5F TEVNUyAocG9wY250KSkKKyAgICByZXR1cm4gcG9wY250W3hdOworICByZXR1 cm4gcG9wY250W3ggJSBORUxFTVMgKHBvcGNudCldICsgcG9wY291bnQgKHgg LyBORUxFTVMgKHBvcGNudCkpOworfQorI2VuZGlmCisKIC8qIFVwZGF0ZSBJ TUFTSyBiaXRtYXNrIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBvbmUgb3Ig bW9yZSByZWdpc3RlcnMKICAgIG9mIHR5cGUgVFlQRSBhcmUgc2F2ZWQgc3Rh cnRpbmcgYXQgaW5zdHJ1Y3Rpb24gd2l0aCBpbmRleCBULiAgSWYgTgogICAg Yml0cyBhcmUgc2V0IGluIFJFR01BU0ssIGl0IGlzIGFzc3VtZWQgdGhhdCBp bnN0cnVjdGlvbnMgVCB0aHJvdWdoCkBAIC0zMDAwLDE3ICsyOTc1LDQzIEBA IGlhNjRfY29udmVydF9mcmFnIChmcmFnUyAqZnJhZykKIH0KIAogc3RhdGlj IGludAotY29udmVydF9leHByX3RvX2FiX3JlZyAoZSwgYWIsIHJlZ3ApCi0g ICAgIGV4cHJlc3Npb25TICplOworcGFyc2VfcHJlZGljYXRlX2FuZF9vcGVy YW5kIChlLCBxcCwgcG8pCisgICAgIGV4cHJlc3Npb25TICogZTsKKyAgICAg dW5zaWduZWQgKiBxcDsKKyAgICAgY29uc3QgY2hhciAqIHBvOworeworICBp bnQgc2VwID0gcGFyc2Vfb3BlcmFuZCAoZSwgJywnKTsKKworICAqcXAgPSBl LT5YX2FkZF9udW1iZXIgLSBSRUdfUDsKKyAgaWYgKGUtPlhfb3AgIT0gT19y ZWdpc3RlciB8fCAqcXAgPiA2MykKKyAgICB7CisgICAgICBhc19iYWQgKCJG aXJzdCBvcGVyYW5kIHRvIC4lcyBtdXN0IGJlIGEgcHJlZGljYXRlIiwgcG8p OworICAgICAgKnFwID0gMDsKKyAgICB9CisgIGVsc2UgaWYgKCpxcCA9PSAw KQorICAgIGFzX3dhcm4gKCJQb2ludGxlc3MgdXNlIG9mIHAwIGFzIGZpcnN0 IG9wZXJhbmQgdG8gLiVzIiwgcG8pOworICBpZiAoc2VwID09ICcsJykKKyAg ICBzZXAgPSBwYXJzZV9vcGVyYW5kIChlLCAnLCcpOworICBlbHNlCisgICAg ZS0+WF9vcCA9IE9fYWJzZW50OworICByZXR1cm4gc2VwOworfQorCitzdGF0 aWMgdm9pZAorY29udmVydF9leHByX3RvX2FiX3JlZyAoZSwgYWIsIHJlZ3As IHBvLCBuKQorICAgICBjb25zdCBleHByZXNzaW9uUyAqZTsKICAgICAgdW5z aWduZWQgaW50ICphYjsKICAgICAgdW5zaWduZWQgaW50ICpyZWdwOworICAg ICBjb25zdCBjaGFyICogcG87CisgICAgIGludCBuOwogewotICB1bnNpZ25l ZCBpbnQgcmVnOworICB1bnNpZ25lZCBpbnQgcmVnID0gZS0+WF9hZGRfbnVt YmVyOworCisgICphYiA9ICpyZWdwID0gMDsgLyogQW55dGhpbmcgdmFsaWQg aXMgZ29vZCBoZXJlLiAgKi8KIAogICBpZiAoZS0+WF9vcCAhPSBPX3JlZ2lz dGVyKQotICAgIHJldHVybiAwOworICAgIHJlZyA9IFJFR19HUjsgLyogQW55 dGhpbmcgaW52YWxpZCBpcyBnb29kIGhlcmUuICAqLwogCi0gIHJlZyA9IGUt PlhfYWRkX251bWJlcjsKICAgaWYgKHJlZyA+PSAoUkVHX0dSICsgNCkgJiYg cmVnIDw9IChSRUdfR1IgKyA3KSkKICAgICB7CiAgICAgICAqYWIgPSAwOwpA QCAtMzA0NSwzMSArMzA0NiwzMyBAQCBjb252ZXJ0X2V4cHJfdG9fYWJfcmVn IChlLCBhYiwgcmVncCkKIAljYXNlIFJFR19BUiArIEFSX0xDOgkqcmVncCA9 IDEwOyBicmVhazsKIAogCWRlZmF1bHQ6Ci0JICByZXR1cm4gMDsKKwkgIGFz X2JhZCAoIk9wZXJhbmQgJWQgdG8gLiVzIG11c3QgYmUgYSBwcmVzZXJ2ZWQg cmVnaXN0ZXIiLCBuLCBwbyk7CisJICBicmVhazsKIAl9CiAgICAgfQotICBy ZXR1cm4gMTsKIH0KIAotc3RhdGljIGludAotY29udmVydF9leHByX3RvX3h5 X3JlZyAoZSwgeHksIHJlZ3ApCi0gICAgIGV4cHJlc3Npb25TICplOworc3Rh dGljIHZvaWQKK2NvbnZlcnRfZXhwcl90b194eV9yZWcgKGUsIHh5LCByZWdw LCBwbywgbikKKyAgICAgY29uc3QgZXhwcmVzc2lvblMgKmU7CiAgICAgIHVu c2lnbmVkIGludCAqeHk7CiAgICAgIHVuc2lnbmVkIGludCAqcmVncDsKKyAg ICAgY29uc3QgY2hhciAqIHBvOworICAgICBpbnQgbjsKIHsKLSAgdW5zaWdu ZWQgaW50IHJlZzsKKyAgdW5zaWduZWQgaW50IHJlZyA9IGUtPlhfYWRkX251 bWJlcjsKIAotICBpZiAoZS0+WF9vcCAhPSBPX3JlZ2lzdGVyKQotICAgIHJl dHVybiAwOworICAqeHkgPSAqcmVncCA9IDA7IC8qIEFueXRoaW5nIHZhbGlk IGlzIGdvb2QgaGVyZS4gICovCiAKLSAgcmVnID0gZS0+WF9hZGRfbnVtYmVy OworICBpZiAoZS0+WF9vcCAhPSBPX3JlZ2lzdGVyKQorICAgIHJlZyA9IFJF R19HUjsgLyogQW55dGhpbmcgaW52YWxpZCBpcyBnb29kIGhlcmUuICAqLwog Ci0gIGlmICgvKiByZWcgPj0gUkVHX0dSICYmICovIHJlZyA8PSAoUkVHX0dS ICsgMTI3KSkKKyAgaWYgKHJlZyA+PSAoUkVHX0dSICsgMSkgJiYgcmVnIDw9 IChSRUdfR1IgKyAxMjcpKQogICAgIHsKICAgICAgICp4eSA9IDA7CiAgICAg ICAqcmVncCA9IHJlZyAtIFJFR19HUjsKICAgICB9Ci0gIGVsc2UgaWYgKHJl ZyA+PSBSRUdfRlIgJiYgcmVnIDw9IChSRUdfRlIgKyAxMjcpKQorICBlbHNl IGlmIChyZWcgPj0gKFJFR19GUiArIDIpICYmIHJlZyA8PSAoUkVHX0ZSICsg MTI3KSkKICAgICB7CiAgICAgICAqeHkgPSAxOwogICAgICAgKnJlZ3AgPSBy ZWcgLSBSRUdfRlI7CkBAIC0zMDgwLDggKzMwODMsNyBAQCBjb252ZXJ0X2V4 cHJfdG9feHlfcmVnIChlLCB4eSwgcmVncCkKICAgICAgICpyZWdwID0gcmVn IC0gUkVHX0JSOwogICAgIH0KICAgZWxzZQotICAgIHJldHVybiAtMTsKLSAg cmV0dXJuIDE7CisgICAgYXNfYmFkICgiT3BlcmFuZCAlZCB0byAuJXMgbXVz dCBiZSBhIHdyaXRhYmxlIHJlZ2lzdGVyIiwgbiwgcG8pOwogfQogCiBzdGF0 aWMgdm9pZApAQCAtMzIxMCwxOCArMzIxMiw0OCBAQCBpbl9ib2R5IChjb25z dCBjaGFyICpkaXJlY3RpdmUpCiB9CiAKIHN0YXRpYyB2b2lkCi1hZGRfdW53 aW5kX2VudHJ5IChwdHIpCithZGRfdW53aW5kX2VudHJ5IChwdHIsIHNlcCkK ICAgICAgdW53X3JlY19saXN0ICpwdHI7CisgICAgIGludCBzZXA7CiB7Ci0g IGlmICh1bndpbmQudGFpbCkKLSAgICB1bndpbmQudGFpbC0+bmV4dCA9IHB0 cjsKLSAgZWxzZQotICAgIHVud2luZC5saXN0ID0gcHRyOwotICB1bndpbmQu dGFpbCA9IHB0cjsKKyAgaWYgKHB0cikKKyAgICB7CisgICAgICBpZiAodW53 aW5kLnRhaWwpCisJdW53aW5kLnRhaWwtPm5leHQgPSBwdHI7CisgICAgICBl bHNlCisJdW53aW5kLmxpc3QgPSBwdHI7CisgICAgICB1bndpbmQudGFpbCA9 IHB0cjsKKworICAgICAgLyogVGhlIGN1cnJlbnQgZW50cnkgY2FuIGluIGZh Y3QgYmUgYSBjaGFpbiBvZiB1bndpbmQgZW50cmllcy4gICovCisgICAgICBp ZiAodW53aW5kLmN1cnJlbnRfZW50cnkgPT0gTlVMTCkKKwl1bndpbmQuY3Vy cmVudF9lbnRyeSA9IHB0cjsKKyAgICB9CiAKICAgLyogVGhlIGN1cnJlbnQg ZW50cnkgY2FuIGluIGZhY3QgYmUgYSBjaGFpbiBvZiB1bndpbmQgZW50cmll cy4gICovCiAgIGlmICh1bndpbmQuY3VycmVudF9lbnRyeSA9PSBOVUxMKQog ICAgIHVud2luZC5jdXJyZW50X2VudHJ5ID0gcHRyOworCisgIGlmIChzZXAg PT0gJywnKQorICAgIHsKKyAgICAgIC8qIFBhcnNlIGEgdGFnIHBlcm1pdHRl ZCBmb3IgdGhlIGN1cnJlbnQgZGlyZWN0aXZlLiAgKi8KKyAgICAgIGludCBj aDsKKworICAgICAgU0tJUF9XSElURVNQQUNFICgpOworICAgICAgY2ggPSBn ZXRfc3ltYm9sX2VuZCAoKTsKKyAgICAgIC8qIEZJWE1FOiBGb3Igbm93LCBq dXN0IGlzc3VlIGEgd2FybmluZyB0aGF0IHRoaXMgaXNuJ3QgaW1wbGVtZW50 ZWQuICAqLworICAgICAgeworCXN0YXRpYyBpbnQgd2FybmVkOworCisJaWYg KCF3YXJuZWQpCisJICB7CisJICAgIHdhcm5lZCA9IDE7CisJICAgIGFzX3dh cm4gKCJUYWdzIG9uIHVud2luZCBwc2V1ZG8tb3BzIGFyZW4ndCBzdXBwb3J0 ZWQsIHlldCIpOworCSAgfQorICAgICAgfQorICAgICAgKmlucHV0X2xpbmVf cG9pbnRlciA9IGNoOworICAgIH0KKyAgaWYgKHNlcCAhPSBOT1RfQV9DSEFS KQorICAgIGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC0zMjI5LDE2ICszMjYxLDE5IEBAIGRvdF9mZnJhbWUg KGR1bW15KQogICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRDsKIHsK ICAgZXhwcmVzc2lvblMgZTsKKyAgaW50IHNlcDsKIAogICBpZiAoIWluX3By b2xvZ3VlICgiZmZyYW1lIikpCiAgICAgcmV0dXJuOwogCi0gIHBhcnNlX29w ZXJhbmQgKCZlKTsKKyAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUsICcsJyk7 CiAKICAgaWYgKGUuWF9vcCAhPSBPX2NvbnN0YW50KQotICAgIGFzX2JhZCAo Ik9wZXJhbmQgdG8gLmZmcmFtZSBtdXN0IGJlIGEgY29uc3RhbnQiKTsKLSAg ZWxzZQotICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9tZW1fc3RhY2tf ZiAoZS5YX2FkZF9udW1iZXIpKTsKKyAgICB7CisgICAgICBhc19iYWQgKCJG aXJzdCBvcGVyYW5kIHRvIC5mZnJhbWUgbXVzdCBiZSBhIGNvbnN0YW50Iik7 CisgICAgICBlLlhfYWRkX251bWJlciA9IDA7CisgICAgfQorICBhZGRfdW53 aW5kX2VudHJ5IChvdXRwdXRfbWVtX3N0YWNrX2YgKGUuWF9hZGRfbnVtYmVy KSwgc2VwKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMyNDcsNTggKzMyODIs NDcgQEAgZG90X3ZmcmFtZSAoZHVtbXkpCiB7CiAgIGV4cHJlc3Npb25TIGU7 CiAgIHVuc2lnbmVkIHJlZzsKKyAgaW50IHNlcDsKIAogICBpZiAoIWluX3By b2xvZ3VlICgidmZyYW1lIikpCiAgICAgcmV0dXJuOwogCi0gIHBhcnNlX29w ZXJhbmQgKCZlKTsKKyAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUsICcsJyk7 CiAgIHJlZyA9IGUuWF9hZGRfbnVtYmVyIC0gUkVHX0dSOwotICBpZiAoZS5Y X29wID09IE9fcmVnaXN0ZXIgJiYgcmVnIDwgMTI4KQorICBpZiAoZS5YX29w ICE9IE9fcmVnaXN0ZXIgfHwgcmVnID4gMTI3KQogICAgIHsKLSAgICAgIGFk ZF91bndpbmRfZW50cnkgKG91dHB1dF9tZW1fc3RhY2tfdiAoKSk7Ci0gICAg ICBpZiAoISAodW53aW5kLnByb2xvZ3VlX21hc2sgJiAyKSkKLQlhZGRfdW53 aW5kX2VudHJ5IChvdXRwdXRfcHNwX2dyIChyZWcpKTsKKyAgICAgIGFzX2Jh ZCAoIkZpcnN0IG9wZXJhbmQgdG8gLnZmcmFtZSBtdXN0IGJlIGEgZ2VuZXJh bCByZWdpc3RlciIpOworICAgICAgcmVnID0gMDsKICAgICB9Ci0gIGVsc2UK LSAgICBhc19iYWQgKCJGaXJzdCBvcGVyYW5kIHRvIC52ZnJhbWUgbXVzdCBi ZSBhIGdlbmVyYWwgcmVnaXN0ZXIiKTsKKyAgYWRkX3Vud2luZF9lbnRyeSAo b3V0cHV0X21lbV9zdGFja192ICgpLCBzZXApOworICBpZiAoISAodW53aW5k LnByb2xvZ3VlX21hc2sgJiAyKSkKKyAgICBhZGRfdW53aW5kX2VudHJ5IChv dXRwdXRfcHNwX2dyIChyZWcpLCBOT1RfQV9DSEFSKTsKKyAgZWxzZSBpZiAo cmVnICE9IHVud2luZC5wcm9sb2d1ZV9ncgorCQkgICsgKHVuc2lnbmVkKSBw b3Bjb3VudCAodW53aW5kLnByb2xvZ3VlX21hc2sgJiAoLTIgPDwgMSkpKQor ICAgIGFzX3dhcm4gKCJPcGVyYW5kIG9mIC52ZnJhbWUgY29udHJhZGljdHMg LnByb2xvZ3VlIik7CiB9CiAKIHN0YXRpYyB2b2lkCi1kb3RfdmZyYW1lc3Ag KGR1bW15KQotICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRDsKK2Rv dF92ZnJhbWVzcCAocHNwKQorICAgICBpbnQgcHNwOwogewogICBleHByZXNz aW9uUyBlOworICBpbnQgc2VwOwogCi0gIGlmICghaW5fcHJvbG9ndWUgKCJ2 ZnJhbWVzcCIpKQotICAgIHJldHVybjsKLQotICBwYXJzZV9vcGVyYW5kICgm ZSk7Ci0gIGlmIChlLlhfb3AgPT0gT19jb25zdGFudCkKLSAgICB7Ci0gICAg ICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfbWVtX3N0YWNrX3YgKCkpOwot ICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3BzcF9zcHJlbCAoZS5Y X2FkZF9udW1iZXIpKTsKLSAgICB9Ci0gIGVsc2UKLSAgICBhc19iYWQgKCJP cGVyYW5kIHRvIC52ZnJhbWVzcCBtdXN0IGJlIGEgY29uc3RhbnQgKHNwLXJl bGF0aXZlIG9mZnNldCkiKTsKLX0KLQotc3RhdGljIHZvaWQKLWRvdF92ZnJh bWVwc3AgKGR1bW15KQotICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNF RDsKLXsKLSAgZXhwcmVzc2lvblMgZTsKKyAgaWYgKHBzcCkKKyAgICBhc193 YXJuICgiLnZmcmFtZXBzcCBpcyBtZWFuaW5nbGVzcywgYXNzdW1pbmcgLnZm cmFtZXNwIHdhcyBtZWFudCIpOwogCi0gIGlmICghaW5fcHJvbG9ndWUgKCJ2 ZnJhbWVwc3AiKSkKKyAgaWYgKCFpbl9wcm9sb2d1ZSAoInZmcmFtZXNwIikp CiAgICAgcmV0dXJuOwogCi0gIHBhcnNlX29wZXJhbmQgKCZlKTsKLSAgaWYg KGUuWF9vcCA9PSBPX2NvbnN0YW50KQorICBzZXAgPSBwYXJzZV9vcGVyYW5k ICgmZSwgJywnKTsKKyAgaWYgKGUuWF9vcCAhPSBPX2NvbnN0YW50KQogICAg IHsKLSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9tZW1fc3RhY2tf diAoKSk7Ci0gICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfcHNwX3Nw cmVsIChlLlhfYWRkX251bWJlcikpOworICAgICAgYXNfYmFkICgiT3BlcmFu ZCB0byAudmZyYW1lc3AgbXVzdCBiZSBhIGNvbnN0YW50IChzcC1yZWxhdGl2 ZSBvZmZzZXQpIik7CisgICAgICBlLlhfYWRkX251bWJlciA9IDA7CiAgICAg fQotICBlbHNlCi0gICAgYXNfYmFkICgiT3BlcmFuZCB0byAudmZyYW1lcHNw IG11c3QgYmUgYSBjb25zdGFudCAocHNwLXJlbGF0aXZlIG9mZnNldCkiKTsK KyAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X21lbV9zdGFja192ICgpLCBz ZXApOworICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfcHNwX3NwcmVsIChl LlhfYWRkX251bWJlciksIE5PVF9BX0NIQVIpOwogfQogCiBzdGF0aWMgdm9p ZApAQCAtMzMwNiwxMDYgKzMzMzAsMTE1IEBAIGRvdF9zYXZlIChkdW1teSkK ICAgICAgaW50IGR1bW15IEFUVFJJQlVURV9VTlVTRUQ7CiB7CiAgIGV4cHJl c3Npb25TIGUxLCBlMjsKKyAgdW5zaWduZWQgcmVnMSwgcmVnMjsKICAgaW50 IHNlcDsKLSAgaW50IHJlZzEsIHJlZzI7CiAKICAgaWYgKCFpbl9wcm9sb2d1 ZSAoInNhdmUiKSkKICAgICByZXR1cm47CiAKLSAgc2VwID0gcGFyc2Vfb3Bl cmFuZCAoJmUxKTsKLSAgaWYgKHNlcCAhPSAnLCcpCi0gICAgYXNfYmFkICgi Tm8gc2Vjb25kIG9wZXJhbmQgdG8gLnNhdmUiKTsKLSAgc2VwID0gcGFyc2Vf b3BlcmFuZCAoJmUyKTsKKyAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUxLCAn LCcpOworICBpZiAoc2VwID09ICcsJykKKyAgICBzZXAgPSBwYXJzZV9vcGVy YW5kICgmZTIsICcsJyk7CisgIGVsc2UKKyAgICBlMi5YX29wID0gT19hYnNl bnQ7CiAKICAgcmVnMSA9IGUxLlhfYWRkX251bWJlcjsKLSAgcmVnMiA9IGUy LlhfYWRkX251bWJlciAtIFJFR19HUjsKLQogICAvKiBNYWtlIHN1cmUgaXRz IGEgdmFsaWQgYXIueHh4IHJlZywgT1IgaXRzIGJyMCwgYWthICdycCcuICAq LwotICBpZiAoZTEuWF9vcCA9PSBPX3JlZ2lzdGVyKQorICBpZiAoZTEuWF9v cCAhPSBPX3JlZ2lzdGVyKQogICAgIHsKLSAgICAgIGlmIChlMi5YX29wID09 IE9fcmVnaXN0ZXIgJiYgcmVnMiA+PSAwICYmIHJlZzIgPCAxMjgpCi0Jewot CSAgc3dpdGNoIChyZWcxKQotCSAgICB7Ci0JICAgIGNhc2UgUkVHX0FSICsg QVJfQlNQOgotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9ic3Bf d2hlbiAoKSk7Ci0JICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X2Jz cF9nciAocmVnMikpOwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIFJFR19B UiArIEFSX0JTUFNUT1JFOgotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91 dHB1dF9ic3BzdG9yZV93aGVuICgpKTsKLQkgICAgICBhZGRfdW53aW5kX2Vu dHJ5IChvdXRwdXRfYnNwc3RvcmVfZ3IgKHJlZzIpKTsKLQkgICAgICBicmVh azsKLQkgICAgY2FzZSBSRUdfQVIgKyBBUl9STkFUOgotCSAgICAgIGFkZF91 bndpbmRfZW50cnkgKG91dHB1dF9ybmF0X3doZW4gKCkpOwotCSAgICAgIGFk ZF91bndpbmRfZW50cnkgKG91dHB1dF9ybmF0X2dyIChyZWcyKSk7Ci0JICAg ICAgYnJlYWs7Ci0JICAgIGNhc2UgUkVHX0FSICsgQVJfVU5BVDoKLQkgICAg ICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfdW5hdF93aGVuICgpKTsKLQkg ICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfdW5hdF9nciAocmVnMikp OwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIFJFR19BUiArIEFSX0ZQU1I6 Ci0JICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X2Zwc3Jfd2hlbiAo KSk7Ci0JICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X2Zwc3JfZ3Ig KHJlZzIpKTsKLQkgICAgICBicmVhazsKLQkgICAgY2FzZSBSRUdfQVIgKyBB Ul9QRlM6Ci0JICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3Bmc193 aGVuICgpKTsKLQkgICAgICBpZiAoISAodW53aW5kLnByb2xvZ3VlX21hc2sg JiA0KSkKLQkJYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3Bmc19nciAocmVn MikpOwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIFJFR19BUiArIEFSX0xD OgotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9sY193aGVuICgp KTsKLQkgICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfbGNfZ3IgKHJl ZzIpKTsKLQkgICAgICBicmVhazsKLQkgICAgY2FzZSBSRUdfQlI6Ci0JICAg ICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3JwX3doZW4gKCkpOwotCSAg ICAgIGlmICghICh1bndpbmQucHJvbG9ndWVfbWFzayAmIDgpKQotCQlhZGRf dW53aW5kX2VudHJ5IChvdXRwdXRfcnBfZ3IgKHJlZzIpKTsKLQkgICAgICBi cmVhazsKLQkgICAgY2FzZSBSRUdfUFI6Ci0JICAgICAgYWRkX3Vud2luZF9l bnRyeSAob3V0cHV0X3ByZWRzX3doZW4gKCkpOwotCSAgICAgIGlmICghICh1 bndpbmQucHJvbG9ndWVfbWFzayAmIDEpKQotCQlhZGRfdW53aW5kX2VudHJ5 IChvdXRwdXRfcHJlZHNfZ3IgKHJlZzIpKTsKLQkgICAgICBicmVhazsKLQkg ICAgY2FzZSBSRUdfUFJJVU5BVDoKLQkgICAgICBhZGRfdW53aW5kX2VudHJ5 IChvdXRwdXRfcHJpdW5hdF93aGVuX2dyICgpKTsKLQkgICAgICBhZGRfdW53 aW5kX2VudHJ5IChvdXRwdXRfcHJpdW5hdF9nciAocmVnMikpOwotCSAgICAg IGJyZWFrOwotCSAgICBkZWZhdWx0OgotCSAgICAgIGFzX2JhZCAoIkZpcnN0 IG9wZXJhbmQgbm90IGEgdmFsaWQgcmVnaXN0ZXIiKTsKLQkgICAgfQotCX0K LSAgICAgIGVsc2UKLQlhc19iYWQgKCIgU2Vjb25kIG9wZXJhbmQgbm90IGEg dmFsaWQgcmVnaXN0ZXIiKTsKKyAgICAgIGFzX2JhZCAoIkZpcnN0IG9wZXJh bmQgdG8gLnNhdmUgbm90IGEgcmVnaXN0ZXIiKTsKKyAgICAgIHJlZzEgPSBS RUdfUFI7IC8qIEFueXRoaW5nIHZhbGlkIGlzIGdvb2QgaGVyZS4gICovCisg ICAgfQorICByZWcyID0gZTIuWF9hZGRfbnVtYmVyIC0gUkVHX0dSOworICBp ZiAoZTIuWF9vcCAhPSBPX3JlZ2lzdGVyIHx8IHJlZzIgPiAxMjcpCisgICAg eworICAgICAgYXNfYmFkICgiU2Vjb25kIG9wZXJhbmQgdG8gLnNhdmUgbm90 IGEgdmFsaWQgcmVnaXN0ZXIiKTsKKyAgICAgIHJlZzIgPSAwOworICAgIH0K KyAgc3dpdGNoIChyZWcxKQorICAgIHsKKyAgICBjYXNlIFJFR19BUiArIEFS X0JTUDoKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9ic3Bfd2hl biAoKSwgc2VwKTsKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9i c3BfZ3IgKHJlZzIpLCBOT1RfQV9DSEFSKTsKKyAgICAgIGJyZWFrOworICAg IGNhc2UgUkVHX0FSICsgQVJfQlNQU1RPUkU6CisgICAgICBhZGRfdW53aW5k X2VudHJ5IChvdXRwdXRfYnNwc3RvcmVfd2hlbiAoKSwgc2VwKTsKKyAgICAg IGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9ic3BzdG9yZV9nciAocmVnMiks IE5PVF9BX0NIQVIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBSRUdfQVIg KyBBUl9STkFUOgorICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3Ju YXRfd2hlbiAoKSwgc2VwKTsKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91 dHB1dF9ybmF0X2dyIChyZWcyKSwgTk9UX0FfQ0hBUik7CisgICAgICBicmVh azsKKyAgICBjYXNlIFJFR19BUiArIEFSX1VOQVQ6CisgICAgICBhZGRfdW53 aW5kX2VudHJ5IChvdXRwdXRfdW5hdF93aGVuICgpLCBzZXApOworICAgICAg YWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3VuYXRfZ3IgKHJlZzIpLCBOT1Rf QV9DSEFSKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUkVHX0FSICsgQVJf RlBTUjoKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9mcHNyX3do ZW4gKCksIHNlcCk7CisgICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRf ZnBzcl9nciAocmVnMiksIE5PVF9BX0NIQVIpOworICAgICAgYnJlYWs7Cisg ICAgY2FzZSBSRUdfQVIgKyBBUl9QRlM6CisgICAgICBhZGRfdW53aW5kX2Vu dHJ5IChvdXRwdXRfcGZzX3doZW4gKCksIHNlcCk7CisgICAgICBpZiAoISAo dW53aW5kLnByb2xvZ3VlX21hc2sgJiA0KSkKKwlhZGRfdW53aW5kX2VudHJ5 IChvdXRwdXRfcGZzX2dyIChyZWcyKSwgTk9UX0FfQ0hBUik7CisgICAgICBl bHNlIGlmIChyZWcyICE9IHVud2luZC5wcm9sb2d1ZV9ncgorCQkgICAgICAg KyAodW5zaWduZWQpIHBvcGNvdW50ICh1bndpbmQucHJvbG9ndWVfbWFzayAm ICgtNCA8PCAxKSkpCisJYXNfd2FybiAoIlNlY29uZCBvcGVyYW5kIG9mIC5z YXZlIGNvbnRyYWRpY3RzIC5wcm9sb2d1ZSIpOworICAgICAgYnJlYWs7Cisg ICAgY2FzZSBSRUdfQVIgKyBBUl9MQzoKKyAgICAgIGFkZF91bndpbmRfZW50 cnkgKG91dHB1dF9sY193aGVuICgpLCBzZXApOworICAgICAgYWRkX3Vud2lu ZF9lbnRyeSAob3V0cHV0X2xjX2dyIChyZWcyKSwgTk9UX0FfQ0hBUik7Cisg ICAgICBicmVhazsKKyAgICBjYXNlIFJFR19CUjoKKyAgICAgIGFkZF91bndp bmRfZW50cnkgKG91dHB1dF9ycF93aGVuICgpLCBzZXApOworICAgICAgaWYg KCEgKHVud2luZC5wcm9sb2d1ZV9tYXNrICYgOCkpCisJYWRkX3Vud2luZF9l bnRyeSAob3V0cHV0X3JwX2dyIChyZWcyKSwgTk9UX0FfQ0hBUik7CisgICAg ICBlbHNlIGlmIChyZWcyICE9IHVud2luZC5wcm9sb2d1ZV9ncikKKwlhc193 YXJuICgiU2Vjb25kIG9wZXJhbmQgb2YgLnNhdmUgY29udHJhZGljdHMgLnBy b2xvZ3VlIik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFJFR19QUjoKKyAg ICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9wcmVkc193aGVuICgpLCBz ZXApOworICAgICAgaWYgKCEgKHVud2luZC5wcm9sb2d1ZV9tYXNrICYgMSkp CisJYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3ByZWRzX2dyIChyZWcyKSwg Tk9UX0FfQ0hBUik7CisgICAgICBlbHNlIGlmIChyZWcyICE9IHVud2luZC5w cm9sb2d1ZV9ncgorCQkgICAgICAgKyAodW5zaWduZWQpIHBvcGNvdW50ICh1 bndpbmQucHJvbG9ndWVfbWFzayAmICgtMSA8PCAxKSkpCisJYXNfd2FybiAo IlNlY29uZCBvcGVyYW5kIG9mIC5zYXZlIGNvbnRyYWRpY3RzIC5wcm9sb2d1 ZSIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBSRUdfUFJJVU5BVDoKKyAg ICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9wcml1bmF0X3doZW5fZ3Ig KCksIHNlcCk7CisgICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfcHJp dW5hdF9nciAocmVnMiksIE5PVF9BX0NIQVIpOworICAgICAgYnJlYWs7Cisg ICAgZGVmYXVsdDoKKyAgICAgIGFzX2JhZCAoIkZpcnN0IG9wZXJhbmQgdG8g LnNhdmUgbm90IGEgdmFsaWQgcmVnaXN0ZXIiKTsKKyAgICAgIGFkZF91bndp bmRfZW50cnkgKE5VTEwsIHNlcCk7CisgICAgICBicmVhazsKICAgICB9Ci0g IGVsc2UKLSAgICBhc19iYWQgKCJGaXJzdCBvcGVyYW5kIG5vdCBhIHJlZ2lz dGVyIik7CiB9CiAKIHN0YXRpYyB2b2lkCiBkb3RfcmVzdG9yZSAoZHVtbXkp CiAgICAgIGludCBkdW1teSBBVFRSSUJVVEVfVU5VU0VEOwogewotICBleHBy ZXNzaW9uUyBlMSwgZTI7CisgIGV4cHJlc3Npb25TIGUxOwogICB1bnNpZ25l ZCBsb25nIGVjb3VudDsJLyogIyBvZiBfYWRkaXRpb25hbF8gcmVnaW9ucyB0 byBwb3AgKi8KICAgaW50IHNlcDsKIAogICBpZiAoIWluX2JvZHkgKCJyZXN0 b3JlIikpCiAgICAgcmV0dXJuOwogCi0gIHNlcCA9IHBhcnNlX29wZXJhbmQg KCZlMSk7CisgIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlMSwgJywnKTsKICAg aWYgKGUxLlhfb3AgIT0gT19yZWdpc3RlciB8fCBlMS5YX2FkZF9udW1iZXIg IT0gUkVHX0dSICsgMTIpCi0gICAgewotICAgICAgYXNfYmFkICgiRmlyc3Qg b3BlcmFuZCB0byAucmVzdG9yZSBtdXN0IGJlIHN0YWNrIHBvaW50ZXIgKHNw KSIpOwotICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhc19iYWQgKCJGaXJz dCBvcGVyYW5kIHRvIC5yZXN0b3JlIG11c3QgYmUgc3RhY2sgcG9pbnRlciAo c3ApIik7CiAKICAgaWYgKHNlcCA9PSAnLCcpCiAgICAgewotICAgICAgcGFy c2Vfb3BlcmFuZCAoJmUyKTsKKyAgICAgIGV4cHJlc3Npb25TIGUyOworCisg ICAgICBzZXAgPSBwYXJzZV9vcGVyYW5kICgmZTIsICcsJyk7CiAgICAgICBp ZiAoZTIuWF9vcCAhPSBPX2NvbnN0YW50IHx8IGUyLlhfYWRkX251bWJlciA8 IDApCiAJewogCSAgYXNfYmFkICgiU2Vjb25kIG9wZXJhbmQgdG8gLnJlc3Rv cmUgbXVzdCBiZSBhIGNvbnN0YW50ID49IDAiKTsKLQkgIHJldHVybjsKKwkg IGUyLlhfYWRkX251bWJlciA9IDA7CiAJfQogICAgICAgZWNvdW50ID0gZTIu WF9hZGRfbnVtYmVyOwogICAgIH0KQEAgLTM0MTYsMTAgKzM0NDksMTAgQEAg ZG90X3Jlc3RvcmUgKGR1bW15KQogICAgIHsKICAgICAgIGFzX2JhZCAoIkVw aWxvZ3VlIGNvdW50IG9mICVsdSBleGNlZWRzIG51bWJlciBvZiBuZXN0ZWQg cHJvbG9ndWVzICgldSkiLAogCSAgICAgIGVjb3VudCArIDEsIHVud2luZC5w cm9sb2d1ZV9jb3VudCk7Ci0gICAgICByZXR1cm47CisgICAgICBlY291bnQg PSAwOwogICAgIH0KIAotICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfZXBp bG9ndWUgKGVjb3VudCkpOworICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRf ZXBpbG9ndWUgKGVjb3VudCksIHNlcCk7CiAKICAgaWYgKGVjb3VudCA8IHVu d2luZC5wcm9sb2d1ZV9jb3VudCkKICAgICB1bndpbmQucHJvbG9ndWVfY291 bnQgLT0gZWNvdW50ICsgMTsKQEAgLTM0MjgsNTggKzM0NjEsMjcgQEAgZG90 X3Jlc3RvcmUgKGR1bW15KQogfQogCiBzdGF0aWMgdm9pZAotZG90X3Jlc3Rv cmVyZWcgKGR1bW15KQotICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNF RDsKLXsKLSAgdW5zaWduZWQgaW50IGFiLCByZWc7Ci0gIGV4cHJlc3Npb25T IGU7Ci0KLSAgaWYgKCFpbl9wcm9jZWR1cmUgKCJyZXN0b3JlcmVnIikpCi0g ICAgcmV0dXJuOwotCi0gIHBhcnNlX29wZXJhbmQgKCZlKTsKLQotICBpZiAo IWNvbnZlcnRfZXhwcl90b19hYl9yZWcgKCZlLCAmYWIsICZyZWcpKQotICAg IHsKLSAgICAgIGFzX2JhZCAoIkZpcnN0IG9wZXJhbmQgdG8gLnJlc3RvcmVy ZWcgbXVzdCBiZSBhIHByZXNlcnZlZCByZWdpc3RlciIpOwotICAgICAgcmV0 dXJuOwotICAgIH0KLSAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3NwaWxs X3JlZyAoYWIsIHJlZywgMCwgMCkpOwotfQotCi1zdGF0aWMgdm9pZAotZG90 X3Jlc3RvcmVyZWdfcCAoZHVtbXkpCi0gICAgIGludCBkdW1teSBBVFRSSUJV VEVfVU5VU0VEOworZG90X3Jlc3RvcmVyZWcgKHByZWQpCisgICAgIGludCBw cmVkOwogewogICB1bnNpZ25lZCBpbnQgcXAsIGFiLCByZWc7Ci0gIGV4cHJl c3Npb25TIGUxLCBlMjsKKyAgZXhwcmVzc2lvblMgZTsKICAgaW50IHNlcDsK KyAgY29uc3QgY2hhciAqIGNvbnN0IHBvID0gcHJlZCA/ICJyZXN0b3JlcmVn LnAiIDogInJlc3RvcmVyZWciOwogCi0gIGlmICghaW5fcHJvY2VkdXJlICgi cmVzdG9yZXJlZy5wIikpCisgIGlmICghaW5fcHJvY2VkdXJlIChwbykpCiAg ICAgcmV0dXJuOwogCi0gIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlMSk7Ci0g IGlmIChzZXAgIT0gJywnKQotICAgIHsKLSAgICAgIGFzX2JhZCAoIk5vIHNl Y29uZCBvcGVyYW5kIHRvIC5yZXN0b3JlcmVnLnAiKTsKLSAgICAgIHJldHVy bjsKLSAgICB9Ci0KLSAgcGFyc2Vfb3BlcmFuZCAoJmUyKTsKLQotICBxcCA9 IGUxLlhfYWRkX251bWJlciAtIFJFR19QOwotICBpZiAoZTEuWF9vcCAhPSBP X3JlZ2lzdGVyIHx8IHFwID4gNjMpCisgIGlmIChwcmVkKQorICAgIHNlcCA9 IHBhcnNlX3ByZWRpY2F0ZV9hbmRfb3BlcmFuZCAoJmUsICZxcCwgcG8pOwor ICBlbHNlCiAgICAgewotICAgICAgYXNfYmFkICgiRmlyc3Qgb3BlcmFuZCB0 byAucmVzdG9yZXJlZy5wIG11c3QgYmUgYSBwcmVkaWNhdGUiKTsKLSAgICAg IHJldHVybjsKKyAgICAgIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlLCAnLCcp OworICAgICAgcXAgPSAwOwogICAgIH0KKyAgY29udmVydF9leHByX3RvX2Fi X3JlZyAoJmUsICZhYiwgJnJlZywgcG8sIDEgKyBwcmVkKTsKIAotICBpZiAo IWNvbnZlcnRfZXhwcl90b19hYl9yZWcgKCZlMiwgJmFiLCAmcmVnKSkKLSAg ICB7Ci0gICAgICBhc19iYWQgKCJTZWNvbmQgb3BlcmFuZCB0byAucmVzdG9y ZXJlZy5wIG11c3QgYmUgYSBwcmVzZXJ2ZWQgcmVnaXN0ZXIiKTsKLSAgICAg IHJldHVybjsKLSAgICB9Ci0gIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9z cGlsbF9yZWdfcCAoYWIsIHJlZywgMCwgMCwgcXApKTsKKyAgYWRkX3Vud2lu ZF9lbnRyeSAob3V0cHV0X3NwaWxsX3JlZyAoYWIsIHJlZywgMCwgMCwgcXAp LCBzZXApOwogfQogCiBzdGF0aWMgY2hhciAqc3BlY2lhbF9saW5rb25jZV9u YW1lW10gPQpAQCAtMzYwNyw3ICszNjA5LDcgQEAgZ2VuZXJhdGVfdW53aW5k X2ltYWdlIChjb25zdCBzZWdUIHRleHRfcwogCiAgIC8qIE1hcmsgdGhlIGVu ZCBvZiB0aGUgdW53aW5kIGluZm8sIHNvIHRoYXQgd2UgY2FuIGNvbXB1dGUg dGhlIHNpemUgb2YgdGhlCiAgICAgIGxhc3QgdW53aW5kIHJlZ2lvbi4gICov Ci0gIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9lbmRwICgpKTsKKyAgYWRk X3Vud2luZF9lbnRyeSAob3V0cHV0X2VuZHAgKCksIE5PVF9BX0NIQVIpOwog CiAgIC8qIEZvcmNlIG91dCBwZW5kaW5nIGluc3RydWN0aW9ucywgdG8gbWFr ZSBzdXJlIGFsbCB1bndpbmQgcmVjb3JkcyBoYXZlCiAgICAgIGEgdmFsaWQg c2xvdF9udW1iZXIgZmllbGQuICAqLwpAQCAtMzcyMywxMiArMzcyNSwxNCBA QCBkb3RfYWx0cnAgKGR1bW15KQogICBpZiAoIWluX3Byb2xvZ3VlICgiYWx0 cnAiKSkKICAgICByZXR1cm47CiAKLSAgcGFyc2Vfb3BlcmFuZCAoJmUpOwor ICBwYXJzZV9vcGVyYW5kICgmZSwgMCk7CiAgIHJlZyA9IGUuWF9hZGRfbnVt YmVyIC0gUkVHX0JSOwotICBpZiAoZS5YX29wID09IE9fcmVnaXN0ZXIgJiYg cmVnIDwgOCkKLSAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfcnBfYnIg KHJlZykpOwotICBlbHNlCi0gICAgYXNfYmFkICgiRmlyc3Qgb3BlcmFuZCBu b3QgYSB2YWxpZCBicmFuY2ggcmVnaXN0ZXIiKTsKKyAgaWYgKGUuWF9vcCAh PSBPX3JlZ2lzdGVyIHx8IHJlZyA+IDcpCisgICAgeworICAgICAgYXNfYmFk ICgiRmlyc3Qgb3BlcmFuZCB0byAuYWx0cnAgbm90IGEgdmFsaWQgYnJhbmNo IHJlZ2lzdGVyIik7CisgICAgICByZWcgPSAwOworICAgIH0KKyAgYWRkX3Vu d2luZF9lbnRyeSAob3V0cHV0X3JwX2JyIChyZWcpLCAwKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTM3MzgsMTgyICszNzQyLDIxMCBAQCBkb3Rfc2F2ZW1l bSAocHNwcmVsKQogICBleHByZXNzaW9uUyBlMSwgZTI7CiAgIGludCBzZXA7 CiAgIGludCByZWcxLCB2YWw7CisgIGNvbnN0IGNoYXIgKiBjb25zdCBwbyA9 IHBzcHJlbCA/ICJzYXZlcHNwIiA6ICJzYXZlc3AiOwogCi0gIGlmICghaW5f cHJvbG9ndWUgKHBzcHJlbCA/ICJzYXZlcHNwIiA6ICJzYXZlc3AiKSkKKyAg aWYgKCFpbl9wcm9sb2d1ZSAocG8pKQogICAgIHJldHVybjsKIAotICBzZXAg PSBwYXJzZV9vcGVyYW5kICgmZTEpOwotICBpZiAoc2VwICE9ICcsJykKLSAg ICBhc19iYWQgKCJObyBzZWNvbmQgb3BlcmFuZCB0byAuc2F2ZSVzc3AiLCBw c3ByZWwgPyAicCIgOiAiIik7Ci0gIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZl Mik7CisgIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlMSwgJywnKTsKKyAgaWYg KHNlcCA9PSAnLCcpCisgICAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUyLCAn LCcpOworICBlbHNlCisgICAgZTIuWF9vcCA9IE9fYWJzZW50OwogCiAgIHJl ZzEgPSBlMS5YX2FkZF9udW1iZXI7CiAgIHZhbCA9IGUyLlhfYWRkX251bWJl cjsKIAogICAvKiBNYWtlIHN1cmUgaXRzIGEgdmFsaWQgYXIueHh4IHJlZywg T1IgaXRzIGJyMCwgYWthICdycCcuICAqLwotICBpZiAoZTEuWF9vcCA9PSBP X3JlZ2lzdGVyKQorICBpZiAoZTEuWF9vcCAhPSBPX3JlZ2lzdGVyKQogICAg IHsKLSAgICAgIGlmIChlMi5YX29wID09IE9fY29uc3RhbnQpCi0JewotCSAg c3dpdGNoIChyZWcxKQotCSAgICB7Ci0JICAgIGNhc2UgUkVHX0FSICsgQVJf QlNQOgotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9ic3Bfd2hl biAoKSk7Ci0JICAgICAgYWRkX3Vud2luZF9lbnRyeSAoKHBzcHJlbAotCQkJ CSA/IG91dHB1dF9ic3BfcHNwcmVsCi0JCQkJIDogb3V0cHV0X2JzcF9zcHJl bCkgKHZhbCkpOwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIFJFR19BUiAr IEFSX0JTUFNUT1JFOgotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1 dF9ic3BzdG9yZV93aGVuICgpKTsKLQkgICAgICBhZGRfdW53aW5kX2VudHJ5 ICgocHNwcmVsCi0JCQkJID8gb3V0cHV0X2JzcHN0b3JlX3BzcHJlbAotCQkJ CSA6IG91dHB1dF9ic3BzdG9yZV9zcHJlbCkgKHZhbCkpOwotCSAgICAgIGJy ZWFrOwotCSAgICBjYXNlIFJFR19BUiArIEFSX1JOQVQ6Ci0JICAgICAgYWRk X3Vud2luZF9lbnRyeSAob3V0cHV0X3JuYXRfd2hlbiAoKSk7Ci0JICAgICAg YWRkX3Vud2luZF9lbnRyeSAoKHBzcHJlbAotCQkJCSA/IG91dHB1dF9ybmF0 X3BzcHJlbAotCQkJCSA6IG91dHB1dF9ybmF0X3NwcmVsKSAodmFsKSk7Ci0J ICAgICAgYnJlYWs7Ci0JICAgIGNhc2UgUkVHX0FSICsgQVJfVU5BVDoKLQkg ICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfdW5hdF93aGVuICgpKTsK LQkgICAgICBhZGRfdW53aW5kX2VudHJ5ICgocHNwcmVsCi0JCQkJID8gb3V0 cHV0X3VuYXRfcHNwcmVsCi0JCQkJIDogb3V0cHV0X3VuYXRfc3ByZWwpICh2 YWwpKTsKLQkgICAgICBicmVhazsKLQkgICAgY2FzZSBSRUdfQVIgKyBBUl9G UFNSOgotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9mcHNyX3do ZW4gKCkpOwotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKChwc3ByZWwKLQkJ CQkgPyBvdXRwdXRfZnBzcl9wc3ByZWwKLQkJCQkgOiBvdXRwdXRfZnBzcl9z cHJlbCkgKHZhbCkpOwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIFJFR19B UiArIEFSX1BGUzoKLQkgICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRf cGZzX3doZW4gKCkpOwotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKChwc3By ZWwKLQkJCQkgPyBvdXRwdXRfcGZzX3BzcHJlbAotCQkJCSA6IG91dHB1dF9w ZnNfc3ByZWwpICh2YWwpKTsKLQkgICAgICBicmVhazsKLQkgICAgY2FzZSBS RUdfQVIgKyBBUl9MQzoKLQkgICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRw dXRfbGNfd2hlbiAoKSk7Ci0JICAgICAgYWRkX3Vud2luZF9lbnRyeSAoKHBz cHJlbAotCQkJCSA/IG91dHB1dF9sY19wc3ByZWwKLQkJCQkgOiBvdXRwdXRf bGNfc3ByZWwpICh2YWwpKTsKLQkgICAgICBicmVhazsKLQkgICAgY2FzZSBS RUdfQlI6Ci0JICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0X3JwX3do ZW4gKCkpOwotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKChwc3ByZWwKLQkJ CQkgPyBvdXRwdXRfcnBfcHNwcmVsCi0JCQkJIDogb3V0cHV0X3JwX3NwcmVs KSAodmFsKSk7Ci0JICAgICAgYnJlYWs7Ci0JICAgIGNhc2UgUkVHX1BSOgot CSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9wcmVkc193aGVuICgp KTsKLQkgICAgICBhZGRfdW53aW5kX2VudHJ5ICgocHNwcmVsCi0JCQkJID8g b3V0cHV0X3ByZWRzX3BzcHJlbAotCQkJCSA6IG91dHB1dF9wcmVkc19zcHJl bCkgKHZhbCkpOwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIFJFR19QUklV TkFUOgotCSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9wcml1bmF0 X3doZW5fbWVtICgpKTsKLQkgICAgICBhZGRfdW53aW5kX2VudHJ5ICgocHNw cmVsCi0JCQkJID8gb3V0cHV0X3ByaXVuYXRfcHNwcmVsCi0JCQkJIDogb3V0 cHV0X3ByaXVuYXRfc3ByZWwpICh2YWwpKTsKLQkgICAgICBicmVhazsKLQkg ICAgZGVmYXVsdDoKLQkgICAgICBhc19iYWQgKCJGaXJzdCBvcGVyYW5kIG5v dCBhIHZhbGlkIHJlZ2lzdGVyIik7Ci0JICAgIH0KLQl9Ci0gICAgICBlbHNl Ci0JYXNfYmFkICgiIFNlY29uZCBvcGVyYW5kIG5vdCBhIHZhbGlkIGNvbnN0 YW50Iik7CisgICAgICBhc19iYWQgKCJGaXJzdCBvcGVyYW5kIHRvIC4lcyBu b3QgYSByZWdpc3RlciIsIHBvKTsKKyAgICAgIHJlZzEgPSBSRUdfUFI7IC8q IEFueXRoaW5nIHZhbGlkIGlzIGdvb2QgaGVyZS4gICovCisgICAgfQorICBp ZiAoZTIuWF9vcCAhPSBPX2NvbnN0YW50KQorICAgIHsKKyAgICAgIGFzX2Jh ZCAoIlNlY29uZCBvcGVyYW5kIHRvIC4lcyBub3QgYSBjb25zdGFudCIsIHBv KTsKKyAgICAgIHZhbCA9IDA7CisgICAgfQorCisgIHN3aXRjaCAocmVnMSkK KyAgICB7CisgICAgY2FzZSBSRUdfQVIgKyBBUl9CU1A6CisgICAgICBhZGRf dW53aW5kX2VudHJ5IChvdXRwdXRfYnNwX3doZW4gKCksIHNlcCk7CisgICAg ICBhZGRfdW53aW5kX2VudHJ5ICgocHNwcmVsCisJCQkgPyBvdXRwdXRfYnNw X3BzcHJlbAorCQkJIDogb3V0cHV0X2JzcF9zcHJlbCkgKHZhbCksIE5PVF9B X0NIQVIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBSRUdfQVIgKyBBUl9C U1BTVE9SRToKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9ic3Bz dG9yZV93aGVuICgpLCBzZXApOworICAgICAgYWRkX3Vud2luZF9lbnRyeSAo KHBzcHJlbAorCQkJID8gb3V0cHV0X2JzcHN0b3JlX3BzcHJlbAorCQkJIDog b3V0cHV0X2JzcHN0b3JlX3NwcmVsKSAodmFsKSwgTk9UX0FfQ0hBUik7Cisg ICAgICBicmVhazsKKyAgICBjYXNlIFJFR19BUiArIEFSX1JOQVQ6CisgICAg ICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfcm5hdF93aGVuICgpLCBzZXAp OworICAgICAgYWRkX3Vud2luZF9lbnRyeSAoKHBzcHJlbAorCQkJID8gb3V0 cHV0X3JuYXRfcHNwcmVsCisJCQkgOiBvdXRwdXRfcm5hdF9zcHJlbCkgKHZh bCksIE5PVF9BX0NIQVIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBSRUdf QVIgKyBBUl9VTkFUOgorICAgICAgYWRkX3Vud2luZF9lbnRyeSAob3V0cHV0 X3VuYXRfd2hlbiAoKSwgc2VwKTsKKyAgICAgIGFkZF91bndpbmRfZW50cnkg KChwc3ByZWwKKwkJCSA/IG91dHB1dF91bmF0X3BzcHJlbAorCQkJIDogb3V0 cHV0X3VuYXRfc3ByZWwpICh2YWwpLCBOT1RfQV9DSEFSKTsKKyAgICAgIGJy ZWFrOworICAgIGNhc2UgUkVHX0FSICsgQVJfRlBTUjoKKyAgICAgIGFkZF91 bndpbmRfZW50cnkgKG91dHB1dF9mcHNyX3doZW4gKCksIHNlcCk7CisgICAg ICBhZGRfdW53aW5kX2VudHJ5ICgocHNwcmVsCisJCQkgPyBvdXRwdXRfZnBz cl9wc3ByZWwKKwkJCSA6IG91dHB1dF9mcHNyX3NwcmVsKSAodmFsKSwgTk9U X0FfQ0hBUik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFJFR19BUiArIEFS X1BGUzoKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9wZnNfd2hl biAoKSwgc2VwKTsKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKChwc3ByZWwK KwkJCSA/IG91dHB1dF9wZnNfcHNwcmVsCisJCQkgOiBvdXRwdXRfcGZzX3Nw cmVsKSAodmFsKSwgTk9UX0FfQ0hBUik7CisgICAgICBicmVhazsKKyAgICBj YXNlIFJFR19BUiArIEFSX0xDOgorICAgICAgYWRkX3Vud2luZF9lbnRyeSAo b3V0cHV0X2xjX3doZW4gKCksIHNlcCk7CisgICAgICBhZGRfdW53aW5kX2Vu dHJ5ICgocHNwcmVsCisJCQkgPyBvdXRwdXRfbGNfcHNwcmVsCisJCQkgOiBv dXRwdXRfbGNfc3ByZWwpICh2YWwpLCBOT1RfQV9DSEFSKTsKKyAgICAgIGJy ZWFrOworICAgIGNhc2UgUkVHX0JSOgorICAgICAgYWRkX3Vud2luZF9lbnRy eSAob3V0cHV0X3JwX3doZW4gKCksIHNlcCk7CisgICAgICBhZGRfdW53aW5k X2VudHJ5ICgocHNwcmVsCisJCQkgPyBvdXRwdXRfcnBfcHNwcmVsCisJCQkg OiBvdXRwdXRfcnBfc3ByZWwpICh2YWwpLCBOT1RfQV9DSEFSKTsKKyAgICAg IGJyZWFrOworICAgIGNhc2UgUkVHX1BSOgorICAgICAgYWRkX3Vud2luZF9l bnRyeSAob3V0cHV0X3ByZWRzX3doZW4gKCksIHNlcCk7CisgICAgICBhZGRf dW53aW5kX2VudHJ5ICgocHNwcmVsCisJCQkgPyBvdXRwdXRfcHJlZHNfcHNw cmVsCisJCQkgOiBvdXRwdXRfcHJlZHNfc3ByZWwpICh2YWwpLCBOT1RfQV9D SEFSKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUkVHX1BSSVVOQVQ6Cisg ICAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfcHJpdW5hdF93aGVuX21l bSAoKSwgc2VwKTsKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKChwc3ByZWwK KwkJCSA/IG91dHB1dF9wcml1bmF0X3BzcHJlbAorCQkJIDogb3V0cHV0X3By aXVuYXRfc3ByZWwpICh2YWwpLCBOT1RfQV9DSEFSKTsKKyAgICAgIGJyZWFr OworICAgIGRlZmF1bHQ6CisgICAgICBhc19iYWQgKCJGaXJzdCBvcGVyYW5k IHRvIC4lcyBub3QgYSB2YWxpZCByZWdpc3RlciIsIHBvKTsKKyAgICAgIGFk ZF91bndpbmRfZW50cnkgKE5VTEwsIHNlcCk7CisgICAgICBicmVhazsKICAg ICB9Ci0gIGVsc2UKLSAgICBhc19iYWQgKCJGaXJzdCBvcGVyYW5kIG5vdCBh IHJlZ2lzdGVyIik7CiB9CiAKIHN0YXRpYyB2b2lkCiBkb3Rfc2F2ZWcgKGR1 bW15KQogICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRDsKIHsKLSAg ZXhwcmVzc2lvblMgZTEsIGUyOworICBleHByZXNzaW9uUyBlOworICB1bnNp Z25lZCBncm1hc2s7CiAgIGludCBzZXA7CiAKICAgaWYgKCFpbl9wcm9sb2d1 ZSAoInNhdmUuZyIpKQogICAgIHJldHVybjsKIAotICBzZXAgPSBwYXJzZV9v cGVyYW5kICgmZTEpOwotICBpZiAoc2VwID09ICcsJykKLSAgICBwYXJzZV9v cGVyYW5kICgmZTIpOworICBzZXAgPSBwYXJzZV9vcGVyYW5kICgmZSwgJywn KTsKIAotICBpZiAoZTEuWF9vcCAhPSBPX2NvbnN0YW50KQotICAgIGFzX2Jh ZCAoIkZpcnN0IG9wZXJhbmQgdG8gLnNhdmUuZyBtdXN0IGJlIGEgY29uc3Rh bnQuIik7Ci0gIGVsc2UKKyAgZ3JtYXNrID0gZS5YX2FkZF9udW1iZXI7Cisg IGlmIChlLlhfb3AgIT0gT19jb25zdGFudAorICAgICAgfHwgZS5YX2FkZF9u dW1iZXIgPD0gMAorICAgICAgfHwgZS5YX2FkZF9udW1iZXIgPiAweGYpCiAg ICAgewotICAgICAgaW50IGdybWFzayA9IGUxLlhfYWRkX251bWJlcjsKLSAg ICAgIGlmIChzZXAgIT0gJywnKQotCWFkZF91bndpbmRfZW50cnkgKG91dHB1 dF9ncl9tZW0gKGdybWFzaykpOwotICAgICAgZWxzZQorICAgICAgYXNfYmFk ICgiRmlyc3Qgb3BlcmFuZCB0byAuc2F2ZS5nIG11c3QgYmUgYSBwb3NpdGl2 ZSA0LWJpdCBjb25zdGFudCIpOworICAgICAgZ3JtYXNrID0gMDsKKyAgICB9 CisKKyAgaWYgKHNlcCA9PSAnLCcpCisgICAgeworICAgICAgdW5zaWduZWQg cmVnOworICAgICAgaW50IG4gPSBwb3Bjb3VudCAoZ3JtYXNrKTsKKworICAg ICAgcGFyc2Vfb3BlcmFuZCAoJmUsIDApOworICAgICAgcmVnID0gZS5YX2Fk ZF9udW1iZXIgLSBSRUdfR1I7CisgICAgICBpZiAoZS5YX29wICE9IE9fcmVn aXN0ZXIgfHwgcmVnID4gMTI3KQogCXsKLQkgIGludCByZWcgPSBlMi5YX2Fk ZF9udW1iZXIgLSBSRUdfR1I7Ci0JICBpZiAoZTIuWF9vcCA9PSBPX3JlZ2lz dGVyICYmIHJlZyA+PSAwICYmIHJlZyA8IDEyOCkKLQkgICAgYWRkX3Vud2lu ZF9lbnRyeSAob3V0cHV0X2dyX2dyIChncm1hc2ssIHJlZykpOwotCSAgZWxz ZQotCSAgICBhc19iYWQgKCJTZWNvbmQgb3BlcmFuZCBpcyBhbiBpbnZhbGlk IHJlZ2lzdGVyLiIpOworCSAgYXNfYmFkICgiU2Vjb25kIG9wZXJhbmQgdG8g LnNhdmUuZyBtdXN0IGJlIGEgZ2VuZXJhbCByZWdpc3RlciIpOworCSAgcmVn ID0gMDsKIAl9CisgICAgICBlbHNlIGlmIChyZWcgPiAxMjhVIC0gbikKKwl7 CisJICBhc19iYWQgKCJTZWNvbmQgb3BlcmFuZCB0byAuc2F2ZS5nIG11c3Qg YmUgdGhlIGZpcnN0IG9mICVkIGdlbmVyYWwgcmVnaXN0ZXJzIiwgbik7CisJ ICByZWcgPSAwOworCX0KKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1 dF9ncl9nciAoZ3JtYXNrLCByZWcpLCAwKTsKICAgICB9CisgIGVsc2UKKyAg ICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfZ3JfbWVtIChncm1hc2spLCAw KTsKIH0KIAogc3RhdGljIHZvaWQKIGRvdF9zYXZlZiAoZHVtbXkpCiAgICAg IGludCBkdW1teSBBVFRSSUJVVEVfVU5VU0VEOwogewotICBleHByZXNzaW9u UyBlMTsKLSAgaW50IHNlcDsKKyAgZXhwcmVzc2lvblMgZTsKIAogICBpZiAo IWluX3Byb2xvZ3VlICgic2F2ZS5mIikpCiAgICAgcmV0dXJuOwogCi0gIHNl cCA9IHBhcnNlX29wZXJhbmQgKCZlMSk7CisgIHBhcnNlX29wZXJhbmQgKCZl LCAwKTsKIAotICBpZiAoZTEuWF9vcCAhPSBPX2NvbnN0YW50KQotICAgIGFz X2JhZCAoIk9wZXJhbmQgdG8gLnNhdmUuZiBtdXN0IGJlIGEgY29uc3RhbnQu Iik7Ci0gIGVsc2UKLSAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfZnJf bWVtIChlMS5YX2FkZF9udW1iZXIpKTsKKyAgaWYgKGUuWF9vcCAhPSBPX2Nv bnN0YW50CisgICAgICB8fCBlLlhfYWRkX251bWJlciA8PSAwCisgICAgICB8 fCBlLlhfYWRkX251bWJlciA+IDB4ZmZmZmYpCisgICAgeworICAgICAgYXNf YmFkICgiT3BlcmFuZCB0byAuc2F2ZS5mIG11c3QgYmUgYSBwb3NpdGl2ZSAy MC1iaXQgY29uc3RhbnQiKTsKKyAgICAgIGUuWF9hZGRfbnVtYmVyID0gMDsK KyAgICB9CisgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9mcl9tZW0gKGUu WF9hZGRfbnVtYmVyKSwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBkb3Rfc2F2 ZWIgKGR1bW15KQogICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRDsK IHsKLSAgZXhwcmVzc2lvblMgZTEsIGUyOwotICB1bnNpZ25lZCBpbnQgcmVn OwotICB1bnNpZ25lZCBjaGFyIHNlcDsKLSAgaW50IGJybWFzazsKKyAgZXhw cmVzc2lvblMgZTsKKyAgdW5zaWduZWQgYnJtYXNrOworICBpbnQgc2VwOwog CiAgIGlmICghaW5fcHJvbG9ndWUgKCJzYXZlLmIiKSkKICAgICByZXR1cm47 CiAKLSAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUxKTsKLSAgaWYgKGUxLlhf b3AgIT0gT19jb25zdGFudCkKKyAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUs ICcsJyk7CisKKyAgYnJtYXNrID0gZS5YX2FkZF9udW1iZXI7CisgIGlmIChl Llhfb3AgIT0gT19jb25zdGFudAorICAgICAgfHwgZS5YX2FkZF9udW1iZXIg PD0gMAorICAgICAgfHwgZS5YX2FkZF9udW1iZXIgPiAweDFmKQogICAgIHsK LSAgICAgIGFzX2JhZCAoIkZpcnN0IG9wZXJhbmQgdG8gLnNhdmUuYiBtdXN0 IGJlIGEgY29uc3RhbnQuIik7Ci0gICAgICByZXR1cm47CisgICAgICBhc19i YWQgKCJGaXJzdCBvcGVyYW5kIHRvIC5zYXZlLmIgbXVzdCBiZSBhIHBvc2l0 aXZlIDUtYml0IGNvbnN0YW50Iik7CisgICAgICBicm1hc2sgPSAwOwogICAg IH0KLSAgYnJtYXNrID0gZTEuWF9hZGRfbnVtYmVyOwogCiAgIGlmIChzZXAg PT0gJywnKQogICAgIHsKLSAgICAgIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZl Mik7Ci0gICAgICByZWcgPSBlMi5YX2FkZF9udW1iZXIgLSBSRUdfR1I7Ci0g ICAgICBpZiAoZTIuWF9vcCAhPSBPX3JlZ2lzdGVyIHx8IHJlZyA+IDEyNykK KyAgICAgIHVuc2lnbmVkIHJlZzsKKyAgICAgIGludCBuID0gcG9wY291bnQg KGJybWFzayk7CisKKyAgICAgIHBhcnNlX29wZXJhbmQgKCZlLCAwKTsKKyAg ICAgIHJlZyA9IGUuWF9hZGRfbnVtYmVyIC0gUkVHX0dSOworICAgICAgaWYg KGUuWF9vcCAhPSBPX3JlZ2lzdGVyIHx8IHJlZyA+IDEyNykKIAl7Ci0JICBh c19iYWQgKCJTZWNvbmQgb3BlcmFuZCB0byAuc2F2ZS5iIG11c3QgYmUgYSBn ZW5lcmFsIHJlZ2lzdGVyLiIpOwotCSAgcmV0dXJuOworCSAgYXNfYmFkICgi U2Vjb25kIG9wZXJhbmQgdG8gLnNhdmUuYiBtdXN0IGJlIGEgZ2VuZXJhbCBy ZWdpc3RlciIpOworCSAgcmVnID0gMDsKKwl9CisgICAgICBlbHNlIGlmIChy ZWcgPiAxMjhVIC0gbikKKwl7CisJICBhc19iYWQgKCJTZWNvbmQgb3BlcmFu ZCB0byAuc2F2ZS5iIG11c3QgYmUgdGhlIGZpcnN0IG9mICVkIGdlbmVyYWwg cmVnaXN0ZXJzIiwgbik7CisJICByZWcgPSAwOwogCX0KLSAgICAgIGFkZF91 bndpbmRfZW50cnkgKG91dHB1dF9icl9nciAoYnJtYXNrLCBlMi5YX2FkZF9u dW1iZXIpKTsKKyAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9icl9n ciAoYnJtYXNrLCByZWcpLCAwKTsKICAgICB9CiAgIGVsc2UKLSAgICBhZGRf dW53aW5kX2VudHJ5IChvdXRwdXRfYnJfbWVtIChicm1hc2spKTsKLQotICBp ZiAoIWlzX2VuZF9vZl9saW5lW3NlcF0gJiYgIWlzX2l0X2VuZF9vZl9zdGF0 ZW1lbnQgKCkpCi0gICAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsK KyAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfYnJfbWVtIChicm1hc2sp LCAwKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTM5MjEsMjMgKzM5NTMsMzgg QEAgZG90X3NhdmVnZiAoZHVtbXkpCiAgICAgIGludCBkdW1teSBBVFRSSUJV VEVfVU5VU0VEOwogewogICBleHByZXNzaW9uUyBlMSwgZTI7Ci0gIGludCBz ZXA7CiAKICAgaWYgKCFpbl9wcm9sb2d1ZSAoInNhdmUuZ2YiKSkKICAgICBy ZXR1cm47CiAKLSAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUxKTsKLSAgaWYg KHNlcCA9PSAnLCcpCi0gICAgcGFyc2Vfb3BlcmFuZCAoJmUyKTsKLQotICBp ZiAoZTEuWF9vcCAhPSBPX2NvbnN0YW50IHx8IHNlcCAhPSAnLCcgfHwgZTIu WF9vcCAhPSBPX2NvbnN0YW50KQotICAgIGFzX2JhZCAoIkJvdGggb3BlcmFu ZHMgb2YgLnNhdmUuZ2YgbXVzdCBiZSBjb25zdGFudHMuIik7CisgIGlmIChw YXJzZV9vcGVyYW5kICgmZTEsICcsJykgPT0gJywnKQorICAgIHBhcnNlX29w ZXJhbmQgKCZlMiwgMCk7CiAgIGVsc2UKLSAgICB7Ci0gICAgICBpbnQgZ3Jt YXNrID0gZTEuWF9hZGRfbnVtYmVyOwotICAgICAgaW50IGZybWFzayA9IGUy LlhfYWRkX251bWJlcjsKLSAgICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1 dF9mcmdyX21lbSAoZ3JtYXNrLCBmcm1hc2spKTsKLSAgICB9CisgICAgZTIu WF9vcCA9IE9fYWJzZW50OworCisgIGlmIChlMS5YX29wICE9IE9fY29uc3Rh bnQKKyAgICAgIHx8IGUxLlhfYWRkX251bWJlciA8IDAKKyAgICAgIHx8IGUx LlhfYWRkX251bWJlciA+IDB4ZikKKyAgICB7CisgICAgICBhc19iYWQgKCJG aXJzdCBvcGVyYW5kIHRvIC5zYXZlLmdmIG11c3QgYmUgYSBub24tbmVnYXRp dmUgNC1iaXQgY29uc3RhbnQiKTsKKyAgICAgIGUxLlhfb3AgPSBPX2Fic2Vu dDsKKyAgICAgIGUxLlhfYWRkX251bWJlciA9IDA7CisgICAgfQorICBpZiAo ZTIuWF9vcCAhPSBPX2NvbnN0YW50CisgICAgICB8fCBlMi5YX2FkZF9udW1i ZXIgPCAwCisgICAgICB8fCBlMi5YX2FkZF9udW1iZXIgPiAweGZmZmZmKQor ICAgIHsKKyAgICAgIGFzX2JhZCAoIlNlY29uZCBvcGVyYW5kIHRvIC5zYXZl LmdmIG11c3QgYmUgYSBub24tbmVnYXRpdmUgMjAtYml0IGNvbnN0YW50Iik7 CisgICAgICBlMi5YX29wID0gT19hYnNlbnQ7CisgICAgICBlMi5YX2FkZF9u dW1iZXIgPSAwOworICAgIH0KKyAgaWYgKGUxLlhfb3AgPT0gT19jb25zdGFu dAorICAgICAgJiYgZTIuWF9vcCA9PSBPX2NvbnN0YW50CisgICAgICAmJiBl MS5YX2FkZF9udW1iZXIgPT0gMAorICAgICAgJiYgZTIuWF9hZGRfbnVtYmVy ID09IDApCisgICAgYXNfYmFkICgiT3BlcmFuZHMgdG8gLnNhdmUuZ2YgbWF5 IG5vdCBiZSBib3RoIHplcm8iKTsKKworICBhZGRfdW53aW5kX2VudHJ5IChv dXRwdXRfZnJncl9tZW0gKGUxLlhfYWRkX251bWJlciwgZTIuWF9hZGRfbnVt YmVyKSwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zOTQ1LDIwMSArMzk5 Miw5MyBAQCBkb3Rfc3BpbGwgKGR1bW15KQogICAgICBpbnQgZHVtbXkgQVRU UklCVVRFX1VOVVNFRDsKIHsKICAgZXhwcmVzc2lvblMgZTsKLSAgdW5zaWdu ZWQgY2hhciBzZXA7CiAKICAgaWYgKCFpbl9wcm9sb2d1ZSAoInNwaWxsIikp CiAgICAgcmV0dXJuOwogCi0gIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlKTsK LSAgaWYgKCFpc19lbmRfb2ZfbGluZVtzZXBdICYmICFpc19pdF9lbmRfb2Zf c3RhdGVtZW50ICgpKQotICAgIGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUg KCk7CisgIHBhcnNlX29wZXJhbmQgKCZlLCAwKTsKIAogICBpZiAoZS5YX29w ICE9IE9fY29uc3RhbnQpCi0gICAgYXNfYmFkICgiT3BlcmFuZCB0byAuc3Bp bGwgbXVzdCBiZSBhIGNvbnN0YW50Iik7Ci0gIGVsc2UKLSAgICBhZGRfdW53 aW5kX2VudHJ5IChvdXRwdXRfc3BpbGxfYmFzZSAoZS5YX2FkZF9udW1iZXIp KTsKLX0KLQotc3RhdGljIHZvaWQKLWRvdF9zcGlsbHJlZyAoZHVtbXkpCi0g ICAgIGludCBkdW1teSBBVFRSSUJVVEVfVU5VU0VEOwotewotICBpbnQgc2Vw OwotICB1bnNpZ25lZCBpbnQgYWIsIHh5LCByZWcsIHRyZWc7Ci0gIGV4cHJl c3Npb25TIGUxLCBlMjsKLQotICBpZiAoIWluX3Byb2NlZHVyZSAoInNwaWxs cmVnIikpCi0gICAgcmV0dXJuOwotCi0gIHNlcCA9IHBhcnNlX29wZXJhbmQg KCZlMSk7Ci0gIGlmIChzZXAgIT0gJywnKQotICAgIHsKLSAgICAgIGFzX2Jh ZCAoIk5vIHNlY29uZCBvcGVyYW5kIHRvIC5zcGlsbHJlZyIpOwotICAgICAg cmV0dXJuOwotICAgIH0KLQotICBwYXJzZV9vcGVyYW5kICgmZTIpOwotCi0g IGlmICghY29udmVydF9leHByX3RvX2FiX3JlZyAoJmUxLCAmYWIsICZyZWcp KQotICAgIHsKLSAgICAgIGFzX2JhZCAoIkZpcnN0IG9wZXJhbmQgdG8gLnNw aWxscmVnIG11c3QgYmUgYSBwcmVzZXJ2ZWQgcmVnaXN0ZXIiKTsKLSAgICAg IHJldHVybjsKLSAgICB9Ci0KLSAgaWYgKCFjb252ZXJ0X2V4cHJfdG9feHlf cmVnICgmZTIsICZ4eSwgJnRyZWcpKQogICAgIHsKLSAgICAgIGFzX2JhZCAo IlNlY29uZCBvcGVyYW5kIHRvIC5zcGlsbHJlZyBtdXN0IGJlIGEgcmVnaXN0 ZXIiKTsKLSAgICAgIHJldHVybjsKKyAgICAgIGFzX2JhZCAoIk9wZXJhbmQg dG8gLnNwaWxsIG11c3QgYmUgYSBjb25zdGFudCIpOworICAgICAgZS5YX2Fk ZF9udW1iZXIgPSAwOwogICAgIH0KLQotICBhZGRfdW53aW5kX2VudHJ5IChv dXRwdXRfc3BpbGxfcmVnIChhYiwgcmVnLCB0cmVnLCB4eSkpOworICBhZGRf dW53aW5kX2VudHJ5IChvdXRwdXRfc3BpbGxfYmFzZSAoZS5YX2FkZF9udW1i ZXIpLCAwKTsKIH0KIAogc3RhdGljIHZvaWQKLWRvdF9zcGlsbG1lbSAocHNw cmVsKQotICAgICBpbnQgcHNwcmVsOworZG90X3NwaWxscmVnIChwcmVkKQor ICAgICBpbnQgcHJlZDsKIHsKLSAgZXhwcmVzc2lvblMgZTEsIGUyOwogICBp bnQgc2VwOwotICB1bnNpZ25lZCBpbnQgYWIsIHJlZzsKKyAgdW5zaWduZWQg aW50IHFwLCBhYiwgeHksIHJlZywgdHJlZzsKKyAgZXhwcmVzc2lvblMgZTsK KyAgY29uc3QgY2hhciAqIGNvbnN0IHBvID0gcHJlZCA/ICJzcGlsbHJlZy5w IiA6ICJzcGlsbHJlZyI7CiAKLSAgaWYgKCFpbl9wcm9jZWR1cmUgKCJzcGls bG1lbSIpKQorICBpZiAoIWluX3Byb2NlZHVyZSAocG8pKQogICAgIHJldHVy bjsKIAotICBzZXAgPSBwYXJzZV9vcGVyYW5kICgmZTEpOwotICBpZiAoc2Vw ICE9ICcsJykKLSAgICB7Ci0gICAgICBhc19iYWQgKCJTZWNvbmQgb3BlcmFu ZCBtaXNzaW5nIik7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gIHBhcnNl X29wZXJhbmQgKCZlMik7Ci0KLSAgaWYgKCFjb252ZXJ0X2V4cHJfdG9fYWJf cmVnICgmZTEsICZhYiwgJnJlZykpCi0gICAgewotICAgICAgYXNfYmFkICgi Rmlyc3Qgb3BlcmFuZCB0byAuc3BpbGwlcyBtdXN0IGJlIGEgcHJlc2VydmVk IHJlZ2lzdGVyIiwKLQkgICAgICBwc3ByZWwgPyAicHNwIiA6ICJzcCIpOwot ICAgICAgcmV0dXJuOwotICAgIH0KLQotICBpZiAoZTIuWF9vcCAhPSBPX2Nv bnN0YW50KQotICAgIHsKLSAgICAgIGFzX2JhZCAoIlNlY29uZCBvcGVyYW5k IHRvIC5zcGlsbCVzIG11c3QgYmUgYSBjb25zdGFudCIsCi0JICAgICAgcHNw cmVsID8gInBzcCIgOiAic3AiKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K LSAgaWYgKHBzcHJlbCkKLSAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRf c3BpbGxfcHNwcmVsIChhYiwgcmVnLCBlMi5YX2FkZF9udW1iZXIpKTsKKyAg aWYgKHByZWQpCisgICAgc2VwID0gcGFyc2VfcHJlZGljYXRlX2FuZF9vcGVy YW5kICgmZSwgJnFwLCBwbyk7CiAgIGVsc2UKLSAgICBhZGRfdW53aW5kX2Vu dHJ5IChvdXRwdXRfc3BpbGxfc3ByZWwgKGFiLCByZWcsIGUyLlhfYWRkX251 bWJlcikpOwotfQotCi1zdGF0aWMgdm9pZAotZG90X3NwaWxscmVnX3AgKGR1 bW15KQotICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRDsKLXsKLSAg aW50IHNlcDsKLSAgdW5zaWduZWQgaW50IGFiLCB4eSwgcmVnLCB0cmVnOwot ICBleHByZXNzaW9uUyBlMSwgZTIsIGUzOwotICB1bnNpZ25lZCBpbnQgcXA7 Ci0KLSAgaWYgKCFpbl9wcm9jZWR1cmUgKCJzcGlsbHJlZy5wIikpCi0gICAg cmV0dXJuOwotCi0gIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlMSk7Ci0gIGlm IChzZXAgIT0gJywnKQotICAgIHsKLSAgICAgIGFzX2JhZCAoIk5vIHNlY29u ZCBhbmQgdGhpcmQgb3BlcmFuZCB0byAuc3BpbGxyZWcucCIpOwotICAgICAg cmV0dXJuOwotICAgIH0KLQotICBzZXAgPSBwYXJzZV9vcGVyYW5kICgmZTIp OwotICBpZiAoc2VwICE9ICcsJykKLSAgICB7Ci0gICAgICBhc19iYWQgKCJO byB0aGlyZCBvcGVyYW5kIHRvIC5zcGlsbHJlZy5wIik7Ci0gICAgICByZXR1 cm47Ci0gICAgfQotCi0gIHBhcnNlX29wZXJhbmQgKCZlMyk7Ci0KLSAgcXAg PSBlMS5YX2FkZF9udW1iZXIgLSBSRUdfUDsKLQotICBpZiAoZTEuWF9vcCAh PSBPX3JlZ2lzdGVyIHx8IHFwID4gNjMpCiAgICAgewotICAgICAgYXNfYmFk ICgiRmlyc3Qgb3BlcmFuZCB0byAuc3BpbGxyZWcucCBtdXN0IGJlIGEgcHJl ZGljYXRlIik7Ci0gICAgICByZXR1cm47CisgICAgICBzZXAgPSBwYXJzZV9v cGVyYW5kICgmZSwgJywnKTsKKyAgICAgIHFwID0gMDsKICAgICB9CisgIGNv bnZlcnRfZXhwcl90b19hYl9yZWcgKCZlLCAmYWIsICZyZWcsIHBvLCAxICsg cHJlZCk7CiAKLSAgaWYgKCFjb252ZXJ0X2V4cHJfdG9fYWJfcmVnICgmZTIs ICZhYiwgJnJlZykpCi0gICAgewotICAgICAgYXNfYmFkICgiU2Vjb25kIG9w ZXJhbmQgdG8gLnNwaWxscmVnLnAgbXVzdCBiZSBhIHByZXNlcnZlZCByZWdp c3RlciIpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICBpZiAoIWNvbnZl cnRfZXhwcl90b194eV9yZWcgKCZlMywgJnh5LCAmdHJlZykpCi0gICAgewot ICAgICAgYXNfYmFkICgiVGhpcmQgb3BlcmFuZCB0byAuc3BpbGxyZWcucCBt dXN0IGJlIGEgcmVnaXN0ZXIiKTsKLSAgICAgIHJldHVybjsKLSAgICB9Cisg IGlmIChzZXAgPT0gJywnKQorICAgIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZl LCAnLCcpOworICBlbHNlCisgICAgZS5YX29wID0gT19hYnNlbnQ7CisgIGNv bnZlcnRfZXhwcl90b194eV9yZWcgKCZlLCAmeHksICZ0cmVnLCBwbywgMiAr IHByZWQpOwogCi0gIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9zcGlsbF9y ZWdfcCAoYWIsIHJlZywgdHJlZywgeHksIHFwKSk7CisgIGFkZF91bndpbmRf ZW50cnkgKG91dHB1dF9zcGlsbF9yZWcgKGFiLCByZWcsIHRyZWcsIHh5LCBx cCksIHNlcCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1kb3Rfc3BpbGxtZW1fcCAo cHNwcmVsKQorZG90X3NwaWxsbWVtIChwc3ByZWwpCiAgICAgIGludCBwc3By ZWw7CiB7Ci0gIGV4cHJlc3Npb25TIGUxLCBlMiwgZTM7Ci0gIGludCBzZXA7 Ci0gIHVuc2lnbmVkIGludCBhYiwgcmVnOwotICB1bnNpZ25lZCBpbnQgcXA7 Ci0KLSAgaWYgKCFpbl9wcm9jZWR1cmUgKCJzcGlsbG1lbS5wIikpCi0gICAg cmV0dXJuOwotCi0gIHNlcCA9IHBhcnNlX29wZXJhbmQgKCZlMSk7Ci0gIGlm IChzZXAgIT0gJywnKQotICAgIHsKLSAgICAgIGFzX2JhZCAoIlNlY29uZCBv cGVyYW5kIG1pc3NpbmciKTsKLSAgICAgIHJldHVybjsKLSAgICB9CisgIGV4 cHJlc3Npb25TIGU7CisgIGludCBwcmVkID0gKHBzcHJlbCA8IDApLCBzZXA7 CisgIHVuc2lnbmVkIGludCBxcCwgYWIsIHJlZzsKKyAgY29uc3QgY2hhciAq IHBvOwogCi0gIHBhcnNlX29wZXJhbmQgKCZlMik7Ci0gIGlmIChzZXAgIT0g JywnKQorICBpZiAocHJlZCkKICAgICB7Ci0gICAgICBhc19iYWQgKCJTZWNv bmQgb3BlcmFuZCBtaXNzaW5nIik7Ci0gICAgICByZXR1cm47CisgICAgICBw c3ByZWwgPSB+cHNwcmVsOworICAgICAgcG8gPSBwc3ByZWwgPyAic3BpbGxw c3AucCIgOiAic3BpbGxzcC5wIjsKICAgICB9CisgIGVsc2UKKyAgICBwbyA9 IHBzcHJlbCA/ICJzcGlsbHBzcCIgOiAic3BpbGxzcCI7CiAKLSAgcGFyc2Vf b3BlcmFuZCAoJmUzKTsKLQotICBxcCA9IGUxLlhfYWRkX251bWJlciAtIFJF R19QOwotICBpZiAoZTEuWF9vcCAhPSBPX3JlZ2lzdGVyIHx8IHFwID4gNjMp Ci0gICAgewotICAgICAgYXNfYmFkICgiRmlyc3Qgb3BlcmFuZCB0byAuc3Bp bGwlc19wIG11c3QgYmUgYSBwcmVkaWNhdGUiLAotCSAgICAgIHBzcHJlbCA/ ICJwc3AiIDogInNwIik7Ci0gICAgICByZXR1cm47Ci0gICAgfQorICBpZiAo IWluX3Byb2NlZHVyZSAocG8pKQorICAgIHJldHVybjsKIAotICBpZiAoIWNv bnZlcnRfZXhwcl90b19hYl9yZWcgKCZlMiwgJmFiLCAmcmVnKSkKKyAgaWYg KHByZWQpCisgICAgc2VwID0gcGFyc2VfcHJlZGljYXRlX2FuZF9vcGVyYW5k ICgmZSwgJnFwLCBwbyk7CisgIGVsc2UKICAgICB7Ci0gICAgICBhc19iYWQg KCJTZWNvbmQgb3BlcmFuZCB0byAuc3BpbGwlc19wIG11c3QgYmUgYSBwcmVz ZXJ2ZWQgcmVnaXN0ZXIiLAotCSAgICAgIHBzcHJlbCA/ICJwc3AiIDogInNw Iik7Ci0gICAgICByZXR1cm47CisgICAgICBzZXAgPSBwYXJzZV9vcGVyYW5k ICgmZSwgJywnKTsKKyAgICAgIHFwID0gMDsKICAgICB9CisgIGNvbnZlcnRf ZXhwcl90b19hYl9yZWcgKCZlLCAmYWIsICZyZWcsIHBvLCAxICsgcHJlZCk7 CiAKLSAgaWYgKGUzLlhfb3AgIT0gT19jb25zdGFudCkKKyAgaWYgKHNlcCA9 PSAnLCcpCisgICAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoJmUsICcsJyk7Cisg IGVsc2UKKyAgICBlLlhfb3AgPSBPX2Fic2VudDsKKyAgaWYgKGUuWF9vcCAh PSBPX2NvbnN0YW50KQogICAgIHsKLSAgICAgIGFzX2JhZCAoIlRoaXJkIG9w ZXJhbmQgdG8gLnNwaWxsJXNfcCBtdXN0IGJlIGEgY29uc3RhbnQiLAotCSAg ICAgIHBzcHJlbCA/ICJwc3AiIDogInNwIik7Ci0gICAgICByZXR1cm47Cisg ICAgICBhc19iYWQgKCJPcGVyYW5kICVkIHRvIC4lcyBtdXN0IGJlIGEgY29u c3RhbnQiLCAyICsgcHJlZCwgcG8pOworICAgICAgZS5YX2FkZF9udW1iZXIg PSAwOwogICAgIH0KIAogICBpZiAocHNwcmVsKQotICAgIGFkZF91bndpbmRf ZW50cnkgKG91dHB1dF9zcGlsbF9wc3ByZWxfcCAoYWIsIHJlZywgZTMuWF9h ZGRfbnVtYmVyLCBxcCkpOworICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1 dF9zcGlsbF9wc3ByZWwgKGFiLCByZWcsIGUuWF9hZGRfbnVtYmVyLCBxcCks IHNlcCk7CiAgIGVsc2UKLSAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRf c3BpbGxfc3ByZWxfcCAoYWIsIHJlZywgZTMuWF9hZGRfbnVtYmVyLCBxcCkp OworICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9zcGlsbF9zcHJlbCAo YWIsIHJlZywgZS5YX2FkZF9udW1iZXIsIHFwKSwgc2VwKTsKIH0KIAogc3Rh dGljIHVuc2lnbmVkIGludApAQCAtNDIwNiwxNCArNDE0NSwxNSBAQCBkb3Rf bGFiZWxfc3RhdGUgKGR1bW15KQogICBpZiAoIWluX2JvZHkgKCJsYWJlbF9z dGF0ZSIpKQogICAgIHJldHVybjsKIAotICBwYXJzZV9vcGVyYW5kICgmZSk7 Ci0gIGlmIChlLlhfb3AgIT0gT19jb25zdGFudCkKKyAgcGFyc2Vfb3BlcmFu ZCAoJmUsIDApOworICBpZiAoZS5YX29wID09IE9fY29uc3RhbnQpCisgICAg c2F2ZV9wcm9sb2d1ZV9jb3VudCAoZS5YX2FkZF9udW1iZXIsIHVud2luZC5w cm9sb2d1ZV9jb3VudCk7CisgIGVsc2UKICAgICB7CiAgICAgICBhc19iYWQg KCJPcGVyYW5kIHRvIC5sYWJlbF9zdGF0ZSBtdXN0IGJlIGEgY29uc3RhbnQi KTsKLSAgICAgIHJldHVybjsKKyAgICAgIGUuWF9hZGRfbnVtYmVyID0gMDsK ICAgICB9Ci0gIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9sYWJlbF9zdGF0 ZSAoZS5YX2FkZF9udW1iZXIpKTsKLSAgc2F2ZV9wcm9sb2d1ZV9jb3VudCAo ZS5YX2FkZF9udW1iZXIsIHVud2luZC5wcm9sb2d1ZV9jb3VudCk7CisgIGFk ZF91bndpbmRfZW50cnkgKG91dHB1dF9sYWJlbF9zdGF0ZSAoZS5YX2FkZF9u dW1iZXIpLCAwKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQyMjUsMTQgKzQx NjUsMTUgQEAgZG90X2NvcHlfc3RhdGUgKGR1bW15KQogICBpZiAoIWluX2Jv ZHkgKCJjb3B5X3N0YXRlIikpCiAgICAgcmV0dXJuOwogCi0gIHBhcnNlX29w ZXJhbmQgKCZlKTsKLSAgaWYgKGUuWF9vcCAhPSBPX2NvbnN0YW50KQorICBw YXJzZV9vcGVyYW5kICgmZSwgMCk7CisgIGlmIChlLlhfb3AgPT0gT19jb25z dGFudCkKKyAgICB1bndpbmQucHJvbG9ndWVfY291bnQgPSBnZXRfc2F2ZWRf cHJvbG9ndWVfY291bnQgKGUuWF9hZGRfbnVtYmVyKTsKKyAgZWxzZQogICAg IHsKICAgICAgIGFzX2JhZCAoIk9wZXJhbmQgdG8gLmNvcHlfc3RhdGUgbXVz dCBiZSBhIGNvbnN0YW50Iik7Ci0gICAgICByZXR1cm47CisgICAgICBlLlhf YWRkX251bWJlciA9IDA7CiAgICAgfQotICBhZGRfdW53aW5kX2VudHJ5IChv dXRwdXRfY29weV9zdGF0ZSAoZS5YX2FkZF9udW1iZXIpKTsKLSAgdW53aW5k LnByb2xvZ3VlX2NvdW50ID0gZ2V0X3NhdmVkX3Byb2xvZ3VlX2NvdW50IChl LlhfYWRkX251bWJlcik7CisgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9j b3B5X3N0YXRlIChlLlhfYWRkX251bWJlciksIDApOwogfQogCiBzdGF0aWMg dm9pZApAQCAtNDI0MiwzMiArNDE4MywyOCBAQCBkb3RfdW53YWJpIChkdW1t eSkKICAgZXhwcmVzc2lvblMgZTEsIGUyOwogICB1bnNpZ25lZCBjaGFyIHNl cDsKIAotICBpZiAoIWluX3Byb2NlZHVyZSAoInVud2FiaSIpKQorICBpZiAo IWluX3Byb2xvZ3VlICgidW53YWJpIikpCiAgICAgcmV0dXJuOwogCi0gIHNl cCA9IHBhcnNlX29wZXJhbmQgKCZlMSk7Ci0gIGlmIChzZXAgIT0gJywnKQot ICAgIHsKLSAgICAgIGFzX2JhZCAoIlNlY29uZCBvcGVyYW5kIHRvIC51bndh YmkgbWlzc2luZyIpOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgc2VwID0g cGFyc2Vfb3BlcmFuZCAoJmUyKTsKLSAgaWYgKCFpc19lbmRfb2ZfbGluZVtz ZXBdICYmICFpc19pdF9lbmRfb2Zfc3RhdGVtZW50ICgpKQotICAgIGRlbWFu ZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7CisgIHNlcCA9IHBhcnNlX29wZXJh bmQgKCZlMSwgJywnKTsKKyAgaWYgKHNlcCA9PSAnLCcpCisgICAgcGFyc2Vf b3BlcmFuZCAoJmUyLCAwKTsKKyAgZWxzZQorICAgIGUyLlhfb3AgPSBPX2Fi c2VudDsKIAogICBpZiAoZTEuWF9vcCAhPSBPX2NvbnN0YW50KQogICAgIHsK ICAgICAgIGFzX2JhZCAoIkZpcnN0IG9wZXJhbmQgdG8gLnVud2FiaSBtdXN0 IGJlIGEgY29uc3RhbnQiKTsKLSAgICAgIHJldHVybjsKKyAgICAgIGUxLlhf YWRkX251bWJlciA9IDA7CiAgICAgfQogCiAgIGlmIChlMi5YX29wICE9IE9f Y29uc3RhbnQpCiAgICAgewogICAgICAgYXNfYmFkICgiU2Vjb25kIG9wZXJh bmQgdG8gLnVud2FiaSBtdXN0IGJlIGEgY29uc3RhbnQiKTsKLSAgICAgIHJl dHVybjsKKyAgICAgIGUyLlhfYWRkX251bWJlciA9IDA7CiAgICAgfQogCi0g IGFkZF91bndpbmRfZW50cnkgKG91dHB1dF91bndhYmkgKGUxLlhfYWRkX251 bWJlciwgZTIuWF9hZGRfbnVtYmVyKSk7CisgIGFkZF91bndpbmRfZW50cnkg KG91dHB1dF91bndhYmkgKGUxLlhfYWRkX251bWJlciwgZTIuWF9hZGRfbnVt YmVyKSwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00Mzc0LDE2ICs0MzEx LDE0IEBAIGRvdF9ib2R5IChkdW1teSkKICAgdW53aW5kLnByb2xvZ3VlX21h c2sgPSAwOwogICB1bndpbmQuYm9keSA9IDE7CiAKLSAgYWRkX3Vud2luZF9l bnRyeSAob3V0cHV0X2JvZHkgKCkpOwotICBkZW1hbmRfZW1wdHlfcmVzdF9v Zl9saW5lICgpOworICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRfYm9keSAo KSwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBkb3RfcHJvbG9ndWUgKGR1bW15 KQogICAgICBpbnQgZHVtbXkgQVRUUklCVVRFX1VOVVNFRDsKIHsKLSAgdW5z aWduZWQgY2hhciBzZXA7Ci0gIGludCBtYXNrID0gMCwgZ3JzYXZlID0gMDsK KyAgdW5zaWduZWQgbWFzayA9IDAsIGdyc2F2ZSA9IDA7CiAKICAgaWYgKCFp bl9wcm9jZWR1cmUgKCJwcm9sb2d1ZSIpKQogICAgIHJldHVybjsKQEAgLTQz OTgsMzYgKzQzMzMsNTMgQEAgZG90X3Byb2xvZ3VlIChkdW1teSkKIAogICBp ZiAoIWlzX2l0X2VuZF9vZl9zdGF0ZW1lbnQgKCkpCiAgICAgewotICAgICAg ZXhwcmVzc2lvblMgZTEsIGUyOwotICAgICAgc2VwID0gcGFyc2Vfb3BlcmFu ZCAoJmUxKTsKLSAgICAgIGlmIChzZXAgIT0gJywnKQotCWFzX2JhZCAoIk5v IHNlY29uZCBvcGVyYW5kIHRvIC5wcm9sb2d1ZSIpOwotICAgICAgc2VwID0g cGFyc2Vfb3BlcmFuZCAoJmUyKTsKLSAgICAgIGlmICghaXNfZW5kX29mX2xp bmVbc2VwXSAmJiAhaXNfaXRfZW5kX29mX3N0YXRlbWVudCAoKSkKLQlkZW1h bmRfZW1wdHlfcmVzdF9vZl9saW5lICgpOwotCi0gICAgICBpZiAoZTEuWF9v cCA9PSBPX2NvbnN0YW50KQotCXsKLQkgIG1hc2sgPSBlMS5YX2FkZF9udW1i ZXI7CisgICAgICBleHByZXNzaW9uUyBlOworICAgICAgaW50IG4sIHNlcCA9 IHBhcnNlX29wZXJhbmQgKCZlLCAnLCcpOwogCi0JICBpZiAoZTIuWF9vcCA9 PSBPX2NvbnN0YW50KQotCSAgICBncnNhdmUgPSBlMi5YX2FkZF9udW1iZXI7 Ci0JICBlbHNlIGlmIChlMi5YX29wID09IE9fcmVnaXN0ZXIKLQkJICAgJiYg KGdyc2F2ZSA9IGUyLlhfYWRkX251bWJlciAtIFJFR19HUikgPCAxMjgpCi0J ICAgIDsKLQkgIGVsc2UKLQkgICAgYXNfYmFkICgiU2Vjb25kIG9wZXJhbmQg bm90IGEgY29uc3RhbnQgb3IgZ2VuZXJhbCByZWdpc3RlciIpOworICAgICAg aWYgKGUuWF9vcCAhPSBPX2NvbnN0YW50CisJICB8fCBlLlhfYWRkX251bWJl ciA8IDAKKwkgIHx8IGUuWF9hZGRfbnVtYmVyID4gMHhmKQorCWFzX2JhZCAo IkZpcnN0IG9wZXJhbmQgdG8gLnByb2xvZ3VlIG11c3QgYmUgYSBwb3NpdGl2 ZSA0LWJpdCBjb25zdGFudCIpOworICAgICAgZWxzZSBpZiAoZS5YX2FkZF9u dW1iZXIgPT0gMCkKKwlhc193YXJuICgiUG9pbnRsZXNzIHVzZSBvZiB6ZXJv IGZpcnN0IG9wZXJhbmQgdG8gLnByb2xvZ3VlIik7CisgICAgICBlbHNlCisJ bWFzayA9IGUuWF9hZGRfbnVtYmVyOworCW4gPSBwb3Bjb3VudCAobWFzayk7 CiAKLQkgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9wcm9sb2d1ZV9nciAo bWFzaywgZ3JzYXZlKSk7Ci0JfQorICAgICAgaWYgKHNlcCA9PSAnLCcpCisJ cGFyc2Vfb3BlcmFuZCAoJmUsIDApOwogICAgICAgZWxzZQotCWFzX2JhZCAo IkZpcnN0IG9wZXJhbmQgbm90IGEgY29uc3RhbnQiKTsKKwllLlhfb3AgPSBP X2Fic2VudDsKKyAgICAgIGlmIChlLlhfb3AgPT0gT19jb25zdGFudAorCSAg JiYgZS5YX2FkZF9udW1iZXIgPj0gMAorCSAgJiYgZS5YX2FkZF9udW1iZXIg PCAxMjgpCisJeworCSAgaWYgKG1kLnVud2luZF9jaGVjayA9PSB1bndpbmRf Y2hlY2tfZXJyb3IpCisJICAgIGFzX3dhcm4gKCJVc2luZyBhIGNvbnN0YW50 IGFzIHNlY29uZCBvcGVyYW5kIHRvIC5wcm9sb2d1ZSBpcyBkZXByZWNhdGVk Iik7CisJICBncnNhdmUgPSBlLlhfYWRkX251bWJlcjsKKwl9CisgICAgICBl bHNlIGlmIChlLlhfb3AgIT0gT19yZWdpc3RlcgorCSAgICAgICB8fCAoZ3Jz YXZlID0gZS5YX2FkZF9udW1iZXIgLSBSRUdfR1IpID4gMTI3KQorCXsKKwkg IGFzX2JhZCAoIlNlY29uZCBvcGVyYW5kIHRvIC5wcm9sb2d1ZSBtdXN0IGJl IGEgZ2VuZXJhbCByZWdpc3RlciIpOworCSAgZ3JzYXZlID0gMDsKKwl9Cisg ICAgICBlbHNlIGlmIChncnNhdmUgPiAxMjhVIC0gbikKKwl7CisJICBhc19i YWQgKCJTZWNvbmQgb3BlcmFuZCB0byAucHJvbG9ndWUgbXVzdCBiZSB0aGUg Zmlyc3Qgb2YgJWQgZ2VuZXJhbCByZWdpc3RlcnMiLCBuKTsKKwkgIGdyc2F2 ZSA9IDA7CisJfQorCiAgICAgfQorCisgIGlmIChtYXNrKQorICAgIGFkZF91 bndpbmRfZW50cnkgKG91dHB1dF9wcm9sb2d1ZV9nciAobWFzaywgZ3JzYXZl KSwgMCk7CiAgIGVsc2UKLSAgICBhZGRfdW53aW5kX2VudHJ5IChvdXRwdXRf cHJvbG9ndWUgKCkpOworICAgIGFkZF91bndpbmRfZW50cnkgKG91dHB1dF9w cm9sb2d1ZSAoKSwgMCk7CiAKICAgdW53aW5kLnByb2xvZ3VlID0gMTsKICAg dW53aW5kLnByb2xvZ3VlX21hc2sgPSBtYXNrOworICB1bndpbmQucHJvbG9n dWVfZ3IgPSBncnNhdmU7CiAgIHVud2luZC5ib2R5ID0gMDsKICAgKyt1bndp bmQucHJvbG9ndWVfY291bnQ7CiB9CkBAIC01MzMyLDExICs1Mjg0LDExIEBA IGNvbnN0IHBzZXVkb190eXBlUyBtZF9wc2V1ZG9fdGFibGVbXSA9CiAgICAg eyAiZmZyYW1lIiwgZG90X2ZmcmFtZSwgMCB9LAogICAgIHsgInZmcmFtZSIs IGRvdF92ZnJhbWUsIDAgfSwKICAgICB7ICJ2ZnJhbWVzcCIsIGRvdF92ZnJh bWVzcCwgMCB9LAotICAgIHsgInZmcmFtZXBzcCIsIGRvdF92ZnJhbWVwc3As IDAgfSwKKyAgICB7ICJ2ZnJhbWVwc3AiLCBkb3RfdmZyYW1lc3AsIDEgfSwK ICAgICB7ICJzYXZlIiwgZG90X3NhdmUsIDAgfSwKICAgICB7ICJyZXN0b3Jl IiwgZG90X3Jlc3RvcmUsIDAgfSwKICAgICB7ICJyZXN0b3JlcmVnIiwgZG90 X3Jlc3RvcmVyZWcsIDAgfSwKLSAgICB7ICJyZXN0b3JlcmVnLnAiLCBkb3Rf cmVzdG9yZXJlZ19wLCAwIH0sCisgICAgeyAicmVzdG9yZXJlZy5wIiwgZG90 X3Jlc3RvcmVyZWcsIDEgfSwKICAgICB7ICJoYW5kbGVyZGF0YSIsIGRvdF9o YW5kbGVyZGF0YSwgMCB9LAogICAgIHsgInVud2VudHJ5IiwgZG90X3Vud2Vu dHJ5LCAwIH0sCiAgICAgeyAiYWx0cnAiLCBkb3RfYWx0cnAsIDAgfSwKQEAg LTUzNTAsOSArNTMwMiw5IEBAIGNvbnN0IHBzZXVkb190eXBlUyBtZF9wc2V1 ZG9fdGFibGVbXSA9CiAgICAgeyAic3BpbGxyZWciLCBkb3Rfc3BpbGxyZWcs IDAgfSwKICAgICB7ICJzcGlsbHNwIiwgZG90X3NwaWxsbWVtLCAwIH0sCiAg ICAgeyAic3BpbGxwc3AiLCBkb3Rfc3BpbGxtZW0sIDEgfSwKLSAgICB7ICJz cGlsbHJlZy5wIiwgZG90X3NwaWxscmVnX3AsIDAgfSwKLSAgICB7ICJzcGls bHNwLnAiLCBkb3Rfc3BpbGxtZW1fcCwgMCB9LAotICAgIHsgInNwaWxscHNw LnAiLCBkb3Rfc3BpbGxtZW1fcCwgMSB9LAorICAgIHsgInNwaWxscmVnLnAi LCBkb3Rfc3BpbGxyZWcsIDEgfSwKKyAgICB7ICJzcGlsbHNwLnAiLCBkb3Rf c3BpbGxtZW0sIH4wIH0sCisgICAgeyAic3BpbGxwc3AucCIsIGRvdF9zcGls bG1lbSwgfjEgfSwKICAgICB7ICJsYWJlbF9zdGF0ZSIsIGRvdF9sYWJlbF9z dGF0ZSwgMCB9LAogICAgIHsgImNvcHlfc3RhdGUiLCBkb3RfY29weV9zdGF0 ZSwgMCB9LAogICAgIHsgInVud2FiaSIsIGRvdF91bndhYmksIDAgfSwKQEAg LTYwNDUsMjcgKzU5OTcsMTkgQEAgb3BlcmFuZF9tYXRjaCAoaWRlc2MsIGlu ZGV4LCBlKQogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV9vcGVyYW5kIChlKQor cGFyc2Vfb3BlcmFuZCAoZSwgbW9yZSkKICAgICAgZXhwcmVzc2lvblMgKmU7 CisgICAgIGludCBtb3JlOwogewogICBpbnQgc2VwID0gJ1wwJzsKIAogICBt ZW1zZXQgKGUsIDAsIHNpemVvZiAoKmUpKTsKICAgZS0+WF9vcCA9IE9fYWJz ZW50OwogICBTS0lQX1dISVRFU1BBQ0UgKCk7Ci0gIGlmICgqaW5wdXRfbGlu ZV9wb2ludGVyICE9ICd9JykKLSAgICBleHByZXNzaW9uIChlKTsKLSAgc2Vw ID0gKmlucHV0X2xpbmVfcG9pbnRlcisrOwotCi0gIGlmIChzZXAgPT0gJ30n KQotICAgIHsKLSAgICAgIGlmICghbWQubWFudWFsX2J1bmRsaW5nKQotCWFz X3dhcm4gKCJGb3VuZCAnfScgd2hlbiBtYW51YWwgYnVuZGxpbmcgaXMgb2Zm Iik7Ci0gICAgICBlbHNlCi0JQ1VSUl9TTE9ULm1hbnVhbF9idW5kbGluZ19v ZmYgPSAxOwotICAgICAgbWQubWFudWFsX2J1bmRsaW5nID0gMDsKLSAgICAg IHNlcCA9ICdcMCc7Ci0gICAgfQorICBleHByZXNzaW9uIChlKTsKKyAgc2Vw ID0gKmlucHV0X2xpbmVfcG9pbnRlcjsKKyAgaWYgKG1vcmUgJiYgKHNlcCA9 PSAnLCcgfHwgc2VwID09IG1vcmUpKQorICAgICsraW5wdXRfbGluZV9wb2lu dGVyOwogICByZXR1cm4gc2VwOwogfQogCkBAIC02MTI0LDcgKzYwNjgsNyBA QCBwYXJzZV9vcGVyYW5kcyAoaWRlc2MpCiAgICAgewogICAgICAgaWYgKGkg PCBORUxFTVMgKENVUlJfU0xPVC5vcG5kKSkgCiAJewotCSAgc2VwID0gcGFy c2Vfb3BlcmFuZCAoQ1VSUl9TTE9ULm9wbmQgKyBpKTsKKwkgIHNlcCA9IHBh cnNlX29wZXJhbmQgKENVUlJfU0xPVC5vcG5kICsgaSwgJz0nKTsKIAkgIGlm IChDVVJSX1NMT1Qub3BuZFtpXS5YX29wID09IE9fYWJzZW50KQogCSAgICBi cmVhazsKIAl9CkBAIC02MTMyLDcgKzYwNzYsNyBAQCBwYXJzZV9vcGVyYW5k cyAoaWRlc2MpCiAJewogCSAgZXhwcmVzc2lvblMgZHVtbXk7CiAKLQkgIHNl cCA9IHBhcnNlX29wZXJhbmQgKCZkdW1teSk7CisJICBzZXAgPSBwYXJzZV9v cGVyYW5kICgmZHVtbXksICc9Jyk7CiAJICBpZiAoZHVtbXkuWF9vcCA9PSBP X2Fic2VudCkKIAkgICAgYnJlYWs7CiAJfQpAQCAtNjE3Nyw3ICs2MTIxLDcg QEAgcGFyc2Vfb3BlcmFuZHMgKGlkZXNjKQogCSAgLyogbm93IHdlIGNhbiBw YXJzZSB0aGUgZmlyc3QgYXJnOiAgKi8KIAkgIHNhdmVkX2lucHV0X3BvaW50 ZXIgPSBpbnB1dF9saW5lX3BvaW50ZXI7CiAJICBpbnB1dF9saW5lX3BvaW50 ZXIgPSBmaXJzdF9hcmc7Ci0JICBzZXAgPSBwYXJzZV9vcGVyYW5kIChDVVJS X1NMT1Qub3BuZCArIDApOworCSAgc2VwID0gcGFyc2Vfb3BlcmFuZCAoQ1VS Ul9TTE9ULm9wbmQgKyAwLCAnPScpOwogCSAgaWYgKHNlcCAhPSAnPScpCiAJ ICAgIC0tbnVtX291dHB1dHM7CS8qIGZvcmNlIGVycm9yICovCiAJICBpbnB1 dF9saW5lX3BvaW50ZXIgPSBzYXZlZF9pbnB1dF9wb2ludGVyOwpAQCAtNzYx NCw2ICs3NTU4LDE1IEBAIGlhNjRfZW5kX29mX3NvdXJjZSAoKQogdm9pZAog aWE2NF9zdGFydF9saW5lICgpCiB7CisgIHN0YXRpYyBpbnQgZmlyc3Q7CisK KyAgaWYgKCFmaXJzdCkgeworICAgIC8qIE1ha2Ugc3VyZSB3ZSBkb24ndCBy ZWZlcmVuY2UgaW5wdXRfbGluZV9wb2ludGVyWy0xXSB3aGVuIHRoYXQncwor ICAgICAgIG5vdCB2YWxpZC4gICovCisgICAgZmlyc3QgPSAxOworICAgIHJl dHVybjsKKyAgfQorCiAgIGlmIChtZC5xcC5YX29wID09IE9fcmVnaXN0ZXIp CiAgICAgYXNfYmFkICgicXVhbGlmeWluZyBwcmVkaWNhdGUgbm90IGZvbGxv d2VkIGJ5IGluc3RydWN0aW9uIik7CiAgIG1kLnFwLlhfb3AgPSBPX2Fic2Vu dDsKQEAgLTc2MzYsMzggKzc1ODksOCBAQCBpYTY0X3N0YXJ0X2xpbmUgKCkK ICAgICAgIGVsc2UKIAlpbnNuX2dyb3VwX2JyZWFrICgxLCAwLCAwKTsKICAg ICB9Ci19Ci0KLS8qIFRoaXMgaXMgYSBob29rIGZvciBpYTY0X2Zyb2JfbGFi ZWwsIHNvIHRoYXQgaXQgY2FuIGRpc3Rpbmd1aXNoIHRhZ3MgZnJvbQotICAg bGFiZWxzLiAgKi8KLXN0YXRpYyBpbnQgZGVmaW5pbmdfdGFnID0gMDsKLQot aW50Ci1pYTY0X3VucmVjb2duaXplZF9saW5lIChjaCkKLSAgICAgaW50IGNo OwotewotICBzd2l0Y2ggKGNoKQorICBlbHNlIGlmIChpbnB1dF9saW5lX3Bv aW50ZXJbLTFdID09ICd7JykKICAgICB7Ci0gICAgY2FzZSAnKCc6Ci0gICAg ICBleHByZXNzaW9uICgmbWQucXApOwotICAgICAgaWYgKCppbnB1dF9saW5l X3BvaW50ZXIrKyAhPSAnKScpCi0JewotCSAgYXNfYmFkICgiRXhwZWN0ZWQg JyknIik7Ci0JICByZXR1cm4gMDsKLQl9Ci0gICAgICBpZiAobWQucXAuWF9v cCAhPSBPX3JlZ2lzdGVyKQotCXsKLQkgIGFzX2JhZCAoIlF1YWxpZnlpbmcg cHJlZGljYXRlIGV4cGVjdGVkIik7Ci0JICByZXR1cm4gMDsKLQl9Ci0gICAg ICBpZiAobWQucXAuWF9hZGRfbnVtYmVyIDwgUkVHX1AgfHwgbWQucXAuWF9h ZGRfbnVtYmVyID49IFJFR19QICsgNjQpCi0JewotCSAgYXNfYmFkICgiUHJl ZGljYXRlIHJlZ2lzdGVyIGV4cGVjdGVkIik7Ci0JICByZXR1cm4gMDsKLQl9 Ci0gICAgICByZXR1cm4gMTsKLQotICAgIGNhc2UgJ3snOgogICAgICAgaWYg KG1kLm1hbnVhbF9idW5kbGluZykKIAlhc193YXJuICgiRm91bmQgJ3snIHdo ZW4gbWFudWFsIGJ1bmRsaW5nIGlzIGFscmVhZHkgdHVybmVkIG9uIik7CiAg ICAgICBlbHNlCkBAIC03Njg0LDkgKzc2MDcsOSBAQCBpYTY0X3VucmVjb2du aXplZF9saW5lIChjaCkKIAkgIGVsc2UKIAkgICAgYXNfd2FybiAoXygiRm91 bmQgJ3snIGFmdGVyIGV4cGxpY2l0IHN3aXRjaCB0byBhdXRvbWF0aWMgbW9k ZSIpKTsKIAl9Ci0gICAgICByZXR1cm4gMTsKLQotICAgIGNhc2UgJ30nOgor ICAgIH0KKyAgZWxzZSBpZiAoaW5wdXRfbGluZV9wb2ludGVyWy0xXSA9PSAn fScpCisgICAgewogICAgICAgaWYgKCFtZC5tYW51YWxfYnVuZGxpbmcpCiAJ YXNfd2FybiAoIkZvdW5kICd9JyB3aGVuIG1hbnVhbCBidW5kbGluZyBpcyBv ZmYiKTsKICAgICAgIGVsc2UKQEAgLTc2OTksMTcgKzc2MjIsMzYgQEAgaWE2 NF91bnJlY29nbml6ZWRfbGluZSAoY2gpCiAJICAmJiAhbWQubW9kZV9leHBs aWNpdGx5X3NldAogCSAgJiYgIW1kLmRlZmF1bHRfZXhwbGljaXRfbW9kZSkK IAlkb3RfZHZfbW9kZSAoJ0EnKTsKKyAgICB9Cit9CiAKLSAgICAgIC8qIEFs bG93ICd7JyB0byBmb2xsb3cgb24gdGhlIHNhbWUgbGluZS4gIFdlIGFsc28g YWxsb3cgIjs7IiwgYnV0IHRoYXQKLQkgaGFwcGVucyBhdXRvbWF0aWNhbGx5 IGJlY2F1c2UgJzsnIGlzIGFuIGVuZCBvZiBsaW5lIG1hcmtlci4gICovCi0g ICAgICBTS0lQX1dISVRFU1BBQ0UgKCk7Ci0gICAgICBpZiAoaW5wdXRfbGlu ZV9wb2ludGVyWzBdID09ICd7JykKKy8qIFRoaXMgaXMgYSBob29rIGZvciBp YTY0X2Zyb2JfbGFiZWwsIHNvIHRoYXQgaXQgY2FuIGRpc3Rpbmd1aXNoIHRh Z3MgZnJvbQorICAgbGFiZWxzLiAgKi8KK3N0YXRpYyBpbnQgZGVmaW5pbmdf dGFnID0gMDsKKworaW50CitpYTY0X3VucmVjb2duaXplZF9saW5lIChjaCkK KyAgICAgaW50IGNoOworeworICBzd2l0Y2ggKGNoKQorICAgIHsKKyAgICBj YXNlICcoJzoKKyAgICAgIGV4cHJlc3Npb24gKCZtZC5xcCk7CisgICAgICBp ZiAoKmlucHV0X2xpbmVfcG9pbnRlcisrICE9ICcpJykKIAl7Ci0JICBpbnB1 dF9saW5lX3BvaW50ZXIrKzsKLQkgIHJldHVybiBpYTY0X3VucmVjb2duaXpl ZF9saW5lICgneycpOworCSAgYXNfYmFkICgiRXhwZWN0ZWQgJyknIik7CisJ ICByZXR1cm4gMDsKKwl9CisgICAgICBpZiAobWQucXAuWF9vcCAhPSBPX3Jl Z2lzdGVyKQorCXsKKwkgIGFzX2JhZCAoIlF1YWxpZnlpbmcgcHJlZGljYXRl IGV4cGVjdGVkIik7CisJICByZXR1cm4gMDsKKwl9CisgICAgICBpZiAobWQu cXAuWF9hZGRfbnVtYmVyIDwgUkVHX1AgfHwgbWQucXAuWF9hZGRfbnVtYmVy ID49IFJFR19QICsgNjQpCisJeworCSAgYXNfYmFkICgiUHJlZGljYXRlIHJl Z2lzdGVyIGV4cGVjdGVkIik7CisJICByZXR1cm4gMDsKIAl9Ci0KLSAgICAg IGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7CiAgICAgICByZXR1cm4g MTsKIAogICAgIGNhc2UgJ1snOgpAQCAtMTE3MzIsNyArMTE2NzQsNyBAQCBk b3RfYWxpYXMgKGludCBzZWN0aW9uKQogICBpZiAobmFtZSA9PSBlbmRfbmFt ZSkKICAgICB7CiAgICAgICBhc19iYWQgKF8oImV4cGVjdGVkIHN5bWJvbCBu YW1lIikpOwotICAgICAgZGlzY2FyZF9yZXN0X29mX2xpbmUgKCk7CisgICAg ICBpZ25vcmVfcmVzdF9vZl9saW5lICgpOwogICAgICAgcmV0dXJuOwogICAg IH0KIAotLS0gL2hvbWUvamJldWxpY2gvc3JjL2JpbnV0aWxzL21haW5saW5l LzIwMDUtMDYtMjcvZ2FzL3Rlc3RzdWl0ZS9nYXMvaWE2NC9ncm91cC0yLnMJ MjAwNS0wNS0wOCAwMDoxOTozNy4wMDAwMDAwMDAgKzAyMDAKKysrIDIwMDUt MDYtMjcvZ2FzL3Rlc3RzdWl0ZS9nYXMvaWE2NC9ncm91cC0yLnMJMjAwNS0w NS0yMCAxNjo1Mzo1NC4wMDAwMDAwMDAgKzAyMDAKQEAgLTEsNiArMSw2IEBA CiAJLnNlY3Rpb24JLmdudS5saW5rb25jZS50LmZvbywiYXhHIixAcHJvZ2Jp dHMsZm9vLGNvbWRhdAogCS5wcm9jIGZvbyMKIGZvbzoKLQkucHJvbG9ndWUg MTIsIDMzCisJLnByb2xvZ3VlIDEyLCByMzMKIAk7OwogCS5lbmRwIGZvbyMK LS0tIC9ob21lL2piZXVsaWNoL3NyYy9iaW51dGlscy9tYWlubGluZS8yMDA1 LTA2LTI3L2dhcy90ZXN0c3VpdGUvZ2FzL2lhNjQvaWE2NC5leHAJMjAwNS0w NS0yNSAwODo1Nzo0NS4wMDAwMDAwMDAgKzAyMDAKKysrIDIwMDUtMDYtMjcv Z2FzL3Rlc3RzdWl0ZS9nYXMvaWE2NC9pYTY0LmV4cAkyMDA1LTA2LTE2IDE3 OjAxOjE0LjAwMDAwMDAwMCArMDIwMApAQCAtODQsNyArODQsMTAgQEAgaWYg W2lzdGFyZ2V0ICJpYTY0LSoiXSB0aGVuIHsKICAgICBydW5fbGlzdF90ZXN0 ICJwcm9jIiAiLW11bndpbmQtY2hlY2s9ZXJyb3IiCiAgICAgcnVuX2xpc3Rf dGVzdCAicmFkaXgiICIiCiAgICAgcnVuX2xpc3RfdGVzdCAic2xvdDIiICIi CisgICAgcnVuX2R1bXBfdGVzdCAic3RyYW5nZSIKKyAgICBydW5fbGlzdF90 ZXN0ICJ1bndpbmQtYmFkIiAiIgogICAgIHJ1bl9saXN0X3Rlc3QgInVud2lu ZC1lcnIiICItbXVud2luZC1jaGVjaz1lcnJvciIKKyAgICBydW5fZHVtcF90 ZXN0ICJ1bndpbmQtb2siCiAgICAgcnVuX2R1bXBfdGVzdCAib3BlcmFuZC1v ciIKICAgICBydW5fbGlzdF90ZXN0ICJoaW50LmItZXJyIiAiIgogICAgIHJ1 bl9saXN0X3Rlc3QgImhpbnQuYi13YXJuIiAiLW1oaW50LmI9d2FybmluZyIK LS0tIC9ob21lL2piZXVsaWNoL3NyYy9iaW51dGlscy9tYWlubGluZS8yMDA1 LTA2LTI3L2dhcy90ZXN0c3VpdGUvZ2FzL2lhNjQvc3RyYW5nZS5kCTE5NzAt MDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyAyMDA1LTA2LTI3 L2dhcy90ZXN0c3VpdGUvZ2FzL2lhNjQvc3RyYW5nZS5kCTIwMDUtMDYtMTAg MTc6MDU6NTAuMDAwMDAwMDAwICswMjAwCkBAIC0wLDAgKzEsMTkgQEAKKyNv YmpkdW1wOiAtcworI25hbWU6IGlhNjQgc3RyYW5nZQorCisuKjogK2ZpbGUg Zm9ybWF0IC4qCisKK0NvbnRlbnRzIG9mIHNlY3Rpb24gLnRleHQ6CisgMDAw MCAwYzAwMDAwMCAwMTAwMTAwMCAwMDAyMDAwMCAwMDAwMDQwMCAgLioKKyAw MDEwIDA0MDAwMDAwIDAxMDAwMDAwIDAwMDAwMDIwIDAwMDAwNDAwICAuKgor IDAwMjAgMGMwMDAwMDAgMDEwMDIwMDAgMDAwMjAwMDAgMDAwMDA0MDAgIC4q CisgMDAzMCAwNDAwMDAwMCAwMTAwMDAwMCAwMDAwMDA0MCAwMDAwMDQwMCAg LioKKyAwMDQwIDFjMDAwMDAwIDAxMDAzMDAwIDAwMDIwMDAwIDAwMDAwMDIw ICAuKgorIDAwNTAgMDQwMDAwMDAgMDEwMDAwMDAgMDAwMDAwODAgMDAwMDA0 MDAgIC4qCisgMDA2MCAwNDAwMDAwMCAwMTAwMDAwMCAwMDAwMDBhMCAwMDAw MDQwMCAgLioKKyAwMDcwIDA0MDAwMDAwIDAxMDAwMDAwIDAwMDAwMGMwIDAw MDAwNDAwICAuKgorIDAwODAgMDQwMDAwMDAgMDEwMDAwMDAgMDAwMDAwZTAg MDAwMDA0MDAgIC4qCisgMDA5MCAwZTAwMDAwMCAwMTAwMDAwMCAwMDAyMDAw MCAwMTAwMDQwMCAgLioKKyAwMGEwIDFkMDAwMDAwIDAxMDA5MDAwIDAwMDIw MDgwIDAwMDA4NDAwICAuKgorQ29udGVudHMgb2Ygc2VjdGlvbiAuZGF0YToK KyAwMDAwIGZmZmZmZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu KgotLS0gL2hvbWUvamJldWxpY2gvc3JjL2JpbnV0aWxzL21haW5saW5lLzIw MDUtMDYtMjcvZ2FzL3Rlc3RzdWl0ZS9nYXMvaWE2NC9zdHJhbmdlLnMJMTk3 MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIDIwMDUtMDYt MjcvZ2FzL3Rlc3RzdWl0ZS9nYXMvaWE2NC9zdHJhbmdlLnMJMjAwNS0wNi0x MCAxNzowMTozNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTAsMCArMSwxOCBAQAor LmV4cGxpY2l0CisudGV4dAorX3N0YXJ0Ogorey5tZmkKKwlub3AuZgkJMSB9 IG5vcC54IDEKK3subWZpCisJbm9wLmYJCTIKK30Jbm9wLngJCTIKK3subWZi CisJbm9wLmYJCTMKKy54ZGF0YTEgLmRhdGEsIC0xIH0gLnhkYXRhMSAuZGF0 YSwgLTEKKwlub3AueAkJNCB7IG5vcC54IDUKK30gewlub3AueAkJNiB9CisJ bm9wLngJCTcgey5tbWYKKwlub3AuZgkJOAorfSAueGRhdGExIC5kYXRhLCAt MSB7IC5tZmIKKwlub3AuZgkJOQorCWJyLnJldC5zcHRrCXJwIH0KLS0tIC9o b21lL2piZXVsaWNoL3NyYy9iaW51dGlscy9tYWlubGluZS8yMDA1LTA2LTI3 L2dhcy90ZXN0c3VpdGUvZ2FzL2lhNjQvdW53aW5kLWJhZC5sCTE5NzAtMDEt MDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyAyMDA1LTA2LTI3L2dh cy90ZXN0c3VpdGUvZ2FzL2lhNjQvdW53aW5kLWJhZC5sCTIwMDUtMDUtMjAg MTY6MzQ6MTAuMDAwMDAwMDAwICswMjAwCkBAIC0wLDAgKzEsNTEgQEAKKy4q OiBBc3NlbWJsZXIgbWVzc2FnZXM6CisuKjo4OiBFcnJvcjogRmlyc3Qgb3Bl cmFuZCB0byBcLnNhdmVcLmcgbXVzdCBiZSBhIHBvc2l0aXZlIDQtYml0IGNv bnN0YW50CisuKjoxMDogRXJyb3I6IEZpcnN0IG9wZXJhbmQgdG8gXC5zYXZl XC5nIG11c3QgYmUgYSBwb3NpdGl2ZSA0LWJpdCBjb25zdGFudAorLio6MTI6 IEVycm9yOiBGaXJzdCBvcGVyYW5kIHRvIFwuc2F2ZVwuZyBtdXN0IGJlIGEg cG9zaXRpdmUgNC1iaXQgY29uc3RhbnQKKyNGSVhNRSAuKjoxNjogRXJyb3I6 IFByZXZpb3VzIHNwaWxsIGluY29tcGxldGUKKyNGSVhNRSAuKjoxODogRXJy b3I6IFJlZ2lzdGVyIHI0IHdhcyBhbHJlYWR5IHNhdmVkCisuKjoyMDogRXJy b3I6IE9wZXJhbmQgdG8gXC5zYXZlXC5mIG11c3QgYmUgYSBwb3NpdGl2ZSAy MC1iaXQgY29uc3RhbnQKKy4qOjIyOiBFcnJvcjogT3BlcmFuZCB0byBcLnNh dmVcLmYgbXVzdCBiZSBhIHBvc2l0aXZlIDIwLWJpdCBjb25zdGFudAorLio6 MjQ6IEVycm9yOiBPcGVyYW5kIHRvIFwuc2F2ZVwuZiBtdXN0IGJlIGEgcG9z aXRpdmUgMjAtYml0IGNvbnN0YW50CisjRklYTUUgLio6Mjg6IEVycm9yOiBQ cmV2aW91cyBzcGlsbCBpbmNvbXBsZXRlCisjRklYTUUgLio6MzA6IEVycm9y OiBSZWdpc3RlciBmMiB3YXMgYWxyZWFkeSBzYXZlZAorLio6MzI6IEVycm9y OiBGaXJzdCBvcGVyYW5kIHRvIFwuc2F2ZVwuYiBtdXN0IGJlIGEgcG9zaXRp dmUgNS1iaXQgY29uc3RhbnQKKy4qOjM0OiBFcnJvcjogRmlyc3Qgb3BlcmFu ZCB0byBcLnNhdmVcLmIgbXVzdCBiZSBhIHBvc2l0aXZlIDUtYml0IGNvbnN0 YW50CisuKjozNjogRXJyb3I6IEZpcnN0IG9wZXJhbmQgdG8gXC5zYXZlXC5i IG11c3QgYmUgYSBwb3NpdGl2ZSA1LWJpdCBjb25zdGFudAorI0ZJWE1FIC4q OjQwOiBFcnJvcjogUHJldmlvdXMgc3BpbGwgaW5jb21wbGV0ZQorI0ZJWE1F IC4qOjQyOiBFcnJvcjogUmVnaXN0ZXIgYjEgd2FzIGFscmVhZHkgc2F2ZWQK Ky4qOjQ0OiBFcnJvcjogT3BlcmFuZCAyIHRvIFwuc3BpbGxyZWcgbXVzdCBi ZSBhIHdyaXRhYmxlIHJlZ2lzdGVyCisuKjo0NjogRXJyb3I6IE9wZXJhbmQg MSB0byBcLnNwaWxscmVnIG11c3QgYmUgYSBwcmVzZXJ2ZWQgcmVnaXN0ZXIK Ky4qOjQ4OiBFcnJvcjogT3BlcmFuZCAxIHRvIFwuc3BpbGxyZWcgbXVzdCBi ZSBhIHByZXNlcnZlZCByZWdpc3RlcgorLio6NTA6IEVycm9yOiBPcGVyYW5k IDEgdG8gXC5zcGlsbHJlZyBtdXN0IGJlIGEgcHJlc2VydmVkIHJlZ2lzdGVy CisuKjo1MjogRXJyb3I6IE9wZXJhbmQgMiB0byBcLnNwaWxscmVnIG11c3Qg YmUgYSB3cml0YWJsZSByZWdpc3RlcgorLio6NTQ6IEVycm9yOiBPcGVyYW5k IDIgdG8gXC5zcGlsbHJlZyBtdXN0IGJlIGEgd3JpdGFibGUgcmVnaXN0ZXIK Ky4qOjU2OiBFcnJvcjogT3BlcmFuZCAxIHRvIFwuc3BpbGxyZWcgbXVzdCBi ZSBhIHByZXNlcnZlZCByZWdpc3RlcgorI0ZJWE1FIC4qOjU4OiBFcnJvcjog RmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgY2Fubm90IGJlIHNwaWxsZWQgdG8g Z2VuZXJhbCByZWdpc3RlcgorI0ZJWE1FIC4qOjYwOiBFcnJvcjogRmxvYXRp bmcgcG9pbnQgcmVnaXN0ZXIgY2Fubm90IGJlIHNwaWxsZWQgdG8gYnJhbmNo IHJlZ2lzdGVyCisuKjo2MjogV2FybmluZzogUG9pbnRsZXNzIHVzZSBvZiBw MCBhcyBmaXJzdCBvcGVyYW5kIHRvIFwuc3BpbGxyZWdcLnAKKy4qOjY0OiBF cnJvcjogT3BlcmFuZCAzIHRvIFwuc3BpbGxyZWcucCBtdXN0IGJlIGEgd3Jp dGFibGUgcmVnaXN0ZXIKKy4qOjY2OiBFcnJvcjogT3BlcmFuZCAzIHRvIFwu c3BpbGxyZWcucCBtdXN0IGJlIGEgd3JpdGFibGUgcmVnaXN0ZXIKKy4qOjY4 OiBXYXJuaW5nOiBQb2ludGxlc3MgdXNlIG9mIHAwIGFzIGZpcnN0IG9wZXJh bmQgdG8gXC5yZXN0b3JlcmVnXC5wCisuKjo3ODogRXJyb3I6IE9wZXJhbmRz IHRvIFwuc2F2ZVwuZ2YgbWF5IG5vdCBiZSBib3RoIHplcm8KKy4qOjgwOiBF cnJvcjogRmlyc3Qgb3BlcmFuZCB0byBcLnNhdmVcLmdmIG11c3QgYmUgYSBu b24tbmVnYXRpdmUgNC1iaXQgY29uc3RhbnQKKy4qOjgyOiBFcnJvcjogU2Vj b25kIG9wZXJhbmQgdG8gXC5zYXZlXC5nZiBtdXN0IGJlIGEgbm9uLW5lZ2F0 aXZlIDIwLWJpdCBjb25zdGFudAorLio6ODQ6IEVycm9yOiBGaXJzdCBvcGVy YW5kIHRvIFwuc2F2ZVwuZ2YgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSA0LWJp dCBjb25zdGFudAorLio6ODY6IEVycm9yOiBTZWNvbmQgb3BlcmFuZCB0byBc LnNhdmVcLmdmIG11c3QgYmUgYSBub24tbmVnYXRpdmUgMjAtYml0IGNvbnN0 YW50CisjRklYTUUgLio6OTA6IEVycm9yOiBQcmV2aW91cyBzcGlsbCBpbmNv bXBsZXRlCisjRklYTUUgLio6OTI6IEVycm9yOiBSZWdpc3RlciByNCB3YXMg YWxyZWFkeSBzYXZlZAorI0ZJWE1FIC4qOjk0OiBFcnJvcjogUmVnaXN0ZXIg ZjIgd2FzIGFscmVhZHkgc2F2ZWQKKy4qOjk4OiBFcnJvcjogRXBpbG9ndWUg Y291bnQgb2YgMiBleGNlZWRzIG51bWJlciBvZiBuZXN0ZWQgcHJvbG9ndWVz IFwoMVwpCisuKjoxMDA6IEVycm9yOiBNaXNzaW5nIFwubGFiZWxfc3RhdGUg MgorLio6MTA4OiBFcnJvcjogRmlyc3Qgb3BlcmFuZCB0byBcLnNhdmVcLmcg bXVzdCBiZSBhIHBvc2l0aXZlIDQtYml0IGNvbnN0YW50CisjRklYTUUgLio6 MTEwOiBFcnJvcjogU2Vjb25kIG9wZXJhbmQgdG8gXC5zYXZlXC5nIG11c3Qg YmUgYSB3cml0YWJsZSBnZW5lcmFsIHJlZ2lzdGVycworLio6MTEyOiBFcnJv cjogU2Vjb25kIG9wZXJhbmQgdG8gXC5zYXZlXC5nIG11c3QgYmUgdGhlIGZp cnN0IG9mIDIgZ2VuZXJhbCByZWdpc3RlcnMKKy4qOjExNTogRXJyb3I6IEZp cnN0IG9wZXJhbmQgdG8gXC5zYXZlXC5iIG11c3QgYmUgYSBwb3NpdGl2ZSA1 LWJpdCBjb25zdGFudAorI0ZJWE1FIC4qOjExNzogRXJyb3I6IFNlY29uZCBv cGVyYW5kIHRvIFwuc2F2ZVwuYiBtdXN0IGJlIGEgd3JpdGFibGUgZ2VuZXJh bCByZWdpc3RlcnMKKy4qOjExOTogRXJyb3I6IFNlY29uZCBvcGVyYW5kIHRv IFwuc2F2ZVwuYiBtdXN0IGJlIHRoZSBmaXJzdCBvZiAyIGdlbmVyYWwgcmVn aXN0ZXJzCisuKjoxMjg6IEVycm9yOiBGaXJzdCBvcGVyYW5kIHRvIFwucHJv bG9ndWUgbXVzdCBiZSBhIHBvc2l0aXZlIDQtYml0IGNvbnN0YW50CisuKjox MzQ6IFdhcm5pbmc6IFBvaW50bGVzcyB1c2Ugb2YgemVybyBmaXJzdCBvcGVy YW5kIHRvIFwucHJvbG9ndWUKKy4qOjE0MDogRXJyb3I6IEZpcnN0IG9wZXJh bmQgdG8gXC5wcm9sb2d1ZSBtdXN0IGJlIGEgcG9zaXRpdmUgNC1iaXQgY29u c3RhbnQKKyNGSVhNRSAuKjoxNDE6IEVycm9yOiBPcGVyYW5kIHRvIFwudmZy YW1lIG11c3QgYmUgYSB3cml0YWJsZSBnZW5lcmFsIHJlZ2lzdGVycworI0ZJ WE1FIC4qOjE0NzogRXJyb3I6IFNlY29uZCBvcGVyYW5kIHRvIFwucHJvbG9n dWUgbXVzdCBiZSBhIHdyaXRhYmxlIGdlbmVyYWwgcmVnaXN0ZXJzCisuKjox NTM6IEVycm9yOiBTZWNvbmQgb3BlcmFuZCB0byBcLnByb2xvZ3VlIG11c3Qg YmUgdGhlIGZpcnN0IG9mIDIgZ2VuZXJhbCByZWdpc3RlcnMKLS0tIC9ob21l L2piZXVsaWNoL3NyYy9iaW51dGlscy9tYWlubGluZS8yMDA1LTA2LTI3L2dh cy90ZXN0c3VpdGUvZ2FzL2lhNjQvdW53aW5kLWJhZC5zCTE5NzAtMDEtMDEg MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyAyMDA1LTA2LTI3L2dhcy90 ZXN0c3VpdGUvZ2FzL2lhNjQvdW53aW5kLWJhZC5zCTIwMDUtMDUtMjAgMTY6 MjM6NDIuMDAwMDAwMDAwICswMjAwCkBAIC0wLDAgKzEsMTU1IEBACisudGV4 dAorCisucHJvYyBmdWxsMQorZnVsbDE6CisKKy5wcm9sb2d1ZQorLnNwaWxs IDAKKy5zYXZlLmcgMAorCW5vcAkJMAorLnNhdmUuZyAweDEwCisJbm9wCQkw Cisuc2F2ZS5nIC0xCisJbm9wCQkwCisuc2F2ZS5nIDB4MworCW5vcAkJMAor LnNhdmUuZyAweDQKKwlub3AJCTAKKy5zYXZlLmcgMHgxCisJbm9wCQkwCisu c2F2ZS5mIDAKKwlub3AJCTAKKy5zYXZlLmYgMHgxMDAwMDAKKwlub3AJCTAK Ky5zYXZlLmYgLTEKKwlub3AJCTAKKy5zYXZlLmYgMHgzCisJbm9wCQkwCisu c2F2ZS5mIDB4NAorCW5vcAkJMAorLnNhdmUuZiAweDEKKwlub3AJCTAKKy5z YXZlLmIgMAorCW5vcAkJMAorLnNhdmUuYiAweDIwCisJbm9wCQkwCisuc2F2 ZS5iIC0xCisJbm9wCQkwCisuc2F2ZS5iIDB4MworCW5vcAkJMAorLnNhdmUu YiAweDQKKwlub3AJCTAKKy5zYXZlLmIgMHgxCisJbm9wCQkwCisuc3BpbGxy ZWcgcjQsIHIwCisJbm9wCQkwCisuc3BpbGxyZWcgcjMsIHIyCisJbm9wCQkw Cisuc3BpbGxyZWcgcjgsIHI5CisJbm9wCQkwCisuc3BpbGxyZWcgYjYsIHIx MAorCW5vcAkJMAorLnNwaWxscmVnIGYyLCBmMAorCW5vcAkJMAorLnNwaWxs cmVnIGYzLCBmMQorCW5vcAkJMAorLnNwaWxscmVnIGY2LCBmNworCW5vcAkJ MAorLnNwaWxscmVnIGY0LCByMTEKKwlub3AJCTAKKy5zcGlsbHJlZyBmNSwg YjAKKwlub3AJCTAKKy5zcGlsbHJlZy5wIHAwLCByNCwgcjMKKwlub3AJCTAK Ky5zcGlsbHJlZy5wIHAxLCByNCwgcjAKKwlub3AJCTAKKy5zcGlsbHJlZy5w IHAxLCBmMTYsIGYwCisJbm9wCQkwCisucmVzdG9yZXJlZy5wIHAwLCByNAor CW5vcAkJMAorLmJvZHkKKwlici5yZXQuc3B0awlycAorLmVuZHAgZnVsbDEK KworLnByb2MgZnVsbDIKK2Z1bGwyOgorLnByb2xvZ3VlCisuc3BpbGwgMAor LnNhdmUuZ2YgMCwgMAorCW5vcAkJMAorLnNhdmUuZ2YgMHgxMCwgMAorCW5v cAkJMAorLnNhdmUuZ2YgMCwgMHgxMDAwMDAKKwlub3AJCTAKKy5zYXZlLmdm IH4wLCAwCisJbm9wCQkwCisuc2F2ZS5nZiAwLCB+MAorCW5vcAkJMAorLnNh dmUuZ2YgMSwgMQorCW5vcAkJMAorLnNhdmUuZ2YgMiwgMAorCW5vcAkJMAor LnNhdmUuZ2YgMSwgMAorCW5vcAkJMAorLnNhdmUuZ2YgMCwgMQorCW5vcAkJ MAorLmJvZHkKKy5sYWJlbF9zdGF0ZSAxCisucmVzdG9yZSBzcCwgMQorCW5v cC54CQkwCisuY29weV9zdGF0ZSAyCisJYnIucmV0LnNwdGsJcnAKKy5lbmRw IGZ1bGwyCisKKy5wcm9jIGZ1bGwzCitmdWxsMzoKKy5wcm9sb2d1ZQorLnNw aWxsIDAKKy5zYXZlLmcgMHgxMCwgcjE2CisJbm9wCQkwCisuc2F2ZS5nIDB4 MDEsIHIwCisJbm9wCQkwCisuc2F2ZS5nIDB4MDYsIHIxMjcKKwlub3AJCTAK Kwlub3AJCTAKKy5zYXZlLmIgMHgyMCwgcjE2CisJbm9wCQkwCisuc2F2ZS5i IDB4MDEsIHIwCisJbm9wCQkwCisuc2F2ZS5iIDB4MTgsIHIxMjcKKwlub3AJ CTAKKwlub3AJCTAKKy5ib2R5CisJYnIucmV0LnNwdGsJcnAKKy5lbmRwIGZ1 bGwzCisKKy5wcm9jIHNpbXBsZTEKK3NpbXBsZTE6CisucHJvbG9ndWUgMHgx MCwgcjIKKwlici5yZXQuc3B0awlycAorLmVuZHAgc2ltcGxlMQorCisucHJv YyBzaW1wbGUyCitzaW1wbGUyOgorLnByb2xvZ3VlIDAsIHIyCisJYnIucmV0 LnNwdGsJcnAKKy5lbmRwIHNpbXBsZTIKKworLnByb2Mgc2ltcGxlMworc2lt cGxlMzoKKy5wcm9sb2d1ZSAtMSwgcjIKKy52ZnJhbWUgcjAKKwlici5yZXQu c3B0awlycAorLmVuZHAgc2ltcGxlMworCisucHJvYyBzaW1wbGU0CitzaW1w bGU0OgorLnByb2xvZ3VlIDB4MSwgcjAKKwlici5yZXQuc3B0awlycAorLmVu ZHAgc2ltcGxlNAorCisucHJvYyBzaW1wbGU1CitzaW1wbGU1OgorLnByb2xv Z3VlIDB4YywgcjEyNworCWJyLnJldC5zcHRrCXJwCisuZW5kcCBzaW1wbGU1 Ci0tLSAvaG9tZS9qYmV1bGljaC9zcmMvYmludXRpbHMvbWFpbmxpbmUvMjAw NS0wNi0yNy9nYXMvdGVzdHN1aXRlL2dhcy9pYTY0L3Vud2luZC1lcnIubAky MDA1LTAyLTA4IDEwOjM4OjM4LjAwMDAwMDAwMCArMDEwMAorKysgMjAwNS0w Ni0yNy9nYXMvdGVzdHN1aXRlL2dhcy9pYTY0L3Vud2luZC1lcnIubAkyMDA1 LTA2LTI3IDExOjM4OjIyLjA0NDg3MTk0MyArMDIwMApAQCAtOCwyNyArOCwy OCBAQAogLio6NzogRXJyb3I6IC5ib2R5IG91dHNpZGUgb2YgcHJvY2VkdXJl CiAuKjo4OiBFcnJvcjogLnNwaWxscmVnIG91dHNpZGUgb2YgcHJvY2VkdXJl CiAuKjo5OiBFcnJvcjogLnNwaWxscmVnLnAgb3V0c2lkZSBvZiBwcm9jZWR1 cmUKLS4qOjEwOiBFcnJvcjogLnNwaWxsbWVtIG91dHNpZGUgb2YgcHJvY2Vk dXJlCi0uKjoxMTogRXJyb3I6IC5zcGlsbG1lbS5wIG91dHNpZGUgb2YgcHJv Y2VkdXJlCi0uKjoxMjogRXJyb3I6IC5zcGlsbG1lbSBvdXRzaWRlIG9mIHBy b2NlZHVyZQotLio6MTM6IEVycm9yOiAuc3BpbGxtZW0ucCBvdXRzaWRlIG9m IHByb2NlZHVyZQorLio6MTA6IEVycm9yOiAuc3BpbGxzcCBvdXRzaWRlIG9m IHByb2NlZHVyZQorLio6MTE6IEVycm9yOiAuc3BpbGxzcC5wIG91dHNpZGUg b2YgcHJvY2VkdXJlCisuKjoxMjogRXJyb3I6IC5zcGlsbHBzcCBvdXRzaWRl IG9mIHByb2NlZHVyZQorLio6MTM6IEVycm9yOiAuc3BpbGxwc3AucCBvdXRz aWRlIG9mIHByb2NlZHVyZQogLio6MTQ6IEVycm9yOiAucmVzdG9yZXJlZyBv dXRzaWRlIG9mIHByb2NlZHVyZQogLio6MTU6IEVycm9yOiAucmVzdG9yZXJl Zy5wIG91dHNpZGUgb2YgcHJvY2VkdXJlCiAuKjoyNDogRXJyb3I6IC5sYWJl bF9zdGF0ZSBvdXRzaWRlIG9mIGJvZHkgcmVnaW9uCiAuKjoyNTogRXJyb3I6 IC5jb3B5X3N0YXRlIG91dHNpZGUgb2YgYm9keSByZWdpb24KIC4qOjI2OiBF cnJvcjogLmZmcmFtZSBvdXRzaWRlIG9mIHByb2xvZ3VlCiAuKjoyNzogRXJy b3I6IC52ZnJhbWUgb3V0c2lkZSBvZiBwcm9sb2d1ZQotLio6Mjg6IEVycm9y OiAuc3BpbGwgb3V0c2lkZSBvZiBwcm9sb2d1ZQotLio6Mjk6IEVycm9yOiAu cmVzdG9yZSBvdXRzaWRlIG9mIGJvZHkgcmVnaW9uCi0uKjozMDogRXJyb3I6 IC5zYXZlIG91dHNpZGUgb2YgcHJvbG9ndWUKLS4qOjMxOiBFcnJvcjogLnNh dmVzcCBvdXRzaWRlIG9mIHByb2xvZ3VlCi0uKjozMjogRXJyb3I6IC5zYXZl cHNwIG91dHNpZGUgb2YgcHJvbG9ndWUKLS4qOjMzOiBFcnJvcjogLnNhdmUu ZyBvdXRzaWRlIG9mIHByb2xvZ3VlCi0uKjozNDogRXJyb3I6IC5zYXZlLmdm IG91dHNpZGUgb2YgcHJvbG9ndWUKLS4qOjM1OiBFcnJvcjogLnNhdmUuZiBv dXRzaWRlIG9mIHByb2xvZ3VlCi0uKjozNjogRXJyb3I6IC5zYXZlLmIgb3V0 c2lkZSBvZiBwcm9sb2d1ZQotLio6Mzc6IEVycm9yOiAuYWx0cnAgb3V0c2lk ZSBvZiBwcm9sb2d1ZQotLio6NDI6IEVycm9yOiAucHJvbG9ndWUgd2l0aGlu IHByb2xvZ3VlCi0uKjo1MDogRXJyb3I6IC5ib2R5IG91dHNpZGUgb2YgcHJv Y2VkdXJlCi0uKjo1NzogV2FybmluZzogSW5pdGlhbCAucHJvbG9ndWUuKgot Lio6NjQ6IFdhcm5pbmc6IEluaXRpYWwgLmJvZHkuKgorLio6Mjg6IEVycm9y OiAudmZyYW1lc3Agb3V0c2lkZSBvZiBwcm9sb2d1ZQorLio6Mjk6IEVycm9y OiAuc3BpbGwgb3V0c2lkZSBvZiBwcm9sb2d1ZQorLio6MzA6IEVycm9yOiAu cmVzdG9yZSBvdXRzaWRlIG9mIGJvZHkgcmVnaW9uCisuKjozMTogRXJyb3I6 IC5zYXZlIG91dHNpZGUgb2YgcHJvbG9ndWUKKy4qOjMyOiBFcnJvcjogLnNh dmVzcCBvdXRzaWRlIG9mIHByb2xvZ3VlCisuKjozMzogRXJyb3I6IC5zYXZl cHNwIG91dHNpZGUgb2YgcHJvbG9ndWUKKy4qOjM0OiBFcnJvcjogLnNhdmUu ZyBvdXRzaWRlIG9mIHByb2xvZ3VlCisuKjozNTogRXJyb3I6IC5zYXZlLmdm IG91dHNpZGUgb2YgcHJvbG9ndWUKKy4qOjM2OiBFcnJvcjogLnNhdmUuZiBv dXRzaWRlIG9mIHByb2xvZ3VlCisuKjozNzogRXJyb3I6IC5zYXZlLmIgb3V0 c2lkZSBvZiBwcm9sb2d1ZQorLio6Mzg6IEVycm9yOiAuYWx0cnAgb3V0c2lk ZSBvZiBwcm9sb2d1ZQorLio6NDM6IEVycm9yOiAucHJvbG9ndWUgd2l0aGlu IHByb2xvZ3VlCisuKjo1MTogRXJyb3I6IC5ib2R5IG91dHNpZGUgb2YgcHJv Y2VkdXJlCisuKjo1ODogV2FybmluZzogSW5pdGlhbCAucHJvbG9ndWUuKgor Lio6NjU6IFdhcm5pbmc6IEluaXRpYWwgLmJvZHkuKgotLS0gL2hvbWUvamJl dWxpY2gvc3JjL2JpbnV0aWxzL21haW5saW5lLzIwMDUtMDYtMjcvZ2FzL3Rl c3RzdWl0ZS9nYXMvaWE2NC91bndpbmQtZXJyLnMJMjAwNS0wMi0wOCAxMDoz NjoxOC4wMDAwMDAwMDAgKzAxMDAKKysrIDIwMDUtMDYtMjcvZ2FzL3Rlc3Rz dWl0ZS9nYXMvaWE2NC91bndpbmQtZXJyLnMJMjAwNS0wNi0yNyAxMTozNzo1 Mi4zNTM0NjYwNTcgKzAyMDAKQEAgLTI1LDYgKzI1LDcgQEAgc3RhcnQ6CiAu Y29weV9zdGF0ZSAxCiAuZmZyYW1lIDAKIC52ZnJhbWUgcjAKKy52ZnJhbWVz cCAwCiAuc3BpbGwgMAogLnJlc3RvcmUgc3AKIC5zYXZlIHJwLCByMAotLS0g L2hvbWUvamJldWxpY2gvc3JjL2JpbnV0aWxzL21haW5saW5lLzIwMDUtMDYt MjcvZ2FzL3Rlc3RzdWl0ZS9nYXMvaWE2NC91bndpbmQtb2suZAkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgMjAwNS0wNi0yNy9n YXMvdGVzdHN1aXRlL2dhcy9pYTY0L3Vud2luZC1vay5kCTIwMDUtMDYtMjcg MTE6Mzc6MzEuNjgwNjE0NzQ4ICswMjAwCkBAIC0wLDAgKzEsMjI0IEBACisj cmVhZGVsZjogLXUKKyNuYW1lOiBpYTY0IHVud2luZCBkZXNjcmlwdG9ycwor CitVbndpbmQgc2VjdGlvbiAnXC5JQV82NFwudW53aW5kJyBhdCBvZmZzZXQg MHhbWzp4ZGlnaXQ6XV0rIGNvbnRhaW5zIDggZW50cmllczoKKworPGZ1bGwx PjogXFsweFtbOnhkaWdpdDpdXSowLTB4W1s6eGRpZ2l0Ol1dKjBcXSwgaW5m byBhdCBcKzB4W1s6eGRpZ2l0Ol1dKlswOF0KK1tbOnNwYWNlOl1dKnZbWzpk aWdpdDpdXSssIGZsYWdzPTB4MyBcKCA/ZWhhbmRsZXIgdWhhbmRsZXJcKSwg bGVuPVtbOmRpZ2l0Ol1dKyBieXRlcworW1s6c3BhY2U6XV0qUjE6cHJvbG9n dWVcKHJsZW49OFwpCitbWzpzcGFjZTpdXSpQNjpmcl9tZW1cKGZybWFzaz1c W2YyLGY1XF1cKQorW1s6c3BhY2U6XV0qUDY6Z3JfbWVtXChncm1hc2s9XFty NCxyN1xdXCkKK1tbOnNwYWNlOl1dKlAxOmJyX21lbVwoYnJtYXNrPVxbYjEs YjVcXVwpCitbWzpzcGFjZTpdXSpQNDpzcGlsbF9tYXNrXChpbWFzaz1cW3Jm YixyZmIsLS1cXVwpCitbWzpzcGFjZTpdXSpQNzpzcGlsbF9iYXNlXChwc3Bv ZmY9MHgxMC0weDEwXCkKK1tbOnNwYWNlOl1dKlAzOnJwX2JyXChyZWc9Yjdc KQorW1s6c3BhY2U6XV0qUDEwOnVud2FiaVwoYWJpPUBzdnI0LGNvbnRleHQ9 MHgwMFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPVtbOmRpZ2l0Ol1d K1wpCitbWzpzcGFjZTpdXSpYMjpzcGlsbF9yZWdcKHQ9MCxyZWc9cjQsdHJl Zz1yMlwpCitbWzpzcGFjZTpdXSpYNDpzcGlsbF9yZWdfcFwocXA9cDEsdD0x LHJlZz1yNyx0cmVnPXIzMVwpCitbWzpzcGFjZTpdXSpYMTpzcGlsbF9zcHJl bFwocmVnPWIxLHQ9MixzcG9mZj0weDhcKQorW1s6c3BhY2U6XV0qWDM6c3Bp bGxfc3ByZWxfcFwocXA9cDIsdD0zLHJlZz1iNSxzcG9mZj0weDEwXCkKK1tb OnNwYWNlOl1dKlgxOnNwaWxsX3BzcHJlbFwocmVnPWYyLHQ9NCxwc3BvZmY9 MHgxMC0weDI4XCkKK1tbOnNwYWNlOl1dKlgzOnNwaWxsX3BzcHJlbF9wXChx cD1wNCx0PTUscmVnPWY1LHBzcG9mZj0weDEwLTB4MzBcKQorW1s6c3BhY2U6 XV0qWDI6cmVzdG9yZVwodD02LHJlZz1mMTZcKQorW1s6c3BhY2U6XV0qWDQ6 cmVzdG9yZV9wXChxcD1wOCx0PTcscmVnPWYzMVwpCitbWzpzcGFjZTpdXSpY MjpzcGlsbF9yZWdcKHQ9OCxyZWc9YXJcLmJzcCx0cmVnPXIxNlwpCitbWzpz cGFjZTpdXSpYMjpzcGlsbF9yZWdcKHQ9OSxyZWc9YXJcLmJzcHN0b3JlLHRy ZWc9cjE3XCkKK1tbOnNwYWNlOl1dKlgyOnNwaWxsX3JlZ1wodD0xMCxyZWc9 YXJcLmZwc3IsdHJlZz1yMThcKQorW1s6c3BhY2U6XV0qWDI6c3BpbGxfcmVn XCh0PTExLHJlZz1hclwubGMsdHJlZz1yMTlcKQorW1s6c3BhY2U6XV0qWDI6 c3BpbGxfcmVnXCh0PTEyLHJlZz1hclwucGZzLHRyZWc9cjIwXCkKK1tbOnNw YWNlOl1dKlgyOnNwaWxsX3JlZ1wodD0xMyxyZWc9YXJcLnJuYXQsdHJlZz1y MjFcKQorW1s6c3BhY2U6XV0qWDI6c3BpbGxfcmVnXCh0PTE0LHJlZz1hclwu dW5hdCx0cmVnPXIyMlwpCitbWzpzcGFjZTpdXSpYMjpzcGlsbF9yZWdcKHQ9 MTUscmVnPXBzcCx0cmVnPXIyM1wpCitbWzpzcGFjZTpdXSpYMjpzcGlsbF9y ZWdcKHQ9MTYscmVnPXByLHRyZWc9cjI0XCkKK1tbOnNwYWNlOl1dKlgyOnNw aWxsX3JlZ1wodD0xNyxyZWc9cnAsdHJlZz1yMjVcKQorW1s6c3BhY2U6XV0q WDI6c3BpbGxfcmVnXCh0PTE4LHJlZz1AcHJpdW5hdCx0cmVnPXIyNlwpCitb WzpzcGFjZTpdXSpCMTpsYWJlbF9zdGF0ZVwobGFiZWw9MVwpCitbWzpzcGFj ZTpdXSpCMjplcGlsb2d1ZVwodD00LGVjb3VudD0wXCkKK1tbOnNwYWNlOl1d KkIxOmNvcHlfc3RhdGVcKGxhYmVsPTFcKQorIy4uLgorPGZ1bGwyPjogXFsw eFtbOnhkaWdpdDpdXSowLTB4W1s6eGRpZ2l0Ol1dKjBcXSwgaW5mbyBhdCBc KzB4W1s6eGRpZ2l0Ol1dKlswOF0KK1tbOnNwYWNlOl1dKnZbWzpkaWdpdDpd XSssIGZsYWdzPTB4MCggXChcKSk/LCBsZW49W1s6ZGlnaXQ6XV0rIGJ5dGVz CitbWzpzcGFjZTpdXSpSMjpwcm9sb2d1ZV9nclwobWFzaz1cW3JwLHBzcCxw clxdLGdyc2F2ZT1yOCxybGVuPTE0XCkKK1tbOnNwYWNlOl1dKlA1OmZyZ3Jf bWVtXChncm1hc2s9XFtyNCxyN1xdLGZybWFzaz1cW2YyLGYzMVxdXCkKK1tb OnNwYWNlOl1dKlA0OnNwaWxsX21hc2tcKGltYXNrPVxbYi1iLGJiLSwtLS0s LS0tLC0tXF1cKQorW1s6c3BhY2U6XV0qUDc6c3BpbGxfYmFzZVwocHNwb2Zm PTB4MTAtMHgxMFwpCitbWzpzcGFjZTpdXSpQMjpicl9nclwoYnJtYXNrPVxb YjEsYjVcXSxncj1yMzJcKQorW1s6c3BhY2U6XV0qWDI6c3BpbGxfcmVnXCh0 PTYscmVnPWYzMSx0cmVnPWYzMVwpCitbWzpzcGFjZTpdXSpYNDpzcGlsbF9y ZWdfcFwocXA9cDYzLHQ9NyxyZWc9ZjE2LHRyZWc9ZjBcKQorW1s6c3BhY2U6 XV0qWDE6c3BpbGxfc3ByZWxcKHJlZz1mNSx0PTgsc3BvZmY9MHgyMFwpCitb WzpzcGFjZTpdXSpYMzpzcGlsbF9zcHJlbF9wXChxcD1wMzEsdD05LHJlZz1m MixzcG9mZj0weDE4XCkKK1tbOnNwYWNlOl1dKlgxOnNwaWxsX3BzcHJlbFwo cmVnPWI1LHQ9MTAscHNwb2ZmPTB4MTAtMHgyMFwpCitbWzpzcGFjZTpdXSpY MzpzcGlsbF9wc3ByZWxfcFwocXA9cDE1LHQ9MTEscmVnPWIxLHBzcG9mZj0w eDEwLTB4MThcKQorW1s6c3BhY2U6XV0qWDI6cmVzdG9yZVwodD0xMixyZWc9 cjdcKQorW1s6c3BhY2U6XV0qWDQ6cmVzdG9yZV9wXChxcD1wNyx0PTEzLHJl Zz1yNFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3Bh Y2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpi b2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49 MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6 XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5 XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwp CitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0q UjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChy bGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitb WzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6 cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVu PTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpz cGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJv bG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBc KQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFj ZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9n dWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQor W1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpd XSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVc KHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6 c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpS MTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJs ZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3Bh Y2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpi b2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49 MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6 XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5 XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwp CitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0q UjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChy bGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitb WzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6 cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVu PTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpz cGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJv bG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBc KQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFj ZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9n dWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQor W1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpd XSpSMTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVc KHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6 c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpS MTpib2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJs ZW49MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTBcKQorW1s6c3Bh Y2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49MFwpCitbWzpzcGFjZTpdXSpSMTpi b2R5XChybGVuPTBcKQorW1s6c3BhY2U6XV0qUjE6cHJvbG9ndWVcKHJsZW49 MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTdcKQorW1s6c3BhY2U6 XV0qQjQ6bGFiZWxfc3RhdGVcKGxhYmVsPTMyXCkKK1tbOnNwYWNlOl1dKkIz OmVwaWxvZ3VlXCh0PTQsZWNvdW50PTMyXCkKK1tbOnNwYWNlOl1dKkI0OmNv cHlfc3RhdGVcKGxhYmVsPTMyXCkKKyMuLi4KKzxmdWxsMz46IFxbMHhbWzp4 ZGlnaXQ6XV0qMC0weFtbOnhkaWdpdDpdXSowXF0sIGluZm8gYXQgXCsweFtb OnhkaWdpdDpdXSpbMDhdCitbWzpzcGFjZTpdXSp2W1s6ZGlnaXQ6XV0rLCBm bGFncz0weDAoIFwoXCkpPywgbGVuPVtbOmRpZ2l0Ol1dKyBieXRlcworW1s6 c3BhY2U6XV0qUjM6cHJvbG9ndWVcKHJsZW49MzNcKQorW1s6c3BhY2U6XV0q UDQ6c3BpbGxfbWFza1woaW1hc2s9XFtycmIsYnJyLGJiLSwtLS0sLS0tLC0t LSwtLS0sLS0tLC0tLSwtLS0sLS0tXF1cKQorW1s6c3BhY2U6XV0qUDc6c3Bp bGxfYmFzZVwocHNwb2ZmPTB4MTAtMHgxMFwpCitbWzpzcGFjZTpdXSpQOTpn cl9nclwoZ3JtYXNrPVxbcjQscjVcXSxyMzJcKQorW1s6c3BhY2U6XV0qUDI6 YnJfZ3JcKGJybWFzaz1cW2IxLGIyXF0sZ3I9cjM0XCkKK1tbOnNwYWNlOl1d KlA5OmdyX2dyXChncm1hc2s9XFtyNixyN1xdLHIxMjRcKQorW1s6c3BhY2U6 XV0qUDI6YnJfZ3JcKGJybWFzaz1cW2I0LGI1XF0sZ3I9cjEyNlwpCitbWzpz cGFjZTpdXSpSMzpib2R5XChybGVuPTMzXCkKKyMuLi4KKzxmZnJhbWU+OiBc WzB4W1s6eGRpZ2l0Ol1dKjAtMHhbWzp4ZGlnaXQ6XV0qMFxdLCBpbmZvIGF0 IFwrMHhbWzp4ZGlnaXQ6XV0qWzA4XQorW1s6c3BhY2U6XV0qdltbOmRpZ2l0 Ol1dKywgZmxhZ3M9MHgwKCBcKFwpKT8sIGxlbj1bWzpkaWdpdDpdXSsgYnl0 ZXMKK1tbOnNwYWNlOl1dKlIxOnByb2xvZ3VlXChybGVuPTFcKQorW1s6c3Bh Y2U6XV0qUDc6bWVtX3N0YWNrX2ZcKHQ9MCxzaXplPTBcKQorW1s6c3BhY2U6 XV0qUjE6Ym9keVwocmxlbj0yXCkKKyMuLi4KKzx2ZnJhbWU+OiBcWzB4W1s6 eGRpZ2l0Ol1dKjAtMHhbWzp4ZGlnaXQ6XV0qMFxdLCBpbmZvIGF0IFwrMHhb Wzp4ZGlnaXQ6XV0qWzA4XQorW1s6c3BhY2U6XV0qdltbOmRpZ2l0Ol1dKywg ZmxhZ3M9MHgwKCBcKFwpKT8sIGxlbj1bWzpkaWdpdDpdXSsgYnl0ZXMKK1tb OnNwYWNlOl1dKlIxOnByb2xvZ3VlXChybGVuPTExXCkKK1tbOnNwYWNlOl1d KlA3Om1lbV9zdGFja192XCh0PTBcKQorW1s6c3BhY2U6XV0qUDM6cHNwX2dy XChyZWc9cjE2XCkKK1tbOnNwYWNlOl1dKlA4OmJzcF93aGVuXCh0PTFcKQor W1s6c3BhY2U6XV0qUDM6YnNwX2dyXChyZWc9cjE3XCkKK1tbOnNwYWNlOl1d KlA4OmJzcHN0b3JlX3doZW5cKHQ9MlwpCitbWzpzcGFjZTpdXSpQMzpic3Bz dG9yZV9nclwocmVnPXIxOFwpCitbWzpzcGFjZTpdXSpQNzpmcHNyX3doZW5c KHQ9M1wpCitbWzpzcGFjZTpdXSpQMzpmcHNyX2dyXChyZWc9cjE5XCkKK1tb OnNwYWNlOl1dKlA3OmxjX3doZW5cKHQ9NFwpCitbWzpzcGFjZTpdXSpQMzps Y19nclwocmVnPXIyMFwpCitbWzpzcGFjZTpdXSpQNzpwZnNfd2hlblwodD01 XCkKK1tbOnNwYWNlOl1dKlAzOnBmc19nclwocmVnPXIyMVwpCitbWzpzcGFj ZTpdXSpQODpybmF0X3doZW5cKHQ9NlwpCitbWzpzcGFjZTpdXSpQMzpybmF0 X2dyXChyZWc9cjIyXCkKK1tbOnNwYWNlOl1dKlA3OnVuYXRfd2hlblwodD03 XCkKK1tbOnNwYWNlOl1dKlAzOnVuYXRfZ3JcKHJlZz1yMjNcKQorW1s6c3Bh Y2U6XV0qUDc6cHJfd2hlblwodD04XCkKK1tbOnNwYWNlOl1dKlAzOnByX2dy XChyZWc9cjI0XCkKK1tbOnNwYWNlOl1dKlA4OnByaXVuYXRfd2hlbl9nclwo dD05XCkKK1tbOnNwYWNlOl1dKlAzOnByaXVuYXRfZ3JcKHJlZz1yMjVcKQor W1s6c3BhY2U6XV0qUDc6cnBfd2hlblwodD0xMFwpCitbWzpzcGFjZTpdXSpQ MzpycF9nclwocmVnPXIyNlwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVu PTFcKQorIy4uLgorPHZmcmFtZXNwPjogXFsweFtbOnhkaWdpdDpdXSowLTB4 W1s6eGRpZ2l0Ol1dKjBcXSwgaW5mbyBhdCBcKzB4W1s6eGRpZ2l0Ol1dKlsw OF0KK1tbOnNwYWNlOl1dKnZbWzpkaWdpdDpdXSssIGZsYWdzPTB4MCggXChc KSk/LCBsZW49W1s6ZGlnaXQ6XV0rIGJ5dGVzCitbWzpzcGFjZTpdXSpSMTpw cm9sb2d1ZVwocmxlbj0xMVwpCitbWzpzcGFjZTpdXSpQNzptZW1fc3RhY2tf dlwodD0wXCkKK1tbOnNwYWNlOl1dKlA3OnBzcF9zcHJlbFwoc3BvZmY9MHgw XCkKK1tbOnNwYWNlOl1dKlA4OmJzcF93aGVuXCh0PTFcKQorW1s6c3BhY2U6 XV0qUDg6YnNwX3NwcmVsXChzcG9mZj0weDhcKQorW1s6c3BhY2U6XV0qUDg6 YnNwc3RvcmVfd2hlblwodD0yXCkKK1tbOnNwYWNlOl1dKlA4OmJzcHN0b3Jl X3NwcmVsXChzcG9mZj0weDEwXCkKK1tbOnNwYWNlOl1dKlA3OmZwc3Jfd2hl blwodD0zXCkKK1tbOnNwYWNlOl1dKlA4OmZwc3Jfc3ByZWxcKHNwb2ZmPTB4 MThcKQorW1s6c3BhY2U6XV0qUDc6bGNfd2hlblwodD00XCkKK1tbOnNwYWNl Ol1dKlA4OmxjX3NwcmVsXChzcG9mZj0weDIwXCkKK1tbOnNwYWNlOl1dKlA3 OnBmc193aGVuXCh0PTVcKQorW1s6c3BhY2U6XV0qUDg6cGZzX3NwcmVsXChz cG9mZj0weDI4XCkKK1tbOnNwYWNlOl1dKlA4OnJuYXRfd2hlblwodD02XCkK K1tbOnNwYWNlOl1dKlA4OnJuYXRfc3ByZWxcKHNwb2ZmPTB4MzBcKQorW1s6 c3BhY2U6XV0qUDc6dW5hdF93aGVuXCh0PTdcKQorW1s6c3BhY2U6XV0qUDg6 dW5hdF9zcHJlbFwoc3BvZmY9MHgzOFwpCitbWzpzcGFjZTpdXSpQNzpwcl93 aGVuXCh0PThcKQorW1s6c3BhY2U6XV0qUDg6cHJfc3ByZWxcKHNwb2ZmPTB4 NDBcKQorW1s6c3BhY2U6XV0qUDg6cHJpdW5hdF93aGVuX21lbVwodD05XCkK K1tbOnNwYWNlOl1dKlA4OnByaXVuYXRfc3ByZWxcKHNwb2ZmPTB4NDhcKQor W1s6c3BhY2U6XV0qUDc6cnBfd2hlblwodD0xMFwpCitbWzpzcGFjZTpdXSpQ ODpycF9zcHJlbFwoc3BvZmY9MHg1MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5 XChybGVuPTFcKQorIy4uLgorPHBzcD46IFxbMHhbWzp4ZGlnaXQ6XV0qMC0w eFtbOnhkaWdpdDpdXSowXF0sIGluZm8gYXQgXCsweFtbOnhkaWdpdDpdXSpb MDhdCitbWzpzcGFjZTpdXSp2W1s6ZGlnaXQ6XV0rLCBmbGFncz0weDAoIFwo XCkpPywgbGVuPVtbOmRpZ2l0Ol1dKyBieXRlcworW1s6c3BhY2U6XV0qUjE6 cHJvbG9ndWVcKHJsZW49MTFcKQorW1s6c3BhY2U6XV0qUDc6bWVtX3N0YWNr X3ZcKHQ9MFwpCitbWzpzcGFjZTpdXSpQNzpwc3Bfc3ByZWxcKHNwb2ZmPTB4 MFwpCitbWzpzcGFjZTpdXSpQODpic3Bfd2hlblwodD0xXCkKK1tbOnNwYWNl Ol1dKlA4OmJzcF9wc3ByZWxcKHBzcG9mZj0weDEwLTB4MThcKQorW1s6c3Bh Y2U6XV0qUDg6YnNwc3RvcmVfd2hlblwodD0yXCkKK1tbOnNwYWNlOl1dKlA4 OmJzcHN0b3JlX3BzcHJlbFwocHNwb2ZmPTB4MTAtMHgyMFwpCitbWzpzcGFj ZTpdXSpQNzpmcHNyX3doZW5cKHQ9M1wpCitbWzpzcGFjZTpdXSpQNzpmcHNy X3BzcHJlbFwocHNwb2ZmPTB4MTAtMHgyOFwpCitbWzpzcGFjZTpdXSpQNzps Y193aGVuXCh0PTRcKQorW1s6c3BhY2U6XV0qUDc6bGNfcHNwcmVsXChwc3Bv ZmY9MHgxMC0weDMwXCkKK1tbOnNwYWNlOl1dKlA3OnBmc193aGVuXCh0PTVc KQorW1s6c3BhY2U6XV0qUDc6cGZzX3BzcHJlbFwocHNwb2ZmPTB4MTAtMHgz OFwpCitbWzpzcGFjZTpdXSpQODpybmF0X3doZW5cKHQ9NlwpCitbWzpzcGFj ZTpdXSpQODpybmF0X3BzcHJlbFwocHNwb2ZmPTB4MTAtMHg0MFwpCitbWzpz cGFjZTpdXSpQNzp1bmF0X3doZW5cKHQ9N1wpCitbWzpzcGFjZTpdXSpQNzp1 bmF0X3BzcHJlbFwocHNwb2ZmPTB4MTAtMHg0OFwpCitbWzpzcGFjZTpdXSpQ Nzpwcl93aGVuXCh0PThcKQorW1s6c3BhY2U6XV0qUDc6cHJfcHNwcmVsXChw c3BvZmY9MHgxMC0weDUwXCkKK1tbOnNwYWNlOl1dKlA4OnByaXVuYXRfd2hl bl9tZW1cKHQ9OVwpCitbWzpzcGFjZTpdXSpQODpwcml1bmF0X3BzcHJlbFwo cHNwb2ZmPTB4MTAtMHg1OFwpCitbWzpzcGFjZTpdXSpQNzpycF93aGVuXCh0 PTEwXCkKK1tbOnNwYWNlOl1dKlA3OnJwX3BzcHJlbFwocHNwb2ZmPTB4MTAt MHg2MFwpCitbWzpzcGFjZTpdXSpSMTpib2R5XChybGVuPTFcKQorIy4uLgor PHNpbXBsZT46IFxbMHhbWzp4ZGlnaXQ6XV0qMC0weFtbOnhkaWdpdDpdXSow XF0sIGluZm8gYXQgXCsweFtbOnhkaWdpdDpdXSpbMDhdCitbWzpzcGFjZTpd XSp2W1s6ZGlnaXQ6XV0rLCBmbGFncz0weDAoIFwoXCkpPywgbGVuPVtbOmRp Z2l0Ol1dKyBieXRlcworI3Bhc3MKLS0tIC9ob21lL2piZXVsaWNoL3NyYy9i aW51dGlscy9tYWlubGluZS8yMDA1LTA2LTI3L2dhcy90ZXN0c3VpdGUvZ2Fz L2lhNjQvdW53aW5kLW9rLnMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAw MDAgKzAxMDAKKysrIDIwMDUtMDYtMjcvZ2FzL3Rlc3RzdWl0ZS9nYXMvaWE2 NC91bndpbmQtb2sucwkyMDA1LTA2LTI3IDExOjM2OjU4Ljk3MzU4Mzg5OCAr MDIwMApAQCAtMCwwICsxLDI3MiBAQAorLnRleHQKKy5wcm9jIHBlcnNvbmFs aXR5CitwZXJzb25hbGl0eToKKwlici5yZXQuc3B0awlycAorLmVuZHAgcGVy c29uYWxpdHkKKworLnByb2MgZnVsbDEKK2Z1bGwxOgorCisucHJvbG9ndWUK Ky5zcGlsbCAwCisuc2F2ZS5nIDB4MQorCW5vcAkJMAorLnNhdmUuZiAweDEK Kwlub3AJCTAKKy5zYXZlLmIgMHgwMQorCW5vcAkJMAorLnNhdmUuZyAweDgK Kwlub3AJCTAKKy5zYXZlLmYgMHg4CisJbm9wCQkwCisuc2F2ZS5iIDB4MTAK Kwlub3AJCTAKKy5hbHRycCBiNworCW5vcAkJMAorLnVud2FiaSBAc3ZyNCwg MAorCW5vcAkJMAorCisuYm9keQorLnNwaWxscmVnIHI0LCByMgorCW5vcAkJ MAorLnNwaWxscmVnLnAgcDEsIHI3LCByMTI3CisJbm9wCQkwCisuc3BpbGxz cCBiMSwgMHgwOAorCW5vcAkJMAorLnNwaWxsc3AucCBwMiwgYjUsIDB4MTAK Kwlub3AJCTAKKy5zcGlsbHBzcCBmMiwgMHgxOAorCW5vcAkJMAorLnNwaWxs cHNwLnAgcDQsIGY1LCAweDIwCisJbm9wCQkwCisucmVzdG9yZXJlZyBmMTYK Kwlub3AJCTAKKy5yZXN0b3JlcmVnLnAgcDgsIGYzMQorCW5vcAkJMAorCisu c3BpbGxyZWcgYXIuYnNwLCByMTYKKwlub3AJCTAKKy5zcGlsbHJlZyBhci5i c3BzdG9yZSwgcjE3CisJbm9wCQkwCisuc3BpbGxyZWcgYXIuZnBzciwgcjE4 CisJbm9wCQkwCisuc3BpbGxyZWcgYXIubGMsIHIxOQorCW5vcAkJMAorLnNw aWxscmVnIGFyLnBmcywgcjIwCisJbm9wCQkwCisuc3BpbGxyZWcgYXIucm5h dCwgcjIxCisJbm9wCQkwCisuc3BpbGxyZWcgYXIudW5hdCwgcjIyCisJbm9w CQkwCisuc3BpbGxyZWcgcHNwLCByMjMKKwlub3AJCTAKKy5zcGlsbHJlZyBw ciwgcjI0CisJbm9wCQkwCisuc3BpbGxyZWcgcnAsIHIyNQorCW5vcAkJMAor LnNwaWxscmVnIEBwcml1bmF0LCByMjYKKwlub3AJCTAKKworLmxhYmVsX3N0 YXRlIDEKKwlub3AJCTAKKy5yZXN0b3JlIHNwCisJbm9wLngJCTAKKy5jb3B5 X3N0YXRlIDEKKwlici5yZXQuc3B0awlycAorCisucGVyc29uYWxpdHkgcGVy c29uYWxpdHkKKy5oYW5kbGVyZGF0YQorCWRhdGE0CQktMQorCWRhdGE0CQkw CisKKy5lbmRwIGZ1bGwxCisKKy5wcm9jIGZ1bGwyCitmdWxsMjoKKworLnBy b2xvZ3VlIDB4YiwgcjgKKy5zcGlsbCAwCisuc2F2ZS5nZiAweDEsIDB4MDAw MDEKKwlub3AJCTAKKwlub3AJCTAKKy5zYXZlLmIgMHgxMSwgcjMyCisJbm9w CQkwCisJbm9wCQkwCisuc2F2ZS5nZiAweDgsIDB4ODAwMDAKKwlub3AJCTAK Kwlub3AJCTAKKy5zcGlsbHJlZyBmMzEsIGYxMjcKKwlub3AJCTAKKy5zcGls bHJlZy5wIHA2MywgZjE2LCBmMzIKKwlub3AJCTAKKy5zcGlsbHNwIGY1LCAw eDIwCisJbm9wCQkwCisuc3BpbGxzcC5wIHAzMSwgZjIsIDB4MTgKKwlub3AJ CTAKKy5zcGlsbHBzcCBiNSwgMHgxMAorCW5vcAkJMAorLnNwaWxscHNwLnAg cDE1LCBiMSwgMHgwOAorCW5vcAkJMAorLnJlc3RvcmVyZWcgcjcKKwlub3AJ CTAKKy5yZXN0b3JlcmVnLnAgcDcsIHI0CisJbm9wCQkwCisKKy5ib2R5OyAu cHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7 IC5ib2R5OyAucHJvbG9ndWUKKy5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAu cHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWUK Ky5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAu cHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWUKKy5ib2R5OyAucHJvbG9ndWU7 IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAu cHJvbG9ndWUKKy5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7 IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWUKKy5ib2R5OyAu cHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7 IC5ib2R5OyAucHJvbG9ndWUKKy5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAu cHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWUK Ky5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWU7IC5ib2R5OyAu cHJvbG9ndWU7IC5ib2R5OyAucHJvbG9ndWUKKworLmJvZHkKKy5sYWJlbF9z dGF0ZSAzMgorCW5vcAkJMAorLnJlc3RvcmUgc3AsIDMyCisJbm9wLngJCTAK Ky5jb3B5X3N0YXRlIDMyCisJYnIucmV0LnNwdGsJcnAKKy5lbmRwIGZ1bGwy CisKKy5wcm9jIGZ1bGwzCitmdWxsMzoKKworLnByb2xvZ3VlCisuc3BpbGwg MAorLnNhdmUuZyAweDMsIHIzMgorCW5vcAkJMAorCW5vcAkJMAorLnNhdmUu YiAweDAzLCByMzQKKwlub3AJCTAKKwlub3AJCTAKKy5zYXZlLmcgMHhjLCBy MTI0CisJbm9wCQkwCisJbm9wCQkwCisuc2F2ZS5iIDB4MTgsIHIxMjYKKwlu b3AJCTAKKwlub3AJCTAKKwlub3AueAkJMAorCW5vcC54CQkwCisJbm9wLngJ CTAKKwlub3AueAkJMAorCW5vcC54CQkwCisJbm9wLngJCTAKKwlub3AueAkJ MAorCW5vcC54CQkwCisuYm9keQorCW5vcC54CQkwCisJbm9wLngJCTAKKwlu b3AueAkJMAorCW5vcC54CQkwCisJbm9wLngJCTAKKwlub3AueAkJMAorCW5v cC54CQkwCisJbm9wLngJCTAKKwlub3AueAkJMAorCW5vcC54CQkwCisJYnIu cmV0LnNwdGsJcnAKKy5lbmRwIGZ1bGwzCisKKy5wcm9jIGZmcmFtZQorZmZy YW1lOgorLnByb2xvZ3VlCisuZmZyYW1lIDAKKwlub3AJCTAKKy5ib2R5CisJ YnIucmV0LnNwdGsJcnAKKy5lbmRwIGZmcmFtZQorCisucHJvYyB2ZnJhbWUK K3ZmcmFtZToKKy5wcm9sb2d1ZQorLnZmcmFtZSByMTYKKwlub3AJCTAKKy5z YXZlIGFyLmJzcCwgcjE3CisJbm9wCQkwCisuc2F2ZSBhci5ic3BzdG9yZSwg cjE4CisJbm9wCQkwCisuc2F2ZSBhci5mcHNyLCByMTkKKwlub3AJCTAKKy5z YXZlIGFyLmxjLCByMjAKKwlub3AJCTAKKy5zYXZlIGFyLnBmcywgcjIxCisJ bm9wCQkwCisuc2F2ZSBhci5ybmF0LCByMjIKKwlub3AJCTAKKy5zYXZlIGFy LnVuYXQsIHIyMworCW5vcAkJMAorLnNhdmUgcHIsIHIyNAorCW5vcAkJMAor LnNhdmUgQHByaXVuYXQsIHIyNQorCW5vcAkJMAorLnNhdmUgcnAsIHIyNgor CW5vcAkJMAorLmJvZHkKKwlici5yZXQuc3B0awlycAorLmVuZHAgdmZyYW1l CisKKy5wcm9jIHZmcmFtZXNwCit2ZnJhbWVzcDoKKy5wcm9sb2d1ZQorLnZm cmFtZXNwIDAKKwlub3AJCTAKKy5zYXZlc3AgYXIuYnNwLCAweDA4CisJbm9w CQkwCisuc2F2ZXNwIGFyLmJzcHN0b3JlLCAweDEwCisJbm9wCQkwCisuc2F2 ZXNwIGFyLmZwc3IsIDB4MTgKKwlub3AJCTAKKy5zYXZlc3AgYXIubGMsIDB4 MjAKKwlub3AJCTAKKy5zYXZlc3AgYXIucGZzLCAweDI4CisJbm9wCQkwCisu c2F2ZXNwIGFyLnJuYXQsIDB4MzAKKwlub3AJCTAKKy5zYXZlc3AgYXIudW5h dCwgMHgzOAorCW5vcAkJMAorLnNhdmVzcCBwciwgMHg0MAorCW5vcAkJMAor LnNhdmVzcCBAcHJpdW5hdCwgMHg0OAorCW5vcAkJMAorLnNhdmVzcCBycCwg MHg1MAorCW5vcAkJMAorLmJvZHkKKwlici5yZXQuc3B0awlycAorLmVuZHAg dmZyYW1lc3AKKworLnByb2MgcHNwCitwc3A6CisucHJvbG9ndWUKKy52ZnJh bWVzcCAwCisJbm9wCQkwCisuc2F2ZXBzcCBhci5ic3AsIDB4MDgKKwlub3AJ CTAKKy5zYXZlcHNwIGFyLmJzcHN0b3JlLCAweDEwCisJbm9wCQkwCisuc2F2 ZXBzcCBhci5mcHNyLCAweDE4CisJbm9wCQkwCisuc2F2ZXBzcCBhci5sYywg MHgyMAorCW5vcAkJMAorLnNhdmVwc3AgYXIucGZzLCAweDI4CisJbm9wCQkw Cisuc2F2ZXBzcCBhci5ybmF0LCAweDMwCisJbm9wCQkwCisuc2F2ZXBzcCBh ci51bmF0LCAweDM4CisJbm9wCQkwCisuc2F2ZXBzcCBwciwgMHg0MAorCW5v cAkJMAorLnNhdmVwc3AgQHByaXVuYXQsIDB4NDgKKwlub3AJCTAKKy5zYXZl cHNwIHJwLCAweDUwCisJbm9wCQkwCisuYm9keQorCWJyLnJldC5zcHRrCXJw CisuZW5kcCBwc3AKKworLnByb2Mgc2ltcGxlCitzaW1wbGU6CisudW53ZW50 cnkKKwlici5yZXQuc3B0awlycAorLmVuZHAgc2ltcGxlCg== --=__PartF3D003B3.2__=--