From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 47151 invoked by alias); 26 Oct 2018 07:19:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 45922 invoked by uid 89); 26 Oct 2018 07:19:09 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-ot1-f65.google.com Received: from mail-ot1-f65.google.com (HELO mail-ot1-f65.google.com) (209.85.210.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 26 Oct 2018 07:19:04 +0000 Received: by mail-ot1-f65.google.com with SMTP id p23so142072otf.11 for ; Fri, 26 Oct 2018 00:19:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=jy4akDJhdNP527lt8Quz2m2iAePNDKdWv90ZlMj+el0=; b=oxqIqNVrPOXLvSwwrOusZ+w4R04tGIGaYdSF/Onr77WiGYkeLI/uRNK2g+0QhxtjPW JlPARE5s7+l3Gga/vfxnIJ/4Eq7IVq7SrojrxJ9IjnkXd0BSEwnOp0+rmU0aIo3aowF7 +v3EhSYQyfVqEAgPcGlOu3u1nGyEJCcVIsqmVT59MYYrt7YNkISIs9dGZTzLFfyMaE1v /FogEqMayVVJFx30/NYgbQVIGRFkQZS+KWGS4qKDrb0QdD4qc3bUEjCmKEslHhyuhxWv 9ev2HsITAP1+7YE6fQTYci6wWiqFJqDgMie+bTOLAf1NEt6pV1GK5F4nJGmmp0Z3EVkL +ITQ== MIME-Version: 1.0 Received: by 2002:a4a:4d5d:0:0:0:0:0 with HTTP; Fri, 26 Oct 2018 00:18:59 -0700 (PDT) From: "H.J. Lu" Date: Fri, 26 Oct 2018 07:39:00 -0000 Message-ID: Subject: V4 [PATCH] x86: Add pmovzx/pmovsx patterns with memory operands To: Uros Bizjak Cc: "gcc-patches@gcc.gnu.org" , Eric Botcazou Content-Type: multipart/mixed; boundary="00000000000086eced05791c882b" X-IsSubscribed: yes X-SW-Source: 2018-10/txt/msg01664.txt.bz2 --00000000000086eced05791c882b Content-Type: text/plain; charset="UTF-8" Content-length: 2768 On 10/25/18, Uros Bizjak wrote: > On Fri, Oct 26, 2018 at 8:07 AM H.J. Lu wrote: >> >> Many x86 pmovzx/pmovsx instructions with memory operands are modeled in >> a wrong way. For example: >> >> (define_insn "sse4_1_v8qiv8hi2" >> [(set (match_operand:V8HI 0 "register_operand" "=Yr,*x,v") >> (any_extend:V8HI >> (vec_select:V8QI >> (match_operand:V16QI 1 "nonimmediate_operand" "Yrm,*xm,vm") >> (parallel [(const_int 0) (const_int 1) >> (const_int 2) (const_int 3) >> (const_int 4) (const_int 5) >> (const_int 6) (const_int 7)]))))] >> >> should be defind for memory operands as: >> >> (define_insn "sse4_1_v8qiv8hi2" >> [(set (match_operand:V8HI 0 "register_operand" "=Yr,*x,v") >> (any_extend:V8HI >> (match_operand:V8QI "memory_operand" "m,m,m")))] >> >> This set of patches updates them to >> >> (define_insn "sse4_1_v8qiv8hi2" >> [(set (match_operand:V8HI 0 "register_operand" "=Yr,*x,v") >> (any_extend:V8HI >> (vec_select:V8QI >> (match_operand:V16QI 1 "nonimmediate_operand" "Yr,*x,v") >> (parallel [(const_int 0) (const_int 1) >> (const_int 2) (const_int 3) >> (const_int 4) (const_int 5) >> (const_int 6) (const_int 7)]))))] >> >> (define_insn "*sse4_1_v8qiv8hi2_1" >> [(set (match_operand:V8HI 0 "register_operand" "=Yr,*x,v") >> (any_extend:V8HI >> (match_operand:V8QI "subreg_memory_operand" "m,m,m")))] >> >> with a splitter: >> >> (define_insn_and_split "*sse4_1_v8qiv8hi2_2" >> [(set (match_operand:V8HI 0 "register_operand" "=Yr,*x,v") > > No constraints needed for pre-reload splitter. > >> (any_extend:V8HI >> (vec_select:V8QI >> (subreg:V16QI >> (vec_concat:V2DI >> (match_operand:DI 1 "memory_operand" "m,*m,m") >> (const_int 0)) 0) >> (parallel [(const_int 0) (const_int 1) >> (const_int 2) (const_int 3) >> (const_int 4) (const_int 5) >> (const_int 6) (const_int 7)]))))] >> "TARGET_SSE4_1 && && >> " >> "#" >> "&& can_create_pseudo_p ()" >> [(set (match_dup 0) (match_dup 1))] > > [(set (match_dup 0) > (any_extend:V8HI (match_dup 1)))] > >> { >> operands[1] = gen_rtx_ (V8HImode, >> gen_rtx_SUBREG (V8QImode, >> operands[1], 0)); >> }) > > Don't create subregs of memory. Use adjust_address_nv. Here is the updated patch. -- H.J. --00000000000086eced05791c882b Content-Type: text/x-patch; charset="US-ASCII"; name="0001-x86-Add-pmovzx-pmovsx-patterns-with-memory-operands.patch" Content-Disposition: attachment; filename="0001-x86-Add-pmovzx-pmovsx-patterns-with-memory-operands.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 Content-length: 42444 RnJvbSBjOWQxMTQ2OGJjNWU5YjcxOTA1ZDE3YzczZDEyNjc3MDk3ZDk0ZTNj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTUgU2VwIDIwMTggMjA6 NTQ6NDIgLTA3MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IEFkZCBwbW92engv cG1vdnN4IHBhdHRlcm5zIHdpdGggbWVtb3J5IG9wZXJhbmRzCgpNYW55IHg4 NiBwbW92engvcG1vdnN4IGluc3RydWN0aW9ucyB3aXRoIG1lbW9yeSBvcGVy YW5kcyBhcmUgbW9kZWxlZCBpbgphIHdyb25nIHdheS4gIEZvciBleGFtcGxl OgoKKGRlZmluZV9pbnNuICJzc2U0XzFfPGNvZGU+djhxaXY4aGkyPG1hc2tf bmFtZT4iCiAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjhISSAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiPVlyLCp4LHYiKQogICAgKGFueV9leHRlbmQ6VjhISQog ICAgICAodmVjX3NlbGVjdDpWOFFJCiAgICAgICAgKG1hdGNoX29wZXJhbmQ6 VjE2UUkgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICJZcm0sKnhtLHZtIikK ICAgICAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkgKGNvbnN0X2ludCAx KQogICAgICAgICAgICAgICAoY29uc3RfaW50IDIpIChjb25zdF9pbnQgMykK ICAgICAgICAgICAgICAgKGNvbnN0X2ludCA0KSAoY29uc3RfaW50IDUpCiAg ICAgICAgICAgICAgIChjb25zdF9pbnQgNikgKGNvbnN0X2ludCA3KV0pKSkp XQoKc2hvdWxkIGJlIGRlZmluZCBmb3IgbWVtb3J5IG9wZXJhbmRzIGFzOgoK KGRlZmluZV9pbnNuICJzc2U0XzFfPGNvZGU+djhxaXY4aGkyPG1hc2tfbmFt ZT4iCiAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjhISSAwICJyZWdpc3Rlcl9v cGVyYW5kIiAiPVlyLCp4LHYiKQogICAgKGFueV9leHRlbmQ6VjhISQogICAg ICAobWF0Y2hfb3BlcmFuZDpWOFFJICJtZW1vcnlfb3BlcmFuZCIgIm0sbSxt IikpKV0KClRoaXMgcGF0Y2ggdXBkYXRlcyB0aGVtIHRvCgooZGVmaW5lX2lu c24gInNzZTRfMV88Y29kZT52OHFpdjhoaTI8bWFza19uYW1lPiIKICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWOEhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9 WXIsKngsdiIpCiAgICAoYW55X2V4dGVuZDpWOEhJCiAgICAgICh2ZWNfc2Vs ZWN0OlY4UUkKICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAxICJyZWdp c3Rlcl9vcGVyYW5kIiAiWXIsKngsdiIpCiAgICAgICAgKHBhcmFsbGVsIFso Y29uc3RfaW50IDApIChjb25zdF9pbnQgMSkKICAgICAgICAgICAgICAgKGNv bnN0X2ludCAyKSAoY29uc3RfaW50IDMpCiAgICAgICAgICAgICAgIChjb25z dF9pbnQgNCkgKGNvbnN0X2ludCA1KQogICAgICAgICAgICAgICAoY29uc3Rf aW50IDYpIChjb25zdF9pbnQgNyldKSkpKV0KCihkZWZpbmVfaW5zbiAiKnNz ZTRfMV88Y29kZT52OHFpdjhoaTI8bWFza19uYW1lPl8xIgogIFsoc2V0ICht YXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1Zciwq eCx2IikKICAgIChhbnlfZXh0ZW5kOlY4SEkKICAgICAgKG1hdGNoX29wZXJh bmQ6VjhRSSAic3VicmVnX21lbW9yeV9vcGVyYW5kIiAibSxtLG0iKSkpXQoK d2l0aCBhIHNwbGl0dGVyOgoKKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnNz ZTRfMV88Y29kZT52OHFpdjhoaTI8bWFza19uYW1lPl8yIgogIFsoc2V0ICht YXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCiAgICAg ICAgKGFueV9leHRlbmQ6VjhISQogICAgICAgICAgKHZlY19zZWxlY3Q6VjhR SQogICAgICAgICAgICAoc3VicmVnOlYxNlFJCiAgICAgICAgICAgICAgKHZl Y19jb25jYXQ6VjJESQogICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6 REkgMSAibWVtb3J5X29wZXJhbmQiKQogICAgICAgICAgICAgICAgKGNvbnN0 X2ludCAwKSkgMCkKICAgICAgICAgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50 IDApIChjb25zdF9pbnQgMSkKICAgICAgICAgICAgICAgICAgICAgICAoY29u c3RfaW50IDIpIChjb25zdF9pbnQgMykKICAgICAgICAgICAgICAgICAgICAg ICAoY29uc3RfaW50IDQpIChjb25zdF9pbnQgNSkKICAgICAgICAgICAgICAg ICAgICAgICAoY29uc3RfaW50IDYpIChjb25zdF9pbnQgNyldKSkpKV0KICAi VEFSR0VUX1NTRTRfMSAmJiA8bWFza19hdng1MTJid19jb25kaXRpb24+ICYm IDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCiAgIiMiCiAgIiYmIGNhbl9j cmVhdGVfcHNldWRvX3AgKCkiCiAgWyhzZXQgKG1hdGNoX2R1cCAwKQogICAg ICAgIChhbnlfZXh0ZW5kOlY4SEkgKG1hdGNoX2R1cCAxKSkpXQp7CiAgb3Bl cmFuZHNbMV0gPSBhZGp1c3RfYWRkcmVzc19udiAob3BlcmFuZHNbMV0sIFY4 UUltb2RlLCAwKTsKfSkKClRoaXMgcGF0Y2ggcmVxdWlyZXMgdXBkYXRpbmcg YXBwbHlfc3Vic3RfaXRlcmF0b3IgdG8gaGFuZGxlCmRlZmluZV9pbnNuX2Fu ZF9zcGxpdC4KCmdjYy8KCglQUiB0YXJnZXQvODczMTcKCSogY29uZmlnL2kz ODYvc3NlLm1kIChzc2U0XzFfPGNvZGU+djhxaXY4aGkyPG1hc2tfbmFtZT4p OiBSZXBsYWNlCglub25pbW1lZGlhdGVfb3BlcmFuZCB3aXRoIHJlZ2lzdGVy X29wZXJhbmQuCgkoYXZ4Ml88Y29kZT52OHFpdjhzaTI8bWFza19uYW1lPik6 IExpa2V3aXNlLgoJKHNzZTRfMV88Y29kZT52NHFpdjRzaTI8bWFza19uYW1l Pik6IExpa2V3aXNlLgoJKHNzZTRfMV88Y29kZT52NGhpdjRzaTI8bWFza19u YW1lPik6IExpa2V3aXNlLgoJKHNzZTRfMV88Y29kZT52MnFpdjJkaTI8bWFz a19uYW1lPik6IExpa2V3aXNlLgoJKGF2eDUxMmZfPGNvZGU+djhxaXY4ZGky PG1hc2tfbmFtZT4pOiBMaWtld2lzZS4KCShhdngyXzxjb2RlPnY0cWl2NGRp MjxtYXNrX25hbWU+KTogTGlrZXdpc2UuCgkoYXZ4Ml88Y29kZT52NGhpdjRk aTI8bWFza19uYW1lPik6IExpa2V3aXNlLgoJKHNzZTRfMV88Y29kZT52Mmhp djJkaTI8bWFza19uYW1lPik6IExpa2V3aXNlLgoJKHNzZTRfMV88Y29kZT52 MnNpdjJkaTI8bWFza19uYW1lPik6IExpa2V3aXNlLgoJKCpzc2U0XzFfPGNv ZGU+djhxaXY4aGkyPG1hc2tfbmFtZT5fMSk6IE5ldyBwYXR0ZXJuLgoJKCpz c2U0XzFfPGNvZGU+djhxaXY4aGkyPG1hc2tfbmFtZT5fMik6IExpa2V3aXNl LgoJKCphdngyXzxjb2RlPnY4cWl2OHNpMjxtYXNrX25hbWU+XzEpOiBMaWtl d2lzZS4KCSgqYXZ4Ml88Y29kZT52OHFpdjhzaTI8bWFza19uYW1lPl8yKTog TGlrZXdpc2UuCgkoKnNzZTRfMV88Y29kZT52NHFpdjRzaTI8bWFza19uYW1l Pl8xKTogTGlrZXdpc2UuCgkoKnNzZTRfMV88Y29kZT52NHFpdjRzaTI8bWFz a19uYW1lPl8yKTogTGlrZXdpc2UuCgkoKnNzZTRfMV88Y29kZT52NGhpdjRz aTI8bWFza19uYW1lPl8xKTogTGlrZXdpc2UuCgkoKnNzZTRfMV88Y29kZT52 NGhpdjRzaTI8bWFza19uYW1lPl8yKTogTGlrZXdpc2UuCgkoKmF2eDUxMmZf PGNvZGU+djhxaXY4ZGkyPG1hc2tfbmFtZT5fMSk6IExpa2V3aXNlLgoJKCph dng1MTJmXzxjb2RlPnY4cWl2OGRpMjxtYXNrX25hbWU+XzIpOiBMaWtld2lz ZS4KCSgqYXZ4Ml88Y29kZT52NHFpdjRkaTI8bWFza19uYW1lPl8xKTogTGlr ZXdpc2UuCgkoKmF2eDJfPGNvZGU+djRxaXY0ZGkyPG1hc2tfbmFtZT5fMik6 IExpa2V3aXNlLgoJKCphdngyXzxjb2RlPnY0aGl2NGRpMjxtYXNrX25hbWU+ XzEpOiBMaWtld2lzZS4KCSgqYXZ4Ml88Y29kZT52NGhpdjRkaTI8bWFza19u YW1lPl8yKTogTGlrZXdpc2UuCgkoKnNzZTRfMV88Y29kZT52MmhpdjJkaTI8 bWFza19uYW1lPl8xKTogTGlrZXdpc2UuCgkoKnNzZTRfMV88Y29kZT52Mmhp djJkaTI8bWFza19uYW1lPl8yKTogTGlrZXdpc2UuCgkoKnNzZTRfMV88Y29k ZT52MnNpdjJkaTI8bWFza19uYW1lPl8xKTogTGlrZXdpc2UuCgkoKnNzZTRf MV88Y29kZT52MnNpdjJkaTI8bWFza19uYW1lPl8yKTogTGlrZXdpc2UuCgpn Y2MvdGVzdHN1aXRlLwoKCVBSIHRhcmdldC84NzMxNwoJKiBnY2MudGFyZ2V0 L2kzODYvcHI4NzMxNy0xLmM6IE5ldyBmaWxlLgoJKiBnY2MudGFyZ2V0L2kz ODYvcHI4NzMxNy0yLmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYv cHI4NzMxNy0zLmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvcHI4 NzMxNy00LmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvcHI4NzMx Ny01LmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvcHI4NzMxNy02 LmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvcHI4NzMxNy03LmM6 IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvcHI4NzMxNy04LmM6IExp a2V3aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvcHI4NzMxNy05LmM6IExpa2V3 aXNlLgoJKiBnY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xMC5jOiBMaWtld2lz ZS4KCSogZ2NjLnRhcmdldC9pMzg2L3ByODczMTctMTEuYzogTGlrZXdpc2Uu CgkqIGdjYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTEyLmM6IExpa2V3aXNlLgoJ KiBnY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xMy5jOiBMaWtld2lzZS4KLS0t CiBnY2MvY29uZmlnL2kzODYvc3NlLm1kICAgICAgICAgICAgICAgICAgICAg fCAzMTQgKysrKysrKysrKysrKysrKysrKystCiBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9wcjg3MzE3LTEuYyAgfCAgMTQgKwogZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xMC5jIHwgIDE0ICsKIGdj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctMTEuYyB8ICAx NCArCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTEy LmMgfCAgMjIgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3By ODczMTctMTMuYyB8ICAxNCArCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9wcjg3MzE3LTIuYyAgfCAgMTQgKwogZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvcHI4NzMxNy0zLmMgIHwgIDE0ICsKIGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctNC5jICB8ICAxNCArCiBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTUuYyAgfCAgMTQg KwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy02LmMg IHwgIDE0ICsKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODcz MTctNy5jICB8ICAxNCArCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9wcjg3MzE3LTguYyAgfCAgMTQgKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvcHI4NzMxNy05LmMgIHwgIDE0ICsKIDE0IGZpbGVzIGNoYW5n ZWQsIDQ5MiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9w cjg3MzE3LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L3ByODczMTctMTAuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctMTEu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L3ByODczMTctMTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctMTMuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3By ODczMTctMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvcHI4NzMxNy0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTQuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByODczMTctNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy02LmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3 LTcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L3ByODczMTctOC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy05LmMKCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2kzODYvc3NlLm1kIGIvZ2NjL2NvbmZpZy9p Mzg2L3NzZS5tZAppbmRleCBlZTczZTFmZGY4MC4uMzk4OTdhMDUwYWYgMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9zc2UubWQKKysrIGIvZ2NjL2Nv bmZpZy9pMzg2L3NzZS5tZApAQCAtMTU4NzgsMTIgKzE1ODc4LDI0IEBACiAg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0ZXJfb3BlcmFu ZCIgIj1ZciwqeCx2IikKIAkoYW55X2V4dGVuZDpWOEhJCiAJICAodmVjX3Nl bGVjdDpWOFFJCi0JICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDEgIm5vbmlt bWVkaWF0ZV9vcGVyYW5kIiAiWXJtLCp4bSx2bSIpCisJICAgIChtYXRjaF9v cGVyYW5kOlYxNlFJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJZciwqeCx2IikK IAkgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApIChjb25zdF9pbnQgMSkK IAkJICAgICAgIChjb25zdF9pbnQgMikgKGNvbnN0X2ludCAzKQogCQkgICAg ICAgKGNvbnN0X2ludCA0KSAoY29uc3RfaW50IDUpCiAJCSAgICAgICAoY29u c3RfaW50IDYpIChjb25zdF9pbnQgNyldKSkpKV0KICAgIlRBUkdFVF9TU0U0 XzEgJiYgPG1hc2tfYXZ4NTEyYndfY29uZGl0aW9uPiAmJiA8bWFza19hdng1 MTJ2bF9jb25kaXRpb24+IgorICAiJXZwbW92PGV4dHN1ZmZpeD5id1x0eyUx LCAlMDxtYXNrX29wZXJhbmQyPnwlMDxtYXNrX29wZXJhbmQyPiwgJTF9Igor ICBbKHNldF9hdHRyICJpc2EiICJub2F2eCxub2F2eCxhdngiKQorICAgKHNl dF9hdHRyICJ0eXBlIiAic3NlbW92IikKKyAgIChzZXRfYXR0ciAicHJlZml4 X2V4dHJhIiAiMSIpCisgICAoc2V0X2F0dHIgInByZWZpeCIgIm9yaWcsb3Jp ZyxtYXliZV9ldmV4IikKKyAgIChzZXRfYXR0ciAibW9kZSIgIlRJIildKQor CisoZGVmaW5lX2luc24gIipzc2U0XzFfPGNvZGU+djhxaXY4aGkyPG1hc2tf bmFtZT5fMSIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjhISSAwICJyZWdp c3Rlcl9vcGVyYW5kIiAiPVlyLCp4LHYiKQorCShhbnlfZXh0ZW5kOlY4SEkK KwkgIChtYXRjaF9vcGVyYW5kOlY4UUkgMSAibWVtb3J5X29wZXJhbmQiICJt LCptLG0iKSkpXQorICAiVEFSR0VUX1NTRTRfMSAmJiA8bWFza19hdng1MTJi d19jb25kaXRpb24+ICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCiAg ICIldnBtb3Y8ZXh0c3VmZml4PmJ3XHR7JTEsICUwPG1hc2tfb3BlcmFuZDI+ fCUwPG1hc2tfb3BlcmFuZDI+LCAlcTF9IgogICBbKHNldF9hdHRyICJpc2Ei ICJub2F2eCxub2F2eCxhdngiKQogICAgKHNldF9hdHRyICJ0eXBlIiAic3Nl bW92IikKQEAgLTE1ODkxLDYgKzE1OTAzLDI3IEBACiAgICAoc2V0X2F0dHIg InByZWZpeCIgIm9yaWcsb3JpZyxtYXliZV9ldmV4IikKICAgIChzZXRfYXR0 ciAibW9kZSIgIlRJIildKQogCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIq c3NlNF8xXzxjb2RlPnY4cWl2OGhpMjxtYXNrX25hbWU+XzIiCisgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJ KGFueV9leHRlbmQ6VjhISQorCSAgKHZlY19zZWxlY3Q6VjhRSQorCSAgICAo c3VicmVnOlYxNlFJCisJICAgICAgKHZlY19jb25jYXQ6VjJESQorCSAgICAg ICAgKG1hdGNoX29wZXJhbmQ6REkgMSAibWVtb3J5X29wZXJhbmQiKQorCQko Y29uc3RfaW50IDApKSAwKQorCSAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQg MCkgKGNvbnN0X2ludCAxKQorCQkgICAgICAgKGNvbnN0X2ludCAyKSAoY29u c3RfaW50IDMpCisJCSAgICAgICAoY29uc3RfaW50IDQpIChjb25zdF9pbnQg NSkKKwkJICAgICAgIChjb25zdF9pbnQgNikgKGNvbnN0X2ludCA3KV0pKSkp XQorICAiVEFSR0VUX1NTRTRfMSAmJiA8bWFza19hdng1MTJid19jb25kaXRp b24+ICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCisgICIjIgorICAi JiYgY2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSIKKyAgWyhzZXQgKG1hdGNoX2R1 cCAwKQorCShhbnlfZXh0ZW5kOlY4SEkgKG1hdGNoX2R1cCAxKSkpXQorewor ICBvcGVyYW5kc1sxXSA9IGFkanVzdF9hZGRyZXNzX252IChvcGVyYW5kc1sx XSwgVjhRSW1vZGUsIDApOworfSkKKwogKGRlZmluZV9pbnNuICI8bWFza19j b2RlZm9yPmF2eDUxMmZfPGNvZGU+djE2cWl2MTZzaTI8bWFza19uYW1lPiIK ICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjE2U0kgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj12IikKIAkoYW55X2V4dGVuZDpWMTZTSQpAQCAtMTU5MDUsMjYg KzE1OTM4LDcwIEBACiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY4U0kgMCAi cmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKIAkoYW55X2V4dGVuZDpWOFNJCiAJ ICAodmVjX3NlbGVjdDpWOFFJCi0JICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJ IDEgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAidm0iKQorCSAgICAobWF0Y2hf b3BlcmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCiAJICAg IChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKSAoY29uc3RfaW50IDEpCiAJCSAg ICAgICAoY29uc3RfaW50IDIpIChjb25zdF9pbnQgMykKIAkJICAgICAgIChj b25zdF9pbnQgNCkgKGNvbnN0X2ludCA1KQogCQkgICAgICAgKGNvbnN0X2lu dCA2KSAoY29uc3RfaW50IDcpXSkpKSldCiAgICJUQVJHRVRfQVZYMiAmJiA8 bWFza19hdng1MTJ2bF9jb25kaXRpb24+IgotICAidnBtb3Y8ZXh0c3VmZml4 PmJkXHR7JTEsICUwPG1hc2tfb3BlcmFuZDI+fCUwPG1hc2tfb3BlcmFuZDI+ LCAlcTF9IgorICAidnBtb3Y8ZXh0c3VmZml4PmJkXHR7JTEsICUwPG1hc2tf b3BlcmFuZDI+fCUwPG1hc2tfb3BlcmFuZDI+LCAlMX0iCiAgIFsoc2V0X2F0 dHIgInR5cGUiICJzc2Vtb3YiKQogICAgKHNldF9hdHRyICJwcmVmaXhfZXh0 cmEiICIxIikKICAgIChzZXRfYXR0ciAicHJlZml4IiAibWF5YmVfZXZleCIp CiAgICAoc2V0X2F0dHIgIm1vZGUiICJPSSIpXSkKIAorKGRlZmluZV9pbnNu ICIqYXZ4Ml88Y29kZT52OHFpdjhzaTI8bWFza19uYW1lPl8xIgorICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWOFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9 diIpCisJKGFueV9leHRlbmQ6VjhTSQorCSAgKG1hdGNoX29wZXJhbmQ6VjhR SSAxICJtZW1vcnlfb3BlcmFuZCIgIm0iKSkpXQorICAiVEFSR0VUX0FWWDIg JiYgPG1hc2tfYXZ4NTEydmxfY29uZGl0aW9uPiIKKyAgIiV2cG1vdjxleHRz dWZmaXg+YmRcdHslMSwgJTA8bWFza19vcGVyYW5kMj58JTA8bWFza19vcGVy YW5kMj4sICVxMX0iCisgIFsoc2V0X2F0dHIgInR5cGUiICJzc2Vtb3YiKQor ICAgKHNldF9hdHRyICJwcmVmaXhfZXh0cmEiICIxIikKKyAgIChzZXRfYXR0 ciAicHJlZml4IiAibWF5YmVfZXZleCIpCisgICAoc2V0X2F0dHIgIm1vZGUi ICJPSSIpXSkKKworKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKmF2eDJfPGNv ZGU+djhxaXY4c2kyPG1hc2tfbmFtZT5fMiIKKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjhTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkoYW55X2V4dGVu ZDpWOFNJCisJICAodmVjX3NlbGVjdDpWOFFJCisJICAgIChzdWJyZWc6VjE2 UUkKKwkgICAgICAodmVjX2NvbmNhdDpWMkRJCisJICAgICAgICAobWF0Y2hf b3BlcmFuZDpESSAxICJtZW1vcnlfb3BlcmFuZCIpCisJCShjb25zdF9pbnQg MCkpIDApCisJICAgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKSAoY29uc3Rf aW50IDEpCisJCSAgICAgICAoY29uc3RfaW50IDIpIChjb25zdF9pbnQgMykK KwkJICAgICAgIChjb25zdF9pbnQgNCkgKGNvbnN0X2ludCA1KQorCQkgICAg ICAgKGNvbnN0X2ludCA2KSAoY29uc3RfaW50IDcpXSkpKSldCisgICJUQVJH RVRfQVZYMiAmJiA8bWFza19hdng1MTJ2bF9jb25kaXRpb24+IgorICAiIyIK KyAgIiYmIGNhbl9jcmVhdGVfcHNldWRvX3AgKCkiCisgIFsoc2V0IChtYXRj aF9kdXAgMCkKKwkoYW55X2V4dGVuZDpWOFNJIChtYXRjaF9kdXAgMSkpKV0K K3sKKyAgb3BlcmFuZHNbMV0gPSBhZGp1c3RfYWRkcmVzc19udiAob3BlcmFu ZHNbMV0sIFY4UUltb2RlLCAwKTsKK30pCisKIChkZWZpbmVfaW5zbiAic3Nl NF8xXzxjb2RlPnY0cWl2NHNpMjxtYXNrX25hbWU+IgogICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9WXIsKngs diIpCiAJKGFueV9leHRlbmQ6VjRTSQogCSAgKHZlY19zZWxlY3Q6VjRRSQot CSAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAxICJub25pbW1lZGlhdGVfb3Bl cmFuZCIgIllybSwqeG0sdm0iKQorCSAgICAobWF0Y2hfb3BlcmFuZDpWMTZR SSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiWXIsKngsdiIpCiAJICAgIChwYXJh bGxlbCBbKGNvbnN0X2ludCAwKSAoY29uc3RfaW50IDEpCiAJCSAgICAgICAo Y29uc3RfaW50IDIpIChjb25zdF9pbnQgMyldKSkpKV0KICAgIlRBUkdFVF9T U0U0XzEgJiYgPG1hc2tfYXZ4NTEydmxfY29uZGl0aW9uPiIKKyAgIiV2cG1v djxleHRzdWZmaXg+YmRcdHslMSwgJTA8bWFza19vcGVyYW5kMj58JTA8bWFz a19vcGVyYW5kMj4sICUxfSIKKyAgWyhzZXRfYXR0ciAiaXNhIiAibm9hdngs bm9hdngsYXZ4IikKKyAgIChzZXRfYXR0ciAidHlwZSIgInNzZW1vdiIpCisg ICAoc2V0X2F0dHIgInByZWZpeF9leHRyYSIgIjEiKQorICAgKHNldF9hdHRy ICJwcmVmaXgiICJvcmlnLG9yaWcsbWF5YmVfZXZleCIpCisgICAoc2V0X2F0 dHIgIm1vZGUiICJUSSIpXSkKKworKGRlZmluZV9pbnNuICIqc3NlNF8xXzxj b2RlPnY0cWl2NHNpMjxtYXNrX25hbWU+XzEiCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1ZciwqeCx2IikK KwkoYW55X2V4dGVuZDpWNFNJCisJICAobWF0Y2hfb3BlcmFuZDpWNFFJIDEg Im1lbW9yeV9vcGVyYW5kIiAibSwqbSxtIikpKV0KKyAgIlRBUkdFVF9TU0U0 XzEgJiYgPG1hc2tfYXZ4NTEydmxfY29uZGl0aW9uPiIKICAgIiV2cG1vdjxl eHRzdWZmaXg+YmRcdHslMSwgJTA8bWFza19vcGVyYW5kMj58JTA8bWFza19v cGVyYW5kMj4sICVrMX0iCiAgIFsoc2V0X2F0dHIgImlzYSIgIm5vYXZ4LG5v YXZ4LGF2eCIpCiAgICAoc2V0X2F0dHIgInR5cGUiICJzc2Vtb3YiKQpAQCAt MTU5MzIsNiArMTYwMDksMjkgQEAKICAgIChzZXRfYXR0ciAicHJlZml4IiAi b3JpZyxvcmlnLG1heWJlX2V2ZXgiKQogICAgKHNldF9hdHRyICJtb2RlIiAi VEkiKV0pCiAKKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIipzc2U0XzFfPGNv ZGU+djRxaXY0c2kyPG1hc2tfbmFtZT5fMiIKKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjRTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkoYW55X2V4dGVu ZDpWNFNJCisJICAodmVjX3NlbGVjdDpWNFFJCisJICAgIChzdWJyZWc6VjE2 UUkKKwkgICAgICAodmVjX21lcmdlOlY0U0kKKwkgICAgICAgICh2ZWNfZHVw bGljYXRlOlY0U0kKKwkJICAobWF0Y2hfb3BlcmFuZDpTSSAxICJtZW1vcnlf b3BlcmFuZCIpKQorCQkoY29uc3RfdmVjdG9yOlY0U0kKKwkJICAgWyhjb25z dF9pbnQgMCkgKGNvbnN0X2ludCAwKQorCQkgICAgKGNvbnN0X2ludCAwKSAo Y29uc3RfaW50IDApXSkKKwkJKGNvbnN0X2ludCAxKSkgMCkKKwkgICAgKHBh cmFsbGVsIFsoY29uc3RfaW50IDApIChjb25zdF9pbnQgMSkKKwkJICAgICAg IChjb25zdF9pbnQgMikgKGNvbnN0X2ludCAzKV0pKSkpXQorICAiVEFSR0VU X1NTRTRfMSAmJiA8bWFza19hdng1MTJid19jb25kaXRpb24+ICYmIDxtYXNr X2F2eDUxMnZsX2NvbmRpdGlvbj4iCisgICIjIgorICAiJiYgY2FuX2NyZWF0 ZV9wc2V1ZG9fcCAoKSIKKyAgWyhzZXQgKG1hdGNoX2R1cCAwKQorCShhbnlf ZXh0ZW5kOlY0U0kgKG1hdGNoX2R1cCAxKSkpXQoreworICBvcGVyYW5kc1sx XSA9IGFkanVzdF9hZGRyZXNzX252IChvcGVyYW5kc1sxXSwgVjRRSW1vZGUs IDApOworfSkKKwogKGRlZmluZV9pbnNuICJhdng1MTJmXzxjb2RlPnYxNmhp djE2c2kyPG1hc2tfbmFtZT4iCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYx NlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCiAJKGFueV9leHRlbmQ6 VjE2U0kKQEAgLTE1OTU3LDEwICsxNjA1NywyMiBAQAogICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9WXIsKngs diIpCiAJKGFueV9leHRlbmQ6VjRTSQogCSAgKHZlY19zZWxlY3Q6VjRISQot CSAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDEgIm5vbmltbWVkaWF0ZV9vcGVy YW5kIiAiWXJtLCp4bSx2bSIpCisJICAgIChtYXRjaF9vcGVyYW5kOlY4SEkg MSAicmVnaXN0ZXJfb3BlcmFuZCIgIllyLCp4LHYiKQogCSAgICAocGFyYWxs ZWwgWyhjb25zdF9pbnQgMCkgKGNvbnN0X2ludCAxKQogCQkgICAgICAgKGNv bnN0X2ludCAyKSAoY29uc3RfaW50IDMpXSkpKSldCiAgICJUQVJHRVRfU1NF NF8xICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCisgICIldnBtb3Y8 ZXh0c3VmZml4PndkXHR7JTEsICUwPG1hc2tfb3BlcmFuZDI+fCUwPG1hc2tf b3BlcmFuZDI+LCAlMX0iCisgIFsoc2V0X2F0dHIgImlzYSIgIm5vYXZ4LG5v YXZ4LGF2eCIpCisgICAoc2V0X2F0dHIgInR5cGUiICJzc2Vtb3YiKQorICAg KHNldF9hdHRyICJwcmVmaXhfZXh0cmEiICIxIikKKyAgIChzZXRfYXR0ciAi cHJlZml4IiAib3JpZyxvcmlnLG1heWJlX2V2ZXgiKQorICAgKHNldF9hdHRy ICJtb2RlIiAiVEkiKV0pCisKKyhkZWZpbmVfaW5zbiAiKnNzZTRfMV88Y29k ZT52NGhpdjRzaTI8bWFza19uYW1lPl8xIgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9WXIsKngsdiIpCisJ KGFueV9leHRlbmQ6VjRTSQorCSAgKG1hdGNoX29wZXJhbmQ6VjRISSAxICJt ZW1vcnlfb3BlcmFuZCIgIm0sKm0sbSIpKSldCisgICJUQVJHRVRfU1NFNF8x ICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCiAgICIldnBtb3Y8ZXh0 c3VmZml4PndkXHR7JTEsICUwPG1hc2tfb3BlcmFuZDI+fCUwPG1hc2tfb3Bl cmFuZDI+LCAlcTF9IgogICBbKHNldF9hdHRyICJpc2EiICJub2F2eCxub2F2 eCxhdngiKQogICAgKHNldF9hdHRyICJ0eXBlIiAic3NlbW92IikKQEAgLTE1 OTY4LDQzICsxNjA4MCwxMjcgQEAKICAgIChzZXRfYXR0ciAicHJlZml4IiAi b3JpZyxvcmlnLG1heWJlX2V2ZXgiKQogICAgKHNldF9hdHRyICJtb2RlIiAi VEkiKV0pCiAKKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIipzc2U0XzFfPGNv ZGU+djRoaXY0c2kyPG1hc2tfbmFtZT5fMiIKKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjRTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkoYW55X2V4dGVu ZDpWNFNJCisJICAodmVjX3NlbGVjdDpWNEhJCisJICAgIChzdWJyZWc6VjhI SQorCSAgICAgICh2ZWNfY29uY2F0OlYyREkKKwkJKG1hdGNoX29wZXJhbmQ6 REkgMSAibWVtb3J5X29wZXJhbmQiKQorCQkoY29uc3RfaW50IDApKSAwKQor CSAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkgKGNvbnN0X2ludCAxKQor CQkgICAgICAgKGNvbnN0X2ludCAyKSAoY29uc3RfaW50IDMpXSkpKSldCisg ICJUQVJHRVRfU1NFNF8xICYmIDxtYXNrX2F2eDUxMmJ3X2NvbmRpdGlvbj4g JiYgPG1hc2tfYXZ4NTEydmxfY29uZGl0aW9uPiIKKyAgIiMiCisgICImJiBj YW5fY3JlYXRlX3BzZXVkb19wICgpIgorICBbKHNldCAobWF0Y2hfZHVwIDAp CisJKGFueV9leHRlbmQ6VjRTSSAobWF0Y2hfZHVwIDEpKSldCit7CisgIG9w ZXJhbmRzWzFdID0gYWRqdXN0X2FkZHJlc3NfbnYgKG9wZXJhbmRzWzFdLCBW NEhJbW9kZSwgMCk7Cit9KQorCiAoZGVmaW5lX2luc24gImF2eDUxMmZfPGNv ZGU+djhxaXY4ZGkyPG1hc2tfbmFtZT4iCiAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlY4REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKIAkoYW55X2V4 dGVuZDpWOERJCiAJICAodmVjX3NlbGVjdDpWOFFJCi0JICAgIChtYXRjaF9v cGVyYW5kOlYxNlFJIDEgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAidm0iKQor CSAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5k IiAidiIpCiAJICAgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKSAoY29uc3Rf aW50IDEpCiAJCSAgICAgICAoY29uc3RfaW50IDIpIChjb25zdF9pbnQgMykK IAkJICAgICAgIChjb25zdF9pbnQgNCkgKGNvbnN0X2ludCA1KQogCQkgICAg ICAgKGNvbnN0X2ludCA2KSAoY29uc3RfaW50IDcpXSkpKSldCiAgICJUQVJH RVRfQVZYNTEyRiIKKyAgInZwbW92PGV4dHN1ZmZpeD5icVx0eyUxLCAlMDxt YXNrX29wZXJhbmQyPnwlMDxtYXNrX29wZXJhbmQyPiwgJTF9IgorICBbKHNl dF9hdHRyICJ0eXBlIiAic3NlbW92IikKKyAgIChzZXRfYXR0ciAicHJlZml4 IiAiZXZleCIpCisgICAoc2V0X2F0dHIgIm1vZGUiICJYSSIpXSkKKworKGRl ZmluZV9pbnNuICIqYXZ4NTEyZl88Y29kZT52OHFpdjhkaTI8bWFza19uYW1l Pl8xIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWOERJIDAgInJlZ2lzdGVy X29wZXJhbmQiICI9diIpCisJKGFueV9leHRlbmQ6VjhESQorCSAgKG1hdGNo X29wZXJhbmQ6VjhRSSAxICJtZW1vcnlfb3BlcmFuZCIgIm0iKSkpXQorICAi VEFSR0VUX0FWWDUxMkYiCiAgICJ2cG1vdjxleHRzdWZmaXg+YnFcdHslMSwg JTA8bWFza19vcGVyYW5kMj58JTA8bWFza19vcGVyYW5kMj4sICVrMX0iCiAg IFsoc2V0X2F0dHIgInR5cGUiICJzc2Vtb3YiKQogICAgKHNldF9hdHRyICJw cmVmaXgiICJldmV4IikKICAgIChzZXRfYXR0ciAibW9kZSIgIlhJIildKQog CisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqYXZ4NTEyZl88Y29kZT52OHFp djhkaTI8bWFza19uYW1lPl8yIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW OERJIDAgInJlZ2lzdGVyX29wZXJhbmQiKQorCShhbnlfZXh0ZW5kOlY4REkK KwkgICh2ZWNfc2VsZWN0OlY4UUkKKwkgICAgKHN1YnJlZzpWMTZRSQorCSAg ICAgICh2ZWNfY29uY2F0OlYyREkKKwkgICAgICAgIChtYXRjaF9vcGVyYW5k OkRJIDEgIm1lbW9yeV9vcGVyYW5kIikKKwkJKGNvbnN0X2ludCAwKSkgMCkK KwkgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApIChjb25zdF9pbnQgMSkK KwkJICAgICAgIChjb25zdF9pbnQgMikgKGNvbnN0X2ludCAzKQorCQkgICAg ICAgKGNvbnN0X2ludCA0KSAoY29uc3RfaW50IDUpCisJCSAgICAgICAoY29u c3RfaW50IDYpIChjb25zdF9pbnQgNyldKSkpKV0KKyAgIlRBUkdFVF9BVlg1 MTJGIgorICAiIyIKKyAgIiYmIGNhbl9jcmVhdGVfcHNldWRvX3AgKCkiCisg IFsoc2V0IChtYXRjaF9kdXAgMCkKKwkoYW55X2V4dGVuZDpWOERJIChtYXRj aF9kdXAgMSkpKV0KK3sKKyAgb3BlcmFuZHNbMV0gPSBhZGp1c3RfYWRkcmVz c19udiAob3BlcmFuZHNbMV0sIFY4UUltb2RlLCAwKTsKK30pCisKIChkZWZp bmVfaW5zbiAiYXZ4Ml88Y29kZT52NHFpdjRkaTI8bWFza19uYW1lPiIKICAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRESSAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiPXYiKQogCShhbnlfZXh0ZW5kOlY0REkKIAkgICh2ZWNfc2VsZWN0OlY0 UUkKLQkgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAibm9uaW1tZWRpYXRl X29wZXJhbmQiICJ2bSIpCisJICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDEg InJlZ2lzdGVyX29wZXJhbmQiICJ2IikKIAkgICAgKHBhcmFsbGVsIFsoY29u c3RfaW50IDApIChjb25zdF9pbnQgMSkKIAkJICAgICAgIChjb25zdF9pbnQg MikgKGNvbnN0X2ludCAzKV0pKSkpXQogICAiVEFSR0VUX0FWWDIgJiYgPG1h c2tfYXZ4NTEydmxfY29uZGl0aW9uPiIKKyAgInZwbW92PGV4dHN1ZmZpeD5i cVx0eyUxLCAlMDxtYXNrX29wZXJhbmQyPnwlMDxtYXNrX29wZXJhbmQyPiwg JTF9IgorICBbKHNldF9hdHRyICJ0eXBlIiAic3NlbW92IikKKyAgIChzZXRf YXR0ciAicHJlZml4X2V4dHJhIiAiMSIpCisgICAoc2V0X2F0dHIgInByZWZp eCIgIm1heWJlX2V2ZXgiKQorICAgKHNldF9hdHRyICJtb2RlIiAiT0kiKV0p CisKKyhkZWZpbmVfaW5zbiAiKmF2eDJfPGNvZGU+djRxaXY0ZGkyPG1hc2tf bmFtZT5fMSIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRESSAwICJyZWdp c3Rlcl9vcGVyYW5kIiAiPXYiKQorCShhbnlfZXh0ZW5kOlY0REkKKwkgICht YXRjaF9vcGVyYW5kOlY0UUkgMSAibWVtb3J5X29wZXJhbmQiICJtIikpKV0K KyAgIlRBUkdFVF9BVlgyICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4i CiAgICJ2cG1vdjxleHRzdWZmaXg+YnFcdHslMSwgJTA8bWFza19vcGVyYW5k Mj58JTA8bWFza19vcGVyYW5kMj4sICVrMX0iCiAgIFsoc2V0X2F0dHIgInR5 cGUiICJzc2Vtb3YiKQogICAgKHNldF9hdHRyICJwcmVmaXhfZXh0cmEiICIx IikKICAgIChzZXRfYXR0ciAicHJlZml4IiAibWF5YmVfZXZleCIpCiAgICAo c2V0X2F0dHIgIm1vZGUiICJPSSIpXSkKIAorKGRlZmluZV9pbnNuX2FuZF9z cGxpdCAiKmF2eDJfPGNvZGU+djRxaXY0ZGkyPG1hc2tfbmFtZT5fMiIKKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRESSAwICJyZWdpc3Rlcl9vcGVyYW5k IikKKwkoYW55X2V4dGVuZDpWNERJCisJICAodmVjX3NlbGVjdDpWNFFJCisJ ICAgIChzdWJyZWc6VjE2UUkKKwkgICAgICAodmVjX21lcmdlOlY0U0kKKwkg ICAgICAgICh2ZWNfZHVwbGljYXRlOlY0U0kKKwkJICAobWF0Y2hfb3BlcmFu ZDpTSSAxICJtZW1vcnlfb3BlcmFuZCIpKQorCQkoY29uc3RfdmVjdG9yOlY0 U0kKKwkJICAgWyhjb25zdF9pbnQgMCkgKGNvbnN0X2ludCAwKQorCQkgICAg KGNvbnN0X2ludCAwKSAoY29uc3RfaW50IDApXSkKKwkJKGNvbnN0X2ludCAx KSkgMCkKKwkgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApIChjb25zdF9p bnQgMSkKKwkJICAgICAgIChjb25zdF9pbnQgMikgKGNvbnN0X2ludCAzKV0p KSkpXQorICAiVEFSR0VUX0FWWDIgJiYgPG1hc2tfYXZ4NTEydmxfY29uZGl0 aW9uPiIKKyAgIiMiCisgICImJiBjYW5fY3JlYXRlX3BzZXVkb19wICgpIgor ICBbKHNldCAobWF0Y2hfZHVwIDApCisJKGFueV9leHRlbmQ6VjRESSAobWF0 Y2hfZHVwIDEpKSldCit7CisgIG9wZXJhbmRzWzFdID0gYWRqdXN0X2FkZHJl c3NfbnYgKG9wZXJhbmRzWzFdLCBWNFFJbW9kZSwgMCk7Cit9KQorCiAoZGVm aW5lX2luc24gInNzZTRfMV88Y29kZT52MnFpdjJkaTI8bWFza19uYW1lPiIK ICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJESSAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPVlyLCp4LHYiKQogCShhbnlfZXh0ZW5kOlYyREkKIAkgICh2ZWNf c2VsZWN0OlYyUUkKLQkgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAibm9u aW1tZWRpYXRlX29wZXJhbmQiICJZcm0sKnhtLHZtIikKKwkgICAgKG1hdGNo X29wZXJhbmQ6VjE2UUkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIllyLCp4LHYi KQogCSAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkgKGNvbnN0X2ludCAx KV0pKSkpXQogICAiVEFSR0VUX1NTRTRfMSAmJiA8bWFza19hdng1MTJ2bF9j b25kaXRpb24+IgotICAiJXZwbW92PGV4dHN1ZmZpeD5icVx0eyUxLCAlMDxt YXNrX29wZXJhbmQyPnwlMDxtYXNrX29wZXJhbmQyPiwgJXcxfSIKKyAgIiV2 cG1vdjxleHRzdWZmaXg+YnFcdHslMSwgJTA8bWFza19vcGVyYW5kMj58JTA8 bWFza19vcGVyYW5kMj4sICUxfSIKICAgWyhzZXRfYXR0ciAiaXNhIiAibm9h dngsbm9hdngsYXZ4IikKICAgIChzZXRfYXR0ciAidHlwZSIgInNzZW1vdiIp CiAgICAoc2V0X2F0dHIgInByZWZpeF9leHRyYSIgIjEiKQpAQCAtMTYwMjUs MjMgKzE2MjIxLDY1IEBACiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0REkg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKIAkoYW55X2V4dGVuZDpWNERJ CiAJICAodmVjX3NlbGVjdDpWNEhJCi0JICAgIChtYXRjaF9vcGVyYW5kOlY4 SEkgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICJ2bSIpCisJICAgIChtYXRj aF9vcGVyYW5kOlY4SEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQogCSAg ICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkgKGNvbnN0X2ludCAxKQogCQkg ICAgICAgKGNvbnN0X2ludCAyKSAoY29uc3RfaW50IDMpXSkpKSldCiAgICJU QVJHRVRfQVZYMiAmJiA8bWFza19hdng1MTJ2bF9jb25kaXRpb24+IgorICAi dnBtb3Y8ZXh0c3VmZml4PndxXHR7JTEsICUwPG1hc2tfb3BlcmFuZDI+fCUw PG1hc2tfb3BlcmFuZDI+LCAlMX0iCisgIFsoc2V0X2F0dHIgInR5cGUiICJz c2Vtb3YiKQorICAgKHNldF9hdHRyICJwcmVmaXhfZXh0cmEiICIxIikKKyAg IChzZXRfYXR0ciAicHJlZml4IiAibWF5YmVfZXZleCIpCisgICAoc2V0X2F0 dHIgIm1vZGUiICJPSSIpXSkKKworKGRlZmluZV9pbnNuICIqYXZ4Ml88Y29k ZT52NGhpdjRkaTI8bWFza19uYW1lPl8xIgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWNERJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCisJKGFueV9l eHRlbmQ6VjRESQorCSAgKG1hdGNoX29wZXJhbmQ6VjRISSAxICJtZW1vcnlf b3BlcmFuZCIgIm0iKSkpXQorICAiVEFSR0VUX0FWWDIgJiYgPG1hc2tfYXZ4 NTEydmxfY29uZGl0aW9uPiIKICAgInZwbW92PGV4dHN1ZmZpeD53cVx0eyUx LCAlMDxtYXNrX29wZXJhbmQyPnwlMDxtYXNrX29wZXJhbmQyPiwgJXExfSIK ICAgWyhzZXRfYXR0ciAidHlwZSIgInNzZW1vdiIpCiAgICAoc2V0X2F0dHIg InByZWZpeF9leHRyYSIgIjEiKQogICAgKHNldF9hdHRyICJwcmVmaXgiICJt YXliZV9ldmV4IikKICAgIChzZXRfYXR0ciAibW9kZSIgIk9JIildKQogCiso ZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqYXZ4Ml88Y29kZT52NGhpdjRkaTI8 bWFza19uYW1lPl8yIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNERJIDAg InJlZ2lzdGVyX29wZXJhbmQiKQorCShhbnlfZXh0ZW5kOlY0REkKKwkgICh2 ZWNfc2VsZWN0OlY0SEkKKwkgICAgKHN1YnJlZzpWOEhJCisJICAgICAgKHZl Y19jb25jYXQ6VjJESQorCQkobWF0Y2hfb3BlcmFuZDpESSAxICJtZW1vcnlf b3BlcmFuZCIpCisJCShjb25zdF9pbnQgMCkpIDApCisJICAgIChwYXJhbGxl bCBbKGNvbnN0X2ludCAwKSAoY29uc3RfaW50IDEpCisJCSAgICAgICAoY29u c3RfaW50IDIpIChjb25zdF9pbnQgMyldKSkpKV0KKyAgIlRBUkdFVF9BVlgy ICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCisgICIjIgorICAiJiYg Y2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSIKKyAgWyhzZXQgKG1hdGNoX2R1cCAw KQorCShhbnlfZXh0ZW5kOlY0REkgKG1hdGNoX2R1cCAxKSkpXQoreworICBv cGVyYW5kc1sxXSA9IGFkanVzdF9hZGRyZXNzX252IChvcGVyYW5kc1sxXSwg VjRISW1vZGUsIDApOworfSkKKwogKGRlZmluZV9pbnNuICJzc2U0XzFfPGNv ZGU+djJoaXYyZGkyPG1hc2tfbmFtZT4iCiAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlYyREkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1ZciwqeCx2IikKIAko YW55X2V4dGVuZDpWMkRJCiAJICAodmVjX3NlbGVjdDpWMkhJCi0JICAgICht YXRjaF9vcGVyYW5kOlY4SEkgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICJZ cm0sKnhtLHZtIikKKwkgICAgKG1hdGNoX29wZXJhbmQ6VjhISSAxICJyZWdp c3Rlcl9vcGVyYW5kIiAiWXIsKngsdiIpCiAJICAgIChwYXJhbGxlbCBbKGNv bnN0X2ludCAwKSAoY29uc3RfaW50IDEpXSkpKSldCiAgICJUQVJHRVRfU1NF NF8xICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCisgICIldnBtb3Y8 ZXh0c3VmZml4PndxXHR7JTEsICUwPG1hc2tfb3BlcmFuZDI+fCUwPG1hc2tf b3BlcmFuZDI+LCAlMX0iCisgIFsoc2V0X2F0dHIgImlzYSIgIm5vYXZ4LG5v YXZ4LGF2eCIpCisgICAoc2V0X2F0dHIgInR5cGUiICJzc2Vtb3YiKQorICAg KHNldF9hdHRyICJwcmVmaXhfZXh0cmEiICIxIikKKyAgIChzZXRfYXR0ciAi cHJlZml4IiAib3JpZyxvcmlnLG1heWJlX2V2ZXgiKQorICAgKHNldF9hdHRy ICJtb2RlIiAiVEkiKV0pCisKKyhkZWZpbmVfaW5zbiAiKnNzZTRfMV88Y29k ZT52MmhpdjJkaTI8bWFza19uYW1lPl8xIgorICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWMkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9WXIsKngsdiIpCisJ KGFueV9leHRlbmQ6VjJESQorCSAgKG1hdGNoX29wZXJhbmQ6VjJISSAxICJt ZW1vcnlfb3BlcmFuZCIgIm0sKm0sbSIpKSldCisgICJUQVJHRVRfU1NFNF8x ICYmIDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCiAgICIldnBtb3Y8ZXh0 c3VmZml4PndxXHR7JTEsICUwPG1hc2tfb3BlcmFuZDI+fCUwPG1hc2tfb3Bl cmFuZDI+LCAlazF9IgogICBbKHNldF9hdHRyICJpc2EiICJub2F2eCxub2F2 eCxhdngiKQogICAgKHNldF9hdHRyICJ0eXBlIiAic3NlbW92IikKQEAgLTE2 MDQ5LDYgKzE2Mjg3LDI4IEBACiAgICAoc2V0X2F0dHIgInByZWZpeCIgIm9y aWcsb3JpZyxtYXliZV9ldmV4IikKICAgIChzZXRfYXR0ciAibW9kZSIgIlRJ IildKQogCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqc3NlNF8xXzxjb2Rl PnYyaGl2MmRpMjxtYXNrX25hbWU+XzIiCisgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlYyREkgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJKGFueV9leHRlbmQ6 VjJESQorCSAgKHZlY19zZWxlY3Q6VjJISQorCSAgICAoc3VicmVnOlY4SEkK KwkgICAgICAodmVjX21lcmdlOlY0U0kKKwkgICAgICAgICh2ZWNfZHVwbGlj YXRlOlY0U0kKKwkJICAobWF0Y2hfb3BlcmFuZDpTSSAxICJtZW1vcnlfb3Bl cmFuZCIpKQorCQkoY29uc3RfdmVjdG9yOlY0U0kKKwkJICAgWyhjb25zdF9p bnQgMCkgKGNvbnN0X2ludCAwKQorCQkgICAgKGNvbnN0X2ludCAwKSAoY29u c3RfaW50IDApXSkKKwkJKGNvbnN0X2ludCAxKSkgMCkKKwkgICAgKHBhcmFs bGVsIFsoY29uc3RfaW50IDApIChjb25zdF9pbnQgMSldKSkpKV0KKyAgIlRB UkdFVF9TU0U0XzEgJiYgPG1hc2tfYXZ4NTEydmxfY29uZGl0aW9uPiIKKyAg IiMiCisgICImJiBjYW5fY3JlYXRlX3BzZXVkb19wICgpIgorICBbKHNldCAo bWF0Y2hfZHVwIDApCisJKGFueV9leHRlbmQ6VjJESSAobWF0Y2hfZHVwIDEp KSldCit7CisgIG9wZXJhbmRzWzFdID0gYWRqdXN0X2FkZHJlc3NfbnYgKG9w ZXJhbmRzWzFdLCBWMkhJbW9kZSwgMCk7Cit9KQorCiAoZGVmaW5lX2luc24g ImF2eDUxMmZfPGNvZGU+djhzaXY4ZGkyPG1hc2tfbmFtZT4iCiAgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlY4REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKIAkoYW55X2V4dGVuZDpWOERJCkBAIC0xNjA3NCw5ICsxNjMzNCwyMSBA QAogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRJIDAgInJlZ2lzdGVyX29w ZXJhbmQiICI9WXIsKngsdiIpCiAJKGFueV9leHRlbmQ6VjJESQogCSAgKHZl Y19zZWxlY3Q6VjJTSQotCSAgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDEgIm5v bmltbWVkaWF0ZV9vcGVyYW5kIiAiWXJtLCp4bSx2bSIpCisJICAgIChtYXRj aF9vcGVyYW5kOlY0U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIllyLCp4LHYi KQogCSAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkgKGNvbnN0X2ludCAx KV0pKSkpXQogICAiVEFSR0VUX1NTRTRfMSAmJiA8bWFza19hdng1MTJ2bF9j b25kaXRpb24+IgorICAiJXZwbW92PGV4dHN1ZmZpeD5kcVx0eyUxLCAlMDxt YXNrX29wZXJhbmQyPnwlMDxtYXNrX29wZXJhbmQyPiwgJTF9IgorICBbKHNl dF9hdHRyICJpc2EiICJub2F2eCxub2F2eCxhdngiKQorICAgKHNldF9hdHRy ICJ0eXBlIiAic3NlbW92IikKKyAgIChzZXRfYXR0ciAicHJlZml4X2V4dHJh IiAiMSIpCisgICAoc2V0X2F0dHIgInByZWZpeCIgIm9yaWcsb3JpZyxtYXli ZV9ldmV4IikKKyAgIChzZXRfYXR0ciAibW9kZSIgIlRJIildKQorCisoZGVm aW5lX2luc24gIipzc2U0XzFfPGNvZGU+djJzaXYyZGkyPG1hc2tfbmFtZT5f MSIKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJESSAwICJyZWdpc3Rlcl9v cGVyYW5kIiAiPVlyLCp4LHYiKQorCShhbnlfZXh0ZW5kOlYyREkKKwkgICht YXRjaF9vcGVyYW5kOlYyU0kgMSAibWVtb3J5X29wZXJhbmQiICJtLCptLG0i KSkpXQorICAiVEFSR0VUX1NTRTRfMSAmJiA8bWFza19hdng1MTJ2bF9jb25k aXRpb24+IgogICAiJXZwbW92PGV4dHN1ZmZpeD5kcVx0eyUxLCAlMDxtYXNr X29wZXJhbmQyPnwlMDxtYXNrX29wZXJhbmQyPiwgJXExfSIKICAgWyhzZXRf YXR0ciAiaXNhIiAibm9hdngsbm9hdngsYXZ4IikKICAgIChzZXRfYXR0ciAi dHlwZSIgInNzZW1vdiIpCkBAIC0xNjA4NCw2ICsxNjM1NiwyNCBAQAogICAg KHNldF9hdHRyICJwcmVmaXgiICJvcmlnLG9yaWcsbWF5YmVfZXZleCIpCiAg ICAoc2V0X2F0dHIgIm1vZGUiICJUSSIpXSkKIAorKGRlZmluZV9pbnNuX2Fu ZF9zcGxpdCAiKnNzZTRfMV88Y29kZT52MnNpdjJkaTI8bWFza19uYW1lPl8y IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRJIDAgInJlZ2lzdGVyX29w ZXJhbmQiKQorCShhbnlfZXh0ZW5kOlYyREkKKwkgICh2ZWNfc2VsZWN0OlYy U0kKKwkgICAgKHN1YnJlZzpWNFNJCisJICAgICAgKHZlY19jb25jYXQ6VjJE SQorCQkobWF0Y2hfb3BlcmFuZDpESSAxICJtZW1vcnlfb3BlcmFuZCIpCisJ CShjb25zdF9pbnQgMCkpIDApCisJICAgIChwYXJhbGxlbCBbKGNvbnN0X2lu dCAwKSAoY29uc3RfaW50IDEpXSkpKSldCisgICJUQVJHRVRfU1NFNF8xICYm IDxtYXNrX2F2eDUxMnZsX2NvbmRpdGlvbj4iCisgICIjIgorICAiJiYgY2Fu X2NyZWF0ZV9wc2V1ZG9fcCAoKSIKKyAgWyhzZXQgKG1hdGNoX2R1cCAwKQor CShhbnlfZXh0ZW5kOlYyREkgKG1hdGNoX2R1cCAxKSkpXQoreworICBvcGVy YW5kc1sxXSA9IGFkanVzdF9hZGRyZXNzX252IChvcGVyYW5kc1sxXSwgVjJT SW1vZGUsIDApOworfSkKKwogOzsgcHRlc3Rwcy9wdGVzdHBkIGFyZSB2ZXJ5 IHNpbWlsYXIgdG8gY29taXNzIGFuZCB1Y29taXNzIHdoZW4KIDs7IHNldHRp bmcgRkxBR1NfUkVHLiBCdXQgaXQgaXMgbm90IGEgcmVhbGx5IGNvbXBhcmUg aW5zdHJ1Y3Rpb24uCiAoZGVmaW5lX2luc24gImF2eF92dGVzdDxzc2Vtb2Rl c3VmZml4PjxhdnhzaXplc3VmZml4PiIKZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctMS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVjNmIxMWQzNzFkCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv cHI4NzMxNy0xLmMKQEAgLTAsMCArMSwxNCBAQAorLyogeyBkZy1kbyBjb21w aWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMiAtbWFyY2g9aGFzd2VsbCIgfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cG1vdnp4YnciIDEgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJ2bW92cSIgfSB9 ICovCisKKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKwordm9pZAorZiAodm9p ZCAqZHN0LCB2b2lkICpwdHIpCit7CisgIF9fbTEyOGkgZGF0YSA9IF9tbV9j dnRzaTY0X3NpMTI4KCoobG9uZyBsb25nIGludCopcHRyKTsKKyAgZGF0YSA9 IF9tbV9jdnRlcHU4X2VwaTE2KGRhdGEpOworICBfbW1fc3RvcmV1X3NpMTI4 KChfX20xMjhpKilkc3QsIGRhdGEpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xMC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xMC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYTlhN2EyZjEwMQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByODczMTctMTAuYwpAQCAtMCwwICsxLDE0IEBACisvKiB7IGRnLWRv IGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8yIC1tYXJjaD1oYXN3ZWxsIiB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwbW92enhiZCIgMSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInZtb3Zx IiB9IH0gKi8KKworI2luY2x1ZGUgPGltbWludHJpbi5oPgorCit2b2lkCitm ICh2b2lkICpkc3QsIHZvaWQgKnB0cikKK3sKKyAgX19tMTI4aSB5ID0gX21t X2N2dHNpNjRfc2kxMjgoKihsb25nIGxvbmcgaW50KilwdHIpOworICBfX20y NTZpIHogPSBfbW0yNTZfY3Z0ZXB1OF9lcGkzMiAoeSk7CisgIF9tbTI1Nl9z dG9yZXVfc2kyNTYoKF9fbTI1NmkqKWRzdCwgeik7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTExLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTExLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjEzZjBj MjM0NThhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvcHI4NzMxNy0xMS5jCkBAIC0wLDAgKzEsMTQgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNoPWhhc3dlbGwiIH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBtb3Z6eHdx IiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAidm1vdnEiIH0gfSAqLworCisjaW5jbHVkZSA8aW1taW50cmluLmg+CisK K3ZvaWQKK2YgKHZvaWQgKmRzdCwgdm9pZCAqcHRyKQoreworICBfX20xMjhp IHkgPSBfbW1fY3Z0c2k2NF9zaTEyOCgqKGxvbmcgbG9uZyBpbnQqKXB0cik7 CisgIF9fbTI1NmkgeiA9IF9tbTI1Nl9jdnRlcHUxNl9lcGk2NCAoeSk7Cisg IF9tbTI1Nl9zdG9yZXVfc2kyNTYoKF9fbTI1NmkqKWRzdCwgeik7Cit9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3 MzE3LTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3 MzE3LTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjEwOTA5NjZjNGQxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xMi5jCkBAIC0wLDAgKzEs MjIgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9 IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzMgLW1hcmNoPWhhc3dlbGwi IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi dnBtb3ZzeHdxIiAxIH0gfSAqLworCisjaW5jbHVkZSA8aW1taW50cmluLmg+ CisKKyNkZWZpbmUgTUFYIDQKKworbG9uZyBsb25nIGludCBkc3RbTUFYXTsK K3Nob3J0IHNyY1tNQVhdOworCit2b2lkCitmb28gKHZvaWQpCit7CisgIGlu dCBpOworICBmb3IgKGkgPSAwOyBpIDwgTUFYOyBpICs9IDQpCisgICAgewor ICAgICAgX19tMTI4aSBkYXRhID0gX21tX2N2dHNpNjRfc2kxMjgoKihsb25n IGxvbmcgaW50Kikoc3JjICsgaSkpOworICAgICAgX19tMjU2aSB4ID0gX21t MjU2X2N2dGVwaTE2X2VwaTY0KGRhdGEpOworICAgICAgX21tMjU2X3N0b3Jl dV9zaTI1NigoX19tMjU2aSopKGRzdCArIGkpLCB4KTsKKyAgICB9Cit9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3 MzE3LTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3 MzE3LTEzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmQzYzNkZWY4NjgwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy0xMy5jCkBAIC0wLDAgKzEs MTQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9 IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hdng1MTJmIiB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwbW92 enhicSIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci1ub3QgInZtb3ZxIiB9IH0gKi8KKworI2luY2x1ZGUgPGltbWludHJpbi5o PgorCit2b2lkCitmICh2b2lkICpkc3QsIHZvaWQgKnB0cikKK3sKKyAgX19t MTI4aSB5ID0gX21tX2N2dHNpNjRfc2kxMjgoKihsb25nIGxvbmcgaW50Kilw dHIpOworICBfX201MTJpIHogPSBfbW01MTJfY3Z0ZXB1OF9lcGk2NCAoeSk7 CisgIF9tbTUxMl9zdG9yZXVfc2k1MTIoKF9fbTUxMmkqKWRzdCwgeik7Cit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9w cjg3MzE3LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3By ODczMTctMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5lN2VhYWY2NmVlZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctMi5jCkBAIC0wLDAgKzEs MTQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9 IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNoPWhhc3dlbGwi IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi dnBtb3ZzeHdkIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCAidm1vdnEiIH0gfSAqLworCisjaW5jbHVkZSA8aW1taW50 cmluLmg+CisKK3ZvaWQKK2YgKHZvaWQgKmRzdCwgdm9pZCAqcHRyKQorewor ICBfX20xMjhpIGRhdGEgPSBfbW1fY3Z0c2k2NF9zaTEyOCgqKGxvbmcgbG9u ZyBpbnQqKXB0cik7CisgIGRhdGEgPSBfbW1fY3Z0ZXBpMTZfZXBpMzIoZGF0 YSk7CisgIF9tbV9zdG9yZXVfc2kxMjgoKF9fbTEyOGkqKWRzdCwgZGF0YSk7 Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9wcjg3MzE3LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ByODczMTctMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5mMmUwNDFhYjRhZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctMy5jCkBAIC0wLDAg KzEsMTQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEz MiB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNoPWhhc3dl bGwiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAidnBtb3ZzeGRxIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCAidm1vdnEiIH0gfSAqLworCisjaW5jbHVkZSA8aW1t aW50cmluLmg+CisKK3ZvaWQKK2YgKHZvaWQgKmRzdCwgdm9pZCAqcHRyKQor eworICBfX20xMjhpIGRhdGEgPSBfbW1fY3Z0c2k2NF9zaTEyOCgqKGxvbmcg bG9uZyBpbnQqKXB0cik7CisgIGRhdGEgPSBfbW1fY3Z0ZXBpMzJfZXBpNjQo ZGF0YSk7CisgIF9tbV9zdG9yZXVfc2kxMjgoKF9fbTEyOGkqKWRzdCwgZGF0 YSk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9wcjg3MzE3LTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByODczMTctNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4yZDRmMjRhODllOQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctNC5jCkBAIC0w LDAgKzEsMTQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PMiAtbWFyY2g9aGFzd2VsbCIgfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cG1vdnp4YmQiIDEgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJ2bW92 ZCIgfSB9ICovCisKKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKwordm9pZAor ZiAodm9pZCAqZHN0LCB2b2lkICpwdHIpCit7CisgIF9fbTEyOGkgZGF0YSA9 IF9tbV9jdnRzaTMyX3NpMTI4KCooaW50KilwdHIpOworICBkYXRhID0gX21t X2N2dGVwdThfZXBpMzIoZGF0YSk7CisgIF9tbV9zdG9yZXVfc2kxMjgoKF9f bTEyOGkqKWRzdCwgZGF0YSk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTUuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3ByODczMTctNS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45NmY4Mjg0N2U1ZAotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3By ODczMTctNS5jCkBAIC0wLDAgKzEsMTQgQEAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFyY2g9aGFzd2VsbCIg fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2 cG1vdnp4d3EiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90ICJ2bW92ZCIgfSB9ICovCisKKyNpbmNsdWRlIDxpbW1pbnRy aW4uaD4KKwordm9pZAorZiAodm9pZCAqZHN0LCB2b2lkICpwdHIpCit7Cisg IF9fbTEyOGkgZGF0YSA9IF9tbV9jdnRzaTMyX3NpMTI4KCooaW50KilwdHIp OworICBkYXRhID0gX21tX2N2dGVwdTE2X2VwaTY0KGRhdGEpOworICBfbW1f c3RvcmV1X3NpMTI4KChfX20xMjhpKilkc3QsIGRhdGEpOworfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy02 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTYu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGZl OWIxMWMxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9wcjg3MzE3LTYuYwpAQCAtMCwwICsxLDE0IEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg LW1hcmNoPWhhc3dlbGwiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAidnBtb3Z6eGJxIiAxIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAidm1vdnEiIH0gfSAqLworCisj aW5jbHVkZSA8aW1taW50cmluLmg+CisKK3ZvaWQKK2YgKHZvaWQgKmRzdCwg dm9pZCAqcHRyKQoreworICBfX20xMjhpIHkgPSBfbW1fY3Z0c2kzMl9zaTEy OCgqKGludCopcHRyKTsKKyAgX19tMjU2aSB6ID0gX21tMjU2X2N2dGVwdThf ZXBpNjQgKHkpOworICBfbW0yNTZfc3RvcmV1X3NpMjU2KChfX20yNTZpKilk c3QsIHopOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvcHI4NzMxNy03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjg3MzE3LTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMmMwNDNkOWViMjYKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTcuYwpA QCAtMCwwICsxLDE0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQg eyAhIGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXJj aD1oYXN3ZWxsIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgInZwbW92enhiZCIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgInZtb3ZkIiB9IH0gKi8KKworI2luY2x1 ZGUgPGltbWludHJpbi5oPgorCit2b2lkCitmICh2b2lkICpkc3QsIHZvaWQg KnB0cikKK3sKKyAgX19tMTI4aSBkYXRhID0gX21tX2N2dHNpMzJfc2kxMjgo KihpbnQqKXB0cik7CisgIGRhdGEgPSBfbW1fY3Z0ZXB1OF9lcGkzMihkYXRh KTsKKyAgX21tX3N0b3JldV9zaTEyOCgoX19tMTI4aSopZHN0LCBkYXRhKTsK K30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L3ByODczMTctOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv cHI4NzMxNy04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjE3ODQ1NWY0MmMxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NzMxNy04LmMKQEAgLTAsMCAr MSwxNCBAQAorLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFyY2g9aGFzd2Vs bCIgfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJ2cG1vdnp4d3EiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90ICJ2bW92cSIgfSB9ICovCisKKyNpbmNsdWRlIDxpbW1p bnRyaW4uaD4KKwordm9pZAorZiAodm9pZCAqZHN0LCB2b2lkICpwdHIpCit7 CisgIF9fbTEyOGkgZGF0YSA9IF9tbV9jdnRzaTY0X3NpMTI4KCoobG9uZyBs b25nIGludCopcHRyKTsKKyAgX19tMjU2aSB4ID0gX21tMjU2X2N2dGVwdTE2 X2VwaTY0KGRhdGEpOworICBfbW0yNTZfc3RvcmV1X3NpMjU2KChfX20yNTZp Kilkc3QsIHgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvcHI4NzMxNy05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9wcjg3MzE3LTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYzUxNDRmYjY2N2IKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg3MzE3LTku YwpAQCAtMCwwICsxLDE0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJn ZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1t YXJjaD1oYXN3ZWxsIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgInZwbW92enhiZCIgMSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInZtb3ZxIiB9IH0gKi8KKworI2lu Y2x1ZGUgPGltbWludHJpbi5oPgorCit2b2lkCitmICh2b2lkICpkc3QsIHZv aWQgKnB0cikKK3sKKyAgX19tMTI4aSBkYXRhID0gX21tX2N2dHNpNjRfc2kx MjgoKihsb25nIGxvbmcgaW50KilwdHIpOworICBfX20yNTZpIHggPSBfbW0y NTZfY3Z0ZXB1OF9lcGkzMihkYXRhKTsKKyAgX21tMjU2X3N0b3JldV9zaTI1 NigoX19tMjU2aSopZHN0LCB4KTsKK30KLS0gCjIuMTcuMgoK --00000000000086eced05791c882b--