<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>123806</bug_id>
          
          <creation_ts>2013-11-05 09:04:39 -0800</creation_ts>
          <short_desc>Get rid of the regT* definitions in JSInterfaceJIT.h</short_desc>
          <delta_ts>2013-11-07 20:04:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jbriance</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947207</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-05 09:04:39 -0800</bug_when>
    <thetext>We now have regT* definitions in GPRInfo.h and JSInterfaceJIT.h, and the 2 can get out of sync.  This results in subtle bugs that are hard to detect.  We&apos;re going to make GPRInfo.h the definitive authority on regT* definitions and remove the redundant definitions in JSInterfaceJIT.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948504</commentid>
    <comment_count>1</comment_count>
      <attachid>216352</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-07 18:28:12 -0800</bug_when>
    <thetext>Created attachment 216352
the patch.

There will be 1 style failure expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948505</commentid>
    <comment_count>2</comment_count>
      <attachid>216352</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-07 18:29:13 -0800</bug_when>
    <thetext>Comment on attachment 216352
the patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=216352&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        JSInterfaceJIT now inherits on GPRInfo and FPRInfo, and relies on them

&quot;inherits on&quot; ==&gt; &quot;inherits from&quot;.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948506</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-07 18:29:47 -0800</bug_when>
    <thetext>Attachment 216352 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/jit/GPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITArithmetic.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITArithmetic32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITCall.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITCall32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITInlines.h&apos;, u&apos;Source/JavaScriptCore/jit/JITOpcodes.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOpcodes32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JSInterfaceJIT.h&apos;, u&apos;Source/JavaScriptCore/jit/SlowPathCall.h&apos;, u&apos;Source/JavaScriptCore/jit/ThunkGenerators.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/jit/JSInterfaceJIT.h:45:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948507</commentid>
    <comment_count>4</comment_count>
      <attachid>216353</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-07 18:30:23 -0800</bug_when>
    <thetext>Created attachment 216353
patch 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948511</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-07 18:32:20 -0800</bug_when>
    <thetext>Attachment 216353 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/jit/GPRInfo.h&apos;, u&apos;Source/JavaScriptCore/jit/JIT.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITArithmetic.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITArithmetic32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITCall.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITCall32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITInlines.h&apos;, u&apos;Source/JavaScriptCore/jit/JITOpcodes.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOpcodes32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JSInterfaceJIT.h&apos;, u&apos;Source/JavaScriptCore/jit/SlowPathCall.h&apos;, u&apos;Source/JavaScriptCore/jit/ThunkGenerators.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/jit/JSInterfaceJIT.h:45:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948523</commentid>
    <comment_count>6</comment_count>
      <attachid>216353</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-07 19:22:55 -0800</bug_when>
    <thetext>Comment on attachment 216353
patch 2.

View in context: https://bugs.webkit.org/attachment.cgi?id=216353&amp;action=review

r=me

&gt; Source/JavaScriptCore/jit/GPRInfo.h:286
&gt; +// regT0 has two special meanings. The return value from a stub
&gt; +// call will always be in regT0, and by default (unless
&gt; +// a register is specified) emitPutVirtualRegister() will store
&gt; +// the value from regT0.

I know that you&apos;re just moving a pre-existing comment, but since you champion comments so strongly, I&apos;m sure it bothers you that this comment is sub-par, and you want to improve it. So, I&apos;ll tell you how to.

First, you can improve the comment about return values by changing it to a static_assert that regT0 is equal to returnValueRegister. Assert is a much more reliable way to indicate an assertion of fact.

Second, you can remove the comment about emitPutVirtualRegister. GPRInfo has no business making promises about how emitPutVirtualRegister(), a client function, will work. emitPutVirtualRegister() comments itself by specifying a default argument value, and it is free to specify whatever value it likes.

Third, the static_assert is also true of regT0+regT1 on 32bit. So, you should add a static_assert for that, too.

Fourth, regT0 on 64bit, and regT0+regT1 on 32bit, are used as an &quot;accumulator&quot; style of register in the baseline JIT, caching the value of the last opcode, so that it doesn&apos;t need to be reloaded from the stack when reused by the next opcode. That&apos;s a good comment to put into the baseline JIT. You can put the static_assert there, too: the only reason we care about regT0 being equal to the return value register (or, on 32bit, regT0+regT1 equal to the return value registers) is that it facilities the accumulator style.

&gt; Source/JavaScriptCore/jit/GPRInfo.h:293
&gt; +// tempRegister2 is has no such dependencies. It is important that
&gt; +// on x86/x86-64 it is ecx for performance reasons, since the
&gt; +// MacroAssembler will need to plant register swaps if it is not -
&gt; +// however the code will still function correctly.

You&apos;ll notice that tempRegister2 doesn&apos;t exist. So, this comment should be removed.

I hope you didn&apos;t read this comment and take it to heart. If so, please go back in your memory and erase its lesson, since what it told you was false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948530</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-07 20:00:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Source/JavaScriptCore/jit/GPRInfo.h:286
&gt; &gt; +// regT0 has two special meanings. The return value from a stub
&gt; &gt; +// call will always be in regT0, and by default (unless
&gt; &gt; +// a register is specified) emitPutVirtualRegister() will store
&gt; &gt; +// the value from regT0.
&gt; 
&gt; I know that you&apos;re just moving a pre-existing comment, but since you champion comments so strongly, I&apos;m sure it bothers you that this comment is sub-par, and you want to improve it. So, I&apos;ll tell you how to.
&gt; 
&gt; First, you can improve the comment about return values by changing it to a static_assert that regT0 is equal to returnValueRegister. Assert is a much more reliable way to indicate an assertion of fact.
&gt; 
&gt; Second, you can remove the comment about emitPutVirtualRegister. GPRInfo has no business making promises about how emitPutVirtualRegister(), a client function, will work. emitPutVirtualRegister() comments itself by specifying a default argument value, and it is free to specify whatever value it likes.
&gt; 
&gt; Third, the static_assert is also true of regT0+regT1 on 32bit. So, you should add a static_assert for that, too.
&gt; 
&gt; Fourth, regT0 on 64bit, and regT0+regT1 on 32bit, are used as an &quot;accumulator&quot; style of register in the baseline JIT, caching the value of the last opcode, so that it doesn&apos;t need to be reloaded from the stack when reused by the next opcode. That&apos;s a good comment to put into the baseline JIT. You can put the static_assert there, too: the only reason we care about regT0 being equal to the return value register (or, on 32bit, regT0+regT1 equal to the return value registers) is that it facilities the accumulator style.

Thanks.  I shouldn&apos;t have propagated that comment block without digesting it first.  I&apos;ve reduced the comment preceding the GPRInfo definitions to:

// The baseline JIT requires that regT3 be callee-preserved.

And added the following after the GPRInfo definitions:

// The baseline JIT uses &quot;accumulator&quot; style execution with regT0 (for 64-bit)
// and regT0 + regT1 (for 32-bit) serving as the accumulator register(s) for
// passing results of one opcode to the next. Hence:
COMPILE_ASSERT(GPRInfo::regT0 == GPRInfo::returnValueGPR, regT0_must_equal_returnValueGPR);
#if USE(JSVALUE32_64)
COMPILE_ASSERT(GPRInfo::regT1 == GPRInfo::returnValueGPR2, regT1_must_equal_returnValueGPR2);
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948533</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-07 20:04:11 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r158901: &lt;http://trac.webkit.org/r158901&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216352</attachid>
            <date>2013-11-07 18:28:12 -0800</date>
            <delta_ts>2013-11-07 18:30:23 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-123806.patch</filename>
            <type>text/plain</type>
            <size>41978</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4ODkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDEzLTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBH
ZXQgcmlkIG9mIHRoZSByZWdUKiBkZWZpbml0aW9ucyBpbiBKU0ludGVyZmFjZUpJVC5oLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzODA2LgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTSW50ZXJmYWNl
SklUIG5vdyBpbmhlcml0cyBvbiBHUFJJbmZvIGFuZCBGUFJJbmZvLCBhbmQgcmVsaWVzIG9uIHRo
ZW0KKyAgICAgICAgdG8gcHJvdmlkZSBhbGwgdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25zLgorCisg
ICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9Bcmd1bWVu
dFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGUpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0
aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cp
OgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
TG9hZFZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0SlNW
YWx1ZVJlc3VsdCk6CisgICAgICAgIChKU0M6OkpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVja1NldEpTVmFsdWVSZXN1bHRXaXRoUHJvZmlsZSk6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW5kKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGhyb3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1t
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9jaGFyKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfY3JlYXRlX2FjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRl
X2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qdHJ1ZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lcSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNUSU5h
dGl2ZUNhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW5kKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2p0cnVlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfc3dpdGNoX2ltbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hf
Y2hhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9hY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2dldF9hcmd1bWVudF9ieV92YWwpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6SlNJbnRlcmZhY2VKSVQpOgorICAg
ICAgICAqIGppdC9TbG93UGF0aENhbGwuaDoKKyAgICAgICAgKEpTQzo6SklUU2xvd1BhdGhDYWxs
OjpjYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKwogMjAxMy0xMS0w
NyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZUTCBzaG91bGQg
c3VwcG9ydCBOZXdBcnJheQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHJl
dmlzaW9uIDE1ODg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzgsNiArMjc4LDIwIEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAK
Ky8vIE5PVEVTOiBCYXNlbGluZSBKSVQgcmVxdWlyZW1lbnRzIGZvciB0aGUgR1BSSW5mby4KKy8v
CisvLyByZWdUMCBoYXMgdHdvIHNwZWNpYWwgbWVhbmluZ3MuIFRoZSByZXR1cm4gdmFsdWUgZnJv
bSBhIHN0dWIKKy8vIGNhbGwgd2lsbCBhbHdheXMgYmUgaW4gcmVnVDAsIGFuZCBieSBkZWZhdWx0
ICh1bmxlc3MKKy8vIGEgcmVnaXN0ZXIgaXMgc3BlY2lmaWVkKSBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKCkgd2lsbCBzdG9yZQorLy8gdGhlIHZhbHVlIGZyb20gcmVnVDAuCisvLworLy8gcmVnVDMg
aXMgcmVxdWlyZWQgdG8gYmUgY2FsbGVlLXByZXNlcnZlZC4KKy8vCisvLyB0ZW1wUmVnaXN0ZXIy
IGlzIGhhcyBubyBzdWNoIGRlcGVuZGVuY2llcy4gSXQgaXMgaW1wb3J0YW50IHRoYXQKKy8vIG9u
IHg4Ni94ODYtNjQgaXQgaXMgZWN4IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBzaW5jZSB0aGUK
Ky8vIE1hY3JvQXNzZW1ibGVyIHdpbGwgbmVlZCB0byBwbGFudCByZWdpc3RlciBzd2FwcyBpZiBp
dCBpcyBub3QgLQorLy8gaG93ZXZlciB0aGUgY29kZSB3aWxsIHN0aWxsIGZ1bmN0aW9uIGNvcnJl
Y3RseS4KKwogI2lmIENQVShYODYpCiAjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgMHUKIApAQCAtMjg3LDYgKzMwMSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsK
IAorICAgIC8vIE5vdGU6IHJlZ1QzIGlzIHJlcXVpcmVkIHRvIGJlIGNhbGxlZS1wcmVzZXJ2ZWQu
CisKICAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qx
ID0gWDg2UmVnaXN0ZXJzOjplZHg7CkBAIC0zNDMsNyArMzU5LDExIEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIENQVShYODZfNjQpCisjaWYgIU9TKFdJTkRPV1MpCiAjZGVmaW5lIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgNnUKKyNlbHNlCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVO
VF9SRUdJU1RFUlMgNHUKKyNlbmRpZgogCiBjbGFzcyBHUFJJbmZvIHsKIHB1YmxpYzoKQEAgLTM1
MSw2ICszNzEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
UmVnaXN0ZXJzID0gMTA7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOwogCisgICAgLy8gTm90
ZTogcmVnVDMgaXMgcmVxdWlyZWQgdG8gYmUgY2FsbGVlLXByZXNlcnZlZC4KKwogICAgIC8vIFRo
ZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CkBA
IC0zNjgsMTIgKzM5MCwxOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
OCA9IFg4NlJlZ2lzdGVyczo6cjEwOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDkgPSBY
ODZSZWdpc3RlcnM6OnIxMzsKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFt
ZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0
ZXJzLgorI2lmICFPUyhXSU5ET1dTKQogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRH
UFIwID0gWDg2UmVnaXN0ZXJzOjplZGk7IC8vIHJlZ1Q0CiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBhcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6OmVzaTsgLy8gcmVnVDUKICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IFg4NlJlZ2lzdGVyczo6ZWR4OyAvLyByZWdUMQog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjplY3g7
IC8vIHJlZ1QyCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjQgPSBYODZSZWdp
c3RlcnM6OnI4OyAgLy8gcmVnVDYKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BS
NSA9IFg4NlJlZ2lzdGVyczo6cjk7ICAvLyByZWdUNworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIGFyZ3VtZW50R1BSMCA9IFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYXJndW1lbnRHUFIxID0gWDg2UmVnaXN0ZXJzOjplZHg7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBYODZSZWdpc3RlcnM6OnI4OyAvLyByZWdUNgorICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gWDg2UmVnaXN0ZXJzOjpyOTsgLy8g
cmVnVDcKKyNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IFg4NlJl
Z2lzdGVyczo6ZWF4OyAvLyByZWdUMAogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BS
MSA9IFg4NlJlZ2lzdGVyczo6ZWJ4OyAvLyByZWdUMwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMiA9IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUOApAQCAtMzkxLDcgKzQyMCwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEdQUlJlZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWdu
ZWQgaW5kZXgpCiAgICAgewogICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50
UmVnaXN0ZXJzKTsKKyNpZiAhT1MoV0lORE9XUykKICAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdpc3RlckZvckluZGV4W251bWJlck9mQXJndW1lbnRSZWdpc3RlcnNdID0geyBhcmd1bWVu
dEdQUjAsIGFyZ3VtZW50R1BSMSwgYXJndW1lbnRHUFIyLCBhcmd1bWVudEdQUjMsIGFyZ3VtZW50
R1BSNCwgYXJndW1lbnRHUFI1IH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyc10gPSB7IGFyZ3VtZW50
R1BSMCwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIsIGFyZ3VtZW50R1BSMyB9OworI2VuZGlm
CiAgICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKICAgICB9CiAgICAgCkBA
IC00MzMsNiArNDY2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1i
ZXJPZlJlZ2lzdGVycyA9IDEwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKIAorICAgIC8v
IE5vdGU6IHJlZ1QzIGlzIHJlcXVpcmVkIHRvIGJlIGNhbGxlZS1wcmVzZXJ2ZWQuCisKICAgICAv
LyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBB
Uk1SZWdpc3RlcnM6OnIwOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEgPSBBUk1SZWdp
c3RlcnM6OnIxOwpAQCAtNDYwLDYgKzQ5NSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBBUk1SZWdpc3RlcnM6OnIxOyAvLyByZWdUMQogICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNUmVnaXN0
ZXJzOjpyMjsKIAorI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjc7CisjZW5kaWYK
KwogICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKQEAgLTUwNCw2ICs1NDMs
OCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDE2OwogCisgICAgLy8gTm90ZTog
cmVnVDMgaXMgcmVxdWlyZWQgdG8gYmUgY2FsbGVlLXByZXNlcnZlZC4KKwogICAgIC8vIFRoZXNl
IHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDA7CiAgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7
CkBAIC01MTQsOCArNTU1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDAgPSBBUk02NFJlZ2lzdGVyczo6eDA7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9
IEFSTTY0UmVnaXN0ZXJzOjp4MTsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gQVJN
NjRSZWdpc3RlcnM6OngyOwotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBBUk02NFJl
Z2lzdGVyczo6eDM7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IEFSTTY0UmVnaXN0
ZXJzOjp4NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gQVJNNjRSZWdpc3RlcnM6
OngyMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gQVJNNjRSZWdpc3RlcnM6Ongy
NDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gQVJNNjRSZWdpc3RlcnM6Ong1Owog
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDYgPSBBUk02NFJlZ2lzdGVyczo6eDY7CiAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNyA9IEFSTTY0UmVnaXN0ZXJzOjp4NzsKQEAgLTU0Myw2
ICs1ODQsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVH
UFIyID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQogICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gQVJNNjRSZWdpc3RlcnM6OngyOwogCisjaWYg
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYnVja2V0Q291
bnRlclJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6Ong3OworI2VuZGlmCisKICAgICAvLyBHUFJS
ZWcgbWFwcGluZyBpcyBkaXJlY3QsIHRoZSBtYWNoaW5lIHJlZ3NpdGVyIG51bWJlcnMgY2FuCiAg
ICAgLy8gYmUgdXNlZCBkaXJlY3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJh
bmsuCiAgICAgQ09NUElMRV9BU1NFUlQoQVJNNjRSZWdpc3RlcnM6OnEwID09IDAsIHEwX2lzXzAp
OwpAQCAtNTk4LDYgKzY0MywxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG51bWJlck9mUmVnaXN0ZXJzID0gNzsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CiAKKyAg
ICAvLyByZWdUMCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCisgICAg
Ly8gcmVnVDEgbXVzdCBiZSB2MSBmb3IgcmV0dXJuaW5nIGEgcGFpciBvZiAzMi1iaXQgdmFsdWUu
CisgICAgLy8gcmVnVDMgbXVzdCBiZSBzYXZlZCBpbiB0aGUgY2FsbGVlLCBzbyB1c2UgYW4gUyBy
ZWdpc3Rlci4KKwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKQEAgLTY3MCw2ICs3MTksOCBAQCBwdWJsaWM6
CiAgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDEwOwogCisgICAgLy8gTm90ZTogcmVnVDMgaXMgcmVx
dWlyZWQgdG8gYmUgY2FsbGVlLXByZXNlcnZlZC4KKwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3Rl
cnMuCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IFNINFJlZ2lzdGVyczo6cjA7CiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IFNINFJlZ2lzdGVyczo6cjE7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTg4ODkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw4ICsxMDksOCBA
QCB2b2lkIEpJVDo6ZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2soKQogICAgIHNraXBPcHRpbWl6
ZS5hcHBlbmQoYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoT3B0aW9uczo6ZXhlY3V0
aW9uQ291bnRlckluY3JlbWVudEZvckVudHJ5KCkpLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxv
Y2stPmFkZHJlc3NPZkpJVEV4ZWN1dGVDb3VudGVyKCkpKSk7CiAgICAgQVNTRVJUKCFtX2J5dGVj
b2RlT2Zmc2V0KTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9wdGltaXplLCBtX2J5dGVj
b2RlT2Zmc2V0KTsKLSAgICBza2lwT3B0aW1pemUuYXBwZW5kKGJyYW5jaFRlc3RQdHIoWmVybywg
cmV0dXJuVmFsdWVSZWdpc3RlcikpOwotICAgIGp1bXAocmV0dXJuVmFsdWVSZWdpc3Rlcik7Cisg
ICAgc2tpcE9wdGltaXplLmFwcGVuZChicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BS
KSk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CiAgICAgc2tpcE9wdGltaXplLmxpbmsodGhp
cyk7CiB9CiAjZW5kaWYKQEAgLTYyMSw4ICs2MjEsOCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6
OnByaXZhdGVDb21waWxlKEpJCiAgICAgICAgIG1fYnl0ZWNvZGVPZmZzZXQgPSAwOwogCiAgICAg
ICAgIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVC
bG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9w
ZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKLSAgICAgICAgaWYgKHJldHVyblZhbHVlUmVnaXN0ZXIg
IT0gcmVnVDApCi0gICAgICAgICAgICBtb3ZlKHJldHVyblZhbHVlUmVnaXN0ZXIsIHJlZ1QwKTsK
KyAgICAgICAgaWYgKHJldHVyblZhbHVlR1BSICE9IHJlZ1QwKQorICAgICAgICAgICAgbW92ZShy
ZXR1cm5WYWx1ZUdQUiwgcmVnVDApOwogICAgICAgICBicmFuY2hUZXN0MzIoWmVybywgcmVnVDAp
LmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlzKTsKICAgICAgICAgZW1pdE5ha2VkQ2FsbChtX3ZtLT5n
ZXRDVElTdHViKGFyaXR5Rml4dXApLmNvZGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDE1ODg4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRK
dW1wU2xvdyhpbnQgb3AKICAgICBlbWl0TG9hZChvcDEsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1p
dExvYWQob3AyLCByZWdUMywgcmVnVDIpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBy
ZWdUMSwgcmVnVDAsIHJlZ1QzLCByZWdUMik7Ci0gICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNo
VGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKSwgdGFy
Z2V0KTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6
IE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAogLy8gTGVmdFNoaWZ0ICg8
PCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAko
cmV2aXNpb24gMTU4ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDEwICs0NzcsMTAgQEAgdm9pZCBKSVQ6OmVt
aXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAotICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKG9wMSwgZmlyc3RBcmd1bWVudFJlZ2lzdGVyKTsKLSAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihvcDIsIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgZmlyc3RBcmd1bWVudFJlZ2lzdGVyLCBzZWNvbmRBcmd1bWVudFJl
Z2lzdGVyKTsKLSAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/
IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKSwgdGFyZ2V0KTsKKyAgICAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIGFyZ3VtZW50R1BSMCk7CisgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCBhcmd1bWVudEdQUjEpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbiwgYXJndW1lbnRHUFIwLCBhcmd1bWVudEdQUjEpOworICAgICAgICBlbWl0
SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVy
blZhbHVlR1BSKSwgdGFyZ2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTA2LDcg
KzUwNiw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhpbnQgb3AKIAogICAg
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDEpOwogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgcmVnVDAsIHJlZ1QxKTsKLSAgICAgICAgZW1pdEp1bXBTbG93VG9I
b3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZVJlZ2lz
dGVyKSwgdGFyZ2V0KTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKGlu
dmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiAgICAgfSBl
bHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CiAgICAgICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKIApAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgSklUOjplbWl0X2Nv
bXBhcmVBbmRKdW1wU2xvdyhpbnQgb3AKIAogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KG9wMSwgcmVnVDIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVnVDIsIHJl
Z1QxKTsKLSAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFpl
cm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKSwgdGFyZ2V0KTsKKyAgICAgICAgZW1p
dEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1
cm5WYWx1ZUdQUiksIHRhcmdldCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwogCkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1
bXBTbG93KGludCBvcAogCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb24sIHJlZ1QwLCByZWdUMSk7Ci0gICAgICAgIGVtaXRKdW1wU2xv
d1RvSG90KGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgcmV0dXJuVmFsdWVS
ZWdpc3RlciksIHRhcmdldCk7CisgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3Qz
MihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogICAg
IH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cAkocmV2aXNpb24gMTU4ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgIGVtaXRMb2FkKHRoaXNWYWx1ZSwgcmVn
VDEsIHJlZ1QwKTsKICAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QzLCByZWdUMik7CiAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncywgcmVnVDEsIHJlZ1QwLCByZWdUMywg
cmVnVDIsIGZpcnN0RnJlZVJlZ2lzdGVyKTsKLSAgICBtb3ZlKHJldHVyblZhbHVlUmVnaXN0ZXIs
IHJlZ1QzKTsKKyAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMyk7CiAKICAgICBpZiAoY2Fu
T3B0aW1pemUpCiAgICAgICAgIGVuZC5saW5rKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTg4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodGhpc1ZhbHVlLCByZWdUMCk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihhcmd1bWVudHMsIHJlZ1QxKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJh
cmdzLCByZWdUMCwgcmVnVDEsIGZpcnN0RnJlZVJlZ2lzdGVyKTsKLSAgICBtb3ZlKHJldHVyblZh
bHVlUmVnaXN0ZXIsIHJlZ1QxKTsKKyAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7CiAK
ICAgICBpZiAoY2FuT3B0aW1pemUpCiAgICAgICAgIGVuZC5saW5rKHRoaXMpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE1ODg4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDksOSArMTQ5LDkgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6Ogog
ewogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKGZ1bmN0aW9uKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogI2Vsc2UKLSAgICBlbWl0U3RvcmUoZHN0LCBy
ZXR1cm5WYWx1ZTJSZWdpc3RlciwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFN0b3Jl
KGRzdCwgcmV0dXJuVmFsdWVHUFIyLCByZXR1cm5WYWx1ZUdQUik7CiAjZW5kaWYKICAgICByZXR1
cm4gY2FsbDsKIH0KQEAgLTE2MSw5ICsxNjEsOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2soZnVuY3Rpb24pOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUocmVnVDQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZWxzZQotICAgIGVtaXRTdG9yZShkc3QsIHJldHVyblZh
bHVlMlJlZ2lzdGVyLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBlbWl0U3RvcmUoZHN0LCBy
ZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKICNlbmRpZgogICAgIHJldHVybiBjYWxs
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkocmV2aXNpb24gMTU4ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgSklUOjpD
b2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgogICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIoLTEyKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIHB1c2goY2FsbEZyYW1lUmVnaXN0
ZXIpOwogI2Vsc2UKLSAgICBtb3ZlKGNhbGxGcmFtZVJlZ2lzdGVyLCBmaXJzdEFyZ3VtZW50UmVn
aXN0ZXIpOworICAgIG1vdmUoY2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3VtZW50R1BSMCk7CiAjZW5k
aWYKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIob3BlcmF0aW9uVk1IYW5kbGVF
eGNlcHRpb24pLnZhbHVlKCkpLCByZWdUMyk7CiAgICAgY2FsbChyZWdUMyk7CkBAIC0yMTAsNyAr
MjEwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBjdXJyZQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9lbmQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBBU1NFUlQocmV0dXJuVmFsdWVSZWdpc3RlciAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAg
QVNTRVJUKHJldHVyblZhbHVlR1BSICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICBlbWl0TG9h
ZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMSwgcmVnVDApOwogICAgIHJl
c3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIs
IENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwogICAgIHJldCgpOwpAQCAtMjQzLDcgKzI0
Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXdfb2JqZWN0KEluc3RydWMKICAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxl
LT5zdHJ1Y3R1cmUoKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld09iamVjdCwgc3Ry
dWN0dXJlKTsKLSAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7Cisg
ICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlR1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pmYWxzZShJbnN0cnVj
dGlvbgogICAgIH0KIAogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29udmVydEpTVmFsdWVU
b0Jvb2xlYW4sIHJlZ1QxLCByZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVz
dDMyKFplcm8sIHJldHVyblZhbHVlUmVnaXN0ZXIpLCB0YXJnZXQpOyAvLyBJbnZlcnRlZC4KKyAg
ICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0
YXJnZXQpOyAvLyBJbnZlcnRlZC4KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfanRydWUoSW5zdHJ1Y3Rpb24qCiAgICAgfQogCiAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVnVDEsIHJlZ1QwKTsKLSAgICBl
bWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVSZWdpc3Rl
ciksIHRhcmdldCk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8s
IHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251
bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY1MSw3ICs2NTEsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QxLCByZWdUMCwgcmVnVDMsIHJlZ1QyKTsKIAogICAg
IHN0b3JlUmVzdWx0LmxpbmsodGhpcyk7Ci0gICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZh
bHVlUmVnaXN0ZXIpOworICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZXR1cm5WYWx1ZUdQUik7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX25lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtNjkzLDggKzY5Myw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoSW5zdHJ1Y3Rp
b24qIGMKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVFcSwgcmVnVDEsIHJlZ1Qw
LCByZWdUMywgcmVnVDIpOwogCiAgICAgc3RvcmVSZXN1bHQubGluayh0aGlzKTsKLSAgICB4b3Iz
MihUcnVzdGVkSW1tMzIoMHgxKSwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7Ci0gICAgZW1pdFN0b3Jl
Qm9vbChkc3QsIHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIHhvcjMyKFRydXN0ZWRJbW0zMigw
eDEpLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZhbHVl
R1BSKTsKIH0KIAogdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHlwZSB0eXBlKQpAQCAtODI1LDcgKzgy
NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfdGhyb3coSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBBU1NFUlQocmVnVDAgPT0gcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgQVNTRVJUKHJlZ1Qw
ID09IHJldHVyblZhbHVlR1BSKTsKICAgICBlbWl0TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZWdUMSwgcmVnVDApOwogICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvblRocm93LCByZWdUMSwgcmVnVDApOwogICAgIGp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIoKTsKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVz
KEluc3RydWN0aW9uCiAgICAgLy8gdGhpcyBjYWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCiAg
ICAgTGFiZWwgaXNPYmplY3QodGhpcyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQ
TmFtZXMsIHJlZ1QwKTsKLSAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVSZWdpc3Rl
cik7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlR1BSKTsKICAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1f
anNTdHJpbmdzU2l6ZSkpLCByZWdUMyk7CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSW50MzJU
YWcpLCBpbnRUYWdGb3IoaSkpOwogICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBpbnRQYXls
b2FkRm9yKGkpKTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRj
aF9pbW0oSW5zdHJ1Y3Rpb24KIAogICAgIGVtaXRMb2FkKHNjcnV0aW5lZSwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlw
ZSwgcmVnVDEsIHJlZ1QwLCB0YWJsZUluZGV4KTsKLSAgICBqdW1wKHJldHVyblZhbHVlUmVnaXN0
ZXIpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9z
d2l0Y2hfY2hhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTAyMiw3ICsx
MDIyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoSW5zdHJ1Y3RpbwogCiAgICAg
ZW1pdExvYWQoc2NydXRpbmVlLCByZWdUMSwgcmVnVDApOwogICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZSwgcmVnVDEsIHJlZ1QwLCB0YWJsZUlu
ZGV4KTsKLSAgICBqdW1wKHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGp1bXAocmV0dXJuVmFs
dWVHUFIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9zd2l0Y2hfc3RyaW5nKEluc3RydWN0CiAKICAgICBlbWl0TG9hZChzY3J1dGluZWUsIHJl
Z1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRo
VW5rbm93bktleVR5cGUsIHJlZ1QxLCByZWdUMCwgdGFibGVJbmRleCk7Ci0gICAganVtcChyZXR1
cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfdGhyb3dfc3RhdGljX2Vycm9yKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCkBAIC0xMDgzLDcgKzEwODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYWN0
aXZhdGlvbihJbnN0CiAgICAgCiAgICAgSnVtcCBhY3RpdmF0aW9uQ3JlYXRlZCA9IGJyYW5jaDMy
KE5vdEVxdWFsLCB0YWdGb3IoYWN0aXZhdGlvbiksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0
eVZhbHVlVGFnKSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9u
LCAwKTsKLSAgICBlbWl0U3RvcmVDZWxsKGFjdGl2YXRpb24sIHJldHVyblZhbHVlUmVnaXN0ZXIp
OworICAgIGVtaXRTdG9yZUNlbGwoYWN0aXZhdGlvbiwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGFj
dGl2YXRpb25DcmVhdGVkLmxpbmsodGhpcyk7CiB9CiAKQEAgLTEwOTMsOCArMTA5Myw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5zdHIKIAogICAgIEp1bXAgYXJnc0Ny
ZWF0ZWQgPSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGRzdCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVB
cmd1bWVudHMpOwotICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsK
LSAgICBlbWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVn
aXN0ZXIoZHN0KSkub2Zmc2V0KCksIHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGVtaXRTdG9y
ZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFN0b3JlQ2VsbCh1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGRzdCkpLm9mZnNldCgpLCByZXR1cm5W
YWx1ZUdQUik7CiAgICAgYXJnc0NyZWF0ZWQubGluayh0aGlzKTsKIH0KIApAQCAtMTI0Myw4ICsx
MjQzLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YQogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKIAogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJn
dW1lbnRzKTsKLSAgICBlbWl0U3RvcmVDZWxsKGFyZ3VtZW50cywgcmV0dXJuVmFsdWVSZWdpc3Rl
cik7Ci0gICAgZW1pdFN0b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyKGFyZ3VtZW50cykpLm9mZnNldCgpLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAg
ICBlbWl0U3RvcmVDZWxsKGFyZ3VtZW50cywgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRTdG9y
ZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVu
dHMpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVHUFIpOwogICAgIAogICAgIHNraXBBcmd1bWVudHND
cmVhdGlvbi5saW5rKHRoaXMpOwogICAgIGVtaXRMb2FkKGFyZ3VtZW50cywgcmVnVDEsIHJlZ1Qw
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNp
b24gMTU4ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODMsOCArODMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5z
dHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0X29wX2VuZChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHJldHVyblZhbHVlUmVnaXN0
ZXIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAg
UkVMRUFTRV9BU1NFUlQocmV0dXJuVmFsdWVHUFIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cmV0dXJuVmFsdWVHUFIpOwogICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFk
ZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwog
ICAgIHJldCgpOwogfQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9u
ZXdfb2JqZWN0KEluc3RydWMKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKTsKICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld09iamVjdCwgc3RydWN0dXJlKTsKLSAgICBlbWl0U3RvcmVDZWxsKGRz
dCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZh
bHVlR1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yNjgsMTEgKzI2OCwxMSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVudHMoSW5zCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXQo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBBU1NFUlQoY2FsbEZyYW1l
UmVnaXN0ZXIgIT0gcmVnVDEpOwotICAgIEFTU0VSVChyZWdUMSAhPSByZXR1cm5WYWx1ZVJlZ2lz
dGVyKTsKLSAgICBBU1NFUlQocmV0dXJuVmFsdWVSZWdpc3RlciAhPSBjYWxsRnJhbWVSZWdpc3Rl
cik7CisgICAgQVNTRVJUKHJlZ1QxICE9IHJldHVyblZhbHVlR1BSKTsKKyAgICBBU1NFUlQocmV0
dXJuVmFsdWVHUFIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBy
ZXN1bHQgaW4gJWVheC4KLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVH
UFIpOwogCiAgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFkZHJlc3MuCiAgICAgZW1pdEdldFJldHVy
blBDRnJvbUNhbGxGcmFtZUhlYWRlclB0cihyZWdUMSk7CkBAIC0yODgsMTMgKzI4OCwxMyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qIGN1cnJlCiB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBBU1NFUlQoY2FsbEZyYW1lUmVnaXN0ZXIgIT0gcmVnVDEpOwotICAgIEFTU0VSVChyZWdU
MSAhPSByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBBU1NFUlQocmV0dXJuVmFsdWVSZWdpc3Rl
ciAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgQVNTRVJUKHJlZ1QxICE9IHJldHVyblZhbHVl
R1BSKTsKKyAgICBBU1NFUlQocmV0dXJuVmFsdWVHUFIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwog
CiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KLSAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlUmVnaXN0
ZXIpOwotICAgIEp1bXAgbm90SlNDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZXR1cm5WYWx1
ZVJlZ2lzdGVyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmV0dXJuVmFsdWVSZWdpc3RlciwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlR1BSKTsKKyAg
ICBKdW1wIG5vdEpTQ2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmV0dXJuVmFsdWVHUFIpOwor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZXR1cm5WYWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmplY3Qo
cmVnVDIpOwogCiAgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFkZHJlc3MuCkBAIC0zMTAsNyArMzEw
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKElucwogICAgIC8vIFJl
dHVybiAndGhpcycgaW4gJWVheC4KICAgICBub3RKU0NlbGwubGluayh0aGlzKTsKICAgICBub3RP
YmplY3QubGluayh0aGlzKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmV0dXJuVmFs
dWVHUFIpOwogCiAgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFkZHJlc3MuCiAgICAgZW1pdEdldFJl
dHVyblBDRnJvbUNhbGxGcmFtZUhlYWRlclB0cihyZWdUMSk7CkBAIC00ODMsNyArNDgzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfYml0b3IoSW5zdHJ1Y3Rpb24qIGN1cgogCiB2b2lkIEpJVDo6ZW1p
dF9vcF90aHJvdyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEFTU0VS
VChyZWdUMCA9PSByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBBU1NFUlQocmVnVDAgPT0gcmV0
dXJuVmFsdWVHUFIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvblRocm93LCByZWdUMCk7CiAgICAganVtcFRvRXhjZXB0aW9uSGFuZGxlcigp
OwpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1
Y3Rpb24KICAgICAvLyB0aGlzIGNhbGwgZG9lc24ndCBzZWVtIHRvIGJlIGhvdC4KICAgICBMYWJl
bCBpc09iamVjdCh0aGlzKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFBOYW1lcywg
cmVnVDApOwotICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAg
ICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGxvYWQzMihBZGRyZXNz
KHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9qc1N0cmlu
Z3NTaXplKSksIHJlZ1QzKTsKICAgICBzdG9yZTY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgYWRk
cmVzc0ZvcihpKSk7CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSW50MzJUYWcpLCBpbnRUYWdG
b3Ioc2l6ZSkpOwpAQCAtNjgyLDcgKzY4Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9p
bW0oSW5zdHJ1Y3Rpb24KIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NydXRpbmVlLCBy
ZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hJbW1XaXRoVW5rbm93bktl
eVR5cGUsIHJlZ1QwLCB0YWJsZUluZGV4KTsKLSAgICBqdW1wKHJldHVyblZhbHVlUmVnaXN0ZXIp
OworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0
Y2hfY2hhcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjk4LDcgKzY5OCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9jaGFyKEluc3RydWN0aW8KIAogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoc2NydXRpbmVlLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCByZWdUMCwgdGFibGVJbmRleCk7
Ci0gICAganVtcChyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BS
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3
aXRjaF9zdHJpbmcoSW5zdHJ1Y3QKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NydXRp
bmVlLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmdXaXRo
VW5rbm93bktleVR5cGUsIHJlZ1QwLCB0YWJsZUluZGV4KTsKLSAgICBqdW1wKHJldHVyblZhbHVl
UmVnaXN0ZXIpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF90aHJvd19zdGF0aWNfZXJyb3IoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYWN0aXZhdGlvbihJ
bnN0CiAgICAgCiAgICAgSnVtcCBhY3RpdmF0aW9uQ3JlYXRlZCA9IGJyYW5jaFRlc3Q2NChOb25a
ZXJvLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7
CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uLCAwKTsKLSAgICBl
bWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFN0b3JlQ2Vs
bChkc3QsIHJldHVyblZhbHVlR1BSKTsKICAgICBhY3RpdmF0aW9uQ3JlYXRlZC5saW5rKHRoaXMp
OwogfQogCkBAIC04MzIsOCArODMyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FyZ3Vt
ZW50cyhJbnN0cgogICAgIEp1bXAgYXJnc0NyZWF0ZWQgPSBicmFuY2hUZXN0NjQoTm9uWmVybywg
QWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogCiAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMpOwotICAgIGVtaXRTdG9y
ZUNlbGwoZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBlbWl0U3RvcmVDZWxsKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoZHN0KSksIHJldHVyblZhbHVl
UmVnaXN0ZXIpOworICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisgICAg
ZW1pdFN0b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVy
KGRzdCkpLCByZXR1cm5WYWx1ZUdQUik7CiAKICAgICBhcmdzQ3JlYXRlZC5saW5rKHRoaXMpOwog
fQpAQCAtOTU1LDE0ICs5NTUsMTQgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pmYWxzZShJbnN0
cnVjdGlvbgogewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93
VG9Ib3QoYnJhbmNoVGVzdDMyKFplcm8sIHJldHVyblZhbHVlUmVnaXN0ZXIpLCBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsgLy8gaW52ZXJ0ZWQhCisgICAgZW1pdEp1bXBTbG93VG9I
b3QoYnJhbmNoVGVzdDMyKFplcm8sIHJldHVyblZhbHVlR1BSKSwgY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7IC8vIGludmVydGVkIQogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
anRydWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbiwgcmVnVDApOwotICAg
IGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZVJlZ2lz
dGVyKSwgY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgZW1pdEp1bXBTbG93
VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXR4b3Io
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKQEAgLTk4NSw4ICs5ODUsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZXEoSW5zdHJ1Y3Rpb24qIGN1CiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwgcmVnVDEpOwotICAgIGVtaXRUYWdB
c0Jvb2xJbW1lZGlhdGUocmV0dXJuVmFsdWVSZWdpc3Rlcik7Ci0gICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZVJlZ2lz
dGVyKTsKKyAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJldHVyblZhbHVlR1BSKTsKKyAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJl
dHVyblZhbHVlR1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQpAQCAtOTk0LDggKzk5NCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoSW5zdHJ1
Y3Rpb24qIGMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7CiAgICAgeG9yMzIoVHJ1c3RlZEltbTMyKDB4
MSksIHJlZ1QwKTsKLSAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJldHVyblZhbHVlUmVnaXN0
ZXIpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0
ZShyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9zdHJpY3RlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtMTEwNiw4ICsxMTA2LDggQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YQogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25DcmVhdGVBcmd1bWVudHMpOwotICAgIGVtaXRTdG9yZUNlbGwoYXJndW1lbnRzLCByZXR1
cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBlbWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSksIHJldHVyblZhbHVlUmVnaXN0ZXIp
OworICAgIGVtaXRTdG9yZUNlbGwoYXJndW1lbnRzLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1p
dFN0b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGFy
Z3VtZW50cykpLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgCiAgICAgc2tpcEFyZ3VtZW50c0NyZWF0
aW9uLmxpbmsodGhpcyk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMsIHJl
Z1QwKTsKQEAgLTExNTAsOCArMTE1MCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9sb29wX2hp
bnQoSW5zdHJ1Y3QKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICAKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PcHRpbWl6ZSwgbV9ieXRlY29kZU9mZnNldCk7Ci0g
ICAgICAgIEp1bXAgbm9PcHRpbWl6ZWRFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJu
VmFsdWVSZWdpc3Rlcik7Ci0gICAgICAgIGp1bXAocmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAg
ICAgIEp1bXAgbm9PcHRpbWl6ZWRFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFs
dWVHUFIpOworICAgICAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKICAgICAgICAgbm9PcHRpbWl6
ZWRFbnRyeS5saW5rKHRoaXMpOwogCiAgICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGp1bXAoKSwg
T1BDT0RFX0xFTkdUSChvcF9sb29wX2hpbnQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDE1ODg4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsOCBAQAogCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkND
YWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgi
CiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJKSVRTdHVicy5oIgpAQCAtNDAsMTc3ICs0MiwxMiBAQAogI2lmIEVOQUJMRShKSVQpCiAK
IG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIEpTSW50ZXJmYWNlSklUIDogcHVibGljIENDYWxs
SGVscGVycyB7CisgICAgY2xhc3MgSlNJbnRlcmZhY2VKSVQgOiBwdWJsaWMgQ0NhbGxIZWxwZXJz
LCBwdWJsaWMgR1BSSW5mbywgcHVibGljIEZQUkluZm8gewogICAgIHB1YmxpYzoKICAgICAgICAg
SlNJbnRlcmZhY2VKSVQoVk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDApCiAgICAgICAg
ICAgICA6IENDYWxsSGVscGVycyh2bSwgY29kZUJsb2NrKQogICAgICAgICB7CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIC8vIE5PVEVTOgotICAgICAgICAvLwotICAgICAgICAvLyByZWdU
MCBoYXMgdHdvIHNwZWNpYWwgbWVhbmluZ3MuICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gYSBzdHVi
Ci0gICAgICAgIC8vIGNhbGwgd2lsbCBhbHdheXMgYmUgaW4gcmVnVDAsIGFuZCBieSBkZWZhdWx0
ICh1bmxlc3MKLSAgICAgICAgLy8gYSByZWdpc3RlciBpcyBzcGVjaWZpZWQpIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoKSB3aWxsIHN0b3JlCi0gICAgICAgIC8vIHRoZSB2YWx1ZSBmcm9tIHJlZ1Qw
LgotICAgICAgICAvLwotICAgICAgICAvLyByZWdUMyBpcyByZXF1aXJlZCB0byBiZSBjYWxsZWUt
cHJlc2VydmVkLgotICAgICAgICAvLwotICAgICAgICAvLyB0ZW1wUmVnaXN0ZXIyIGlzIGhhcyBu
byBzdWNoIGRlcGVuZGVuY2llcy4gIEl0IGlzIGltcG9ydGFudCB0aGF0Ci0gICAgICAgIC8vIG9u
IHg4Ni94ODYtNjQgaXQgaXMgZWN4IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBzaW5jZSB0aGUK
LSAgICAgICAgLy8gTWFjcm9Bc3NlbWJsZXIgd2lsbCBuZWVkIHRvIHBsYW50IHJlZ2lzdGVyIHN3
YXBzIGlmIGl0IGlzIG5vdCAtCi0gICAgICAgIC8vIGhvd2V2ZXIgdGhlIGNvZGUgd2lsbCBzdGls
bCBmdW5jdGlvbiBjb3JyZWN0bHkuCi0jaWYgQ1BVKFg4Nl82NCkKLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4Owot
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZTJSZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6ZWR4OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRS
ZXN1bHRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OwotI2lmICFPUyhXSU5ET1dTKQotICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZS
ZWdpc3RlcnM6OmVkaTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJn
dW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZXNpOwotI2Vsc2UKLSAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
Y3g7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OmVkeDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
dGhpcmRBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyODsKLSNlbmRpZgotCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0
ZXJzOjplYnA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCB0YWdNYXNrUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNTsKLQotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwotICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4Owot
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUNCA9IFg4NlJlZ2lzdGVyczo6cjEw
OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IFg4NlJlZ2lz
dGVyczo6eG1tMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0g
WDg2UmVnaXN0ZXJzOjp4bW0xOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZw
UmVnVDIgPSBYODZSZWdpc3RlcnM6OnhtbTI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lz
dGVySUQgZnBSZWdUMyA9IFg4NlJlZ2lzdGVyczo6eG1tMzsKLQotICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBub25BcmdHUFIxID0gWDg2UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCi0j
ZWxpZiBDUFUoWDg2KQotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1
ZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIHJldHVyblZhbHVlMlJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZHg7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0
ZXJzOjplYXg7Ci0gICAgICAgIC8vIE9uIHg4NiB3ZSBhbHdheXMgdXNlIGZhc3RjYWxsIGNvbnZl
bnRpb25zID0gYnV0IG9uCi0gICAgICAgIC8vIE9TIFggaWYgbWlnaHQgbWFrZSBtb3JlIHNlbnNl
IHRvIGp1c3QgdXNlIHJlZ3Bhcm0uCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZp
cnN0QXJndW1lbnRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWN4OwotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpl
ZHg7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVS
ZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDIgPSBYODZSZWdpc3RlcnM6OmVjeDsKLSAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDMgPSBYODZSZWdpc3RlcnM6OmVieDsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDQgPSBYODZSZWdpc3RlcnM6OmVzaTsKLSAg
ICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IFg4NlJl
Z2lzdGVyczo6eG1tMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Qx
ID0gWDg2UmVnaXN0ZXJzOjp4bW0xOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklE
IGZwUmVnVDIgPSBYODZSZWdpc3RlcnM6OnhtbTI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJl
Z2lzdGVySUQgZnBSZWdUMyA9IFg4NlJlZ2lzdGVyczo6eG1tMzsKLSNlbGlmIENQVShBUk0pCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBBUk1S
ZWdpc3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1
ZTJSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKLSAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gQVJNUmVnaXN0
ZXJzOjpyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRS
ZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjE7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDAgPSBBUk1SZWdpc3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCByZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmVnVDMgPSBBUk1SZWdpc3RlcnM6OnI0OwotICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCByZWdUNCA9IEFSTVJlZ2lzdGVyczo6cjc7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHJlZ1Q1ID0gQVJNUmVnaXN0ZXJzOjpyODsKLQotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6ZnA7
Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gQVJNUmVnaXN0
ZXJzOjpkMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gQVJN
UmVnaXN0ZXJzOjpkMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Qy
ID0gQVJNUmVnaXN0ZXJzOjpkMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBm
cFJlZ1QzID0gQVJNUmVnaXN0ZXJzOjpkMzsKLSNlbGlmIENQVShBUk02NCkKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJz
Ojp4MDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0
ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklE
IGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRSZWdpc3RlciA9IEFSTTY0UmVnaXN0
ZXJzOjp4MTsKLQotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgYnVja2V0Q291bnRlclJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6Ong3
OwotI2VuZGlmCi0KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBBUk02
NFJlZ2lzdGVyczo6eDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0g
QVJNNjRSZWdpc3RlcnM6OngxOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdU
MiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmVnVDMgPSBBUk02NFJlZ2lzdGVyczo6eDIzOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCByZWdUNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7Ci0gICAgICAgIAotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpm
cDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0ZXIg
PSBBUk02NFJlZ2lzdGVyczo6eDI2OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI3OwotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCB0YWdNYXNrUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI4
OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0g
QVJNNjRSZWdpc3RlcnM6OnEwOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZw
UmVnVDEgPSBBUk02NFJlZ2lzdGVyczo6cTE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lz
dGVySUQgZnBSZWdUMiA9IEFSTTY0UmVnaXN0ZXJzOjpxMjsKLSAgICAgICAgc3RhdGljIGNvbnN0
IEZQUmVnaXN0ZXJJRCBmcFJlZ1QzID0gQVJNNjRSZWdpc3RlcnM6OnEzOwotCi0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIG5vbkFyZ0dQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7Ci0j
ZWxpZiBDUFUoTUlQUykKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFs
dWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCByZXR1cm5WYWx1ZTJSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYxOwotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IE1JUFNSZWdp
c3RlcnM6OnYwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50
UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgc2Vjb25kQXJndW1lbnRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmExOwotICAgICAg
ICAKLSAgICAgICAgLy8gcmVnVDAgbXVzdCBiZSB2MCBmb3IgcmV0dXJuaW5nIGEgMzItYml0IHZh
bHVlLgotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IE1JUFNSZWdpc3Rl
cnM6OnYwOwotICAgICAgICAKLSAgICAgICAgLy8gcmVnVDEgbXVzdCBiZSB2MSBmb3IgcmV0dXJu
aW5nIGEgcGFpciBvZiAzMi1iaXQgdmFsdWUuCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6djE7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IE1JUFNSZWdpc3RlcnM6OnQ0OwotICAgICAgICAKLSAg
ICAgICAgLy8gcmVnVDMgbXVzdCBiZSBzYXZlZCBpbiB0aGUgY2FsbGVlLCBzbyB1c2UgYW4gUyBy
ZWdpc3Rlci4KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDMgPSBNSVBTUmVn
aXN0ZXJzOjpzMjsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJl
Z1Q0ID0gTUlQU1JlZ2lzdGVyczo6dDU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklE
IHJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6dDY7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpmcDsKLSAgICAgICAgCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IE1JUFNSZWdpc3RlcnM6
OmY0OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBNSVBTUmVn
aXN0ZXJzOjpmNjsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QyID0g
TUlQU1JlZ2lzdGVyczo6Zjg7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBS
ZWdUMyA9IE1JUFNSZWdpc3RlcnM6OmYxMDsKLSNlbGlmIENQVShTSDQpCi0gICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpmcDsK
LQotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IFNINFJlZ2lzdGVyczo6
cjA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gU0g0UmVnaXN0ZXJz
OjpyMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDIgPSBTSDRSZWdpc3Rl
cnM6OnIyOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IFNINFJlZ2lz
dGVyczo6cjEwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUNCA9IFNINFJl
Z2lzdGVyczo6cjQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1Q1ID0gU0g0
UmVnaXN0ZXJzOjpyNTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDYgPSBT
SDRSZWdpc3RlcnM6OnI2OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUNyA9
IFNINFJlZ2lzdGVyczo6cjc7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0
QXJndW1lbnRSZWdpc3RlciA9IHJlZ1Q0OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gcmVnVDU7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6cjA7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlMlJlZ2lzdGVyID0gU0g0UmVn
aXN0ZXJzOjpyMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0
UmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnIwOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJl
Z2lzdGVySUQgZnBSZWdUMCA9IFNINFJlZ2lzdGVyczo6ZHIwOwotICAgICAgICBzdGF0aWMgY29u
c3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBTSDRSZWdpc3RlcnM6OmRyMjsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QyID0gU0g0UmVnaXN0ZXJzOjpkcjQ7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMyA9IFNINFJlZ2lzdGVyczo6ZHI2
OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDQgPSBTSDRSZWdpc3Rl
cnM6OmRyODsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Q1ID0gU0g0
UmVnaXN0ZXJzOjpkcjEwOwotI2Vsc2UKLSNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhp
cyBwbGF0Zm9ybS4iCi0jZW5kaWYKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIC8v
IENhbid0IGp1c3QgcHJvcG9nYXRlIEpTVmFsdWU6OkludDMyVGFnIGFzIHZpc3VhbCBzdHVkaW8g
ZG9lc24ndCBsaWtlIGl0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRo
Q2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhD
YWxsLmgJKHJldmlzaW9uIDE1ODg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xv
d1BhdGhDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEyICs1NSwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIG1faml0LT5wdXNoKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogI2VsaWYgQ1BVKFg4
Nl82NCkgJiYgT1MoV0lORE9XUykKICAgICAgICAgbV9qaXQtPmFkZFB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKC0xNiksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7Ci0gICAgICAgIG1faml0LT5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdp
c3RlciwgSklUOjpmaXJzdEFyZ3VtZW50UmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC0+bW92ZShK
SVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OnNlY29uZEFyZ3VtZW50UmVnaXN0ZXIpOwotICAg
ICAgICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6dGhpcmRBcmd1
bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQtPm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIG1faml0LT5tb3Zl
KEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgbV9q
aXQtPm1vdmUoSklUOjpUcnVzdGVkSW1tUHRyKG1fcGMpLCBKSVQ6OmFyZ3VtZW50R1BSMik7CiAj
ZWxzZQotICAgICAgICBtX2ppdC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmZp
cnN0QXJndW1lbnRSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZElt
bVB0cihtX3BjKSwgSklUOjpzZWNvbmRBcmd1bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQt
Pm1vdmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjApOworICAgICAg
ICBtX2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIx
KTsKICNlbmRpZgogICAgICAgICBKSVQ6OkNhbGwgY2FsbCA9IG1faml0LT5jYWxsKCk7CiAgICAg
ICAgIG1faml0LT5tX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGNhbGwsIG1faml0LT5tX2J5dGVj
b2RlT2Zmc2V0LCBtX3N0dWIudmFsdWUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU4ODg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MTcsNyArNzE3LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JH
ZQogICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigtMTIpLCBKU0lu
dGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGppdC5wdXNoKEpTSW50ZXJm
YWNlSklUOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAjZWxzZQotICAgIGppdC5tb3ZlKEpTSW50ZXJm
YWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OmZpcnN0QXJndW1lbnRS
ZWdpc3Rlcik7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVy
LCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwKTsKICNlbmRpZgogICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKEZ1bmN0aW9uUHRyKG9wZXJhdGlvblZNSGFuZGxl
RXhjZXB0aW9uKS52YWx1ZSgpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKICAgICBqaXQuY2Fs
bChKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216353</attachid>
            <date>2013-11-07 18:30:23 -0800</date>
            <delta_ts>2013-11-07 19:22:55 -0800</delta_ts>
            <desc>patch 2.</desc>
            <filename>bug-123806.patch</filename>
            <type>text/plain</type>
            <size>41980</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4ODkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDEzLTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBH
ZXQgcmlkIG9mIHRoZSByZWdUKiBkZWZpbml0aW9ucyBpbiBKU0ludGVyZmFjZUpJVC5oLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzODA2LgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTSW50ZXJmYWNl
SklUIG5vdyBpbmhlcml0cyBmcm9tIEdQUkluZm8gYW5kIEZQUkluZm8sIGFuZCByZWxpZXMgb24g
dGhlbQorICAgICAgICB0byBwcm92aWRlIGFsbCB0aGUgcmVnaXN0ZXIgZGVmaW5pdGlvbnMuCisK
KyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpHUFJJbmZvOjp0b0FyZ3Vt
ZW50UmVnaXN0ZXIpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZSk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KToKKyAgICAgICAgKiBqaXQvSklUQXJpdGht
ZXRpYzMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xv
dyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0KToKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0SlNWYWx1ZVJlc3VsdFdpdGhQcm9maWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbmQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmV0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90aHJvdyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9p
bW0pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX3N0cmluZyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jcmVhdGVfYWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVh
dGVfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZmFsc2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ1RJ
TmF0aXZlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbmQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfanRydWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGhyb3cpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRj
aF9jaGFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY3JlYXRlX2FjdGl2YXRpb24pOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNl
SklULmg6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjpKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogaml0L1Nsb3dQYXRoQ2FsbC5oOgorICAgICAgICAoSlNDOjpKSVRTbG93UGF0aENh
bGw6OmNhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorCiAyMDEzLTEx
LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRlRMIHNob3Vs
ZCBzdXBwb3J0IE5ld0FycmF5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAko
cmV2aXNpb24gMTU4ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3OCw2ICsyNzgsMjAgQEAgcHJpdmF0ZToKIH07CiAjZW5kaWYK
IAorLy8gTk9URVM6IEJhc2VsaW5lIEpJVCByZXF1aXJlbWVudHMgZm9yIHRoZSBHUFJJbmZvLgor
Ly8KKy8vIHJlZ1QwIGhhcyB0d28gc3BlY2lhbCBtZWFuaW5ncy4gVGhlIHJldHVybiB2YWx1ZSBm
cm9tIGEgc3R1YgorLy8gY2FsbCB3aWxsIGFsd2F5cyBiZSBpbiByZWdUMCwgYW5kIGJ5IGRlZmF1
bHQgKHVubGVzcworLy8gYSByZWdpc3RlciBpcyBzcGVjaWZpZWQpIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoKSB3aWxsIHN0b3JlCisvLyB0aGUgdmFsdWUgZnJvbSByZWdUMC4KKy8vCisvLyByZWdU
MyBpcyByZXF1aXJlZCB0byBiZSBjYWxsZWUtcHJlc2VydmVkLgorLy8KKy8vIHRlbXBSZWdpc3Rl
cjIgaXMgaGFzIG5vIHN1Y2ggZGVwZW5kZW5jaWVzLiBJdCBpcyBpbXBvcnRhbnQgdGhhdAorLy8g
b24geDg2L3g4Ni02NCBpdCBpcyBlY3ggZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHNpbmNlIHRo
ZQorLy8gTWFjcm9Bc3NlbWJsZXIgd2lsbCBuZWVkIHRvIHBsYW50IHJlZ2lzdGVyIHN3YXBzIGlm
IGl0IGlzIG5vdCAtCisvLyBob3dldmVyIHRoZSBjb2RlIHdpbGwgc3RpbGwgZnVuY3Rpb24gY29y
cmVjdGx5LgorCiAjaWYgQ1BVKFg4NikKICNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyAwdQogCkBAIC0yODcsNiArMzAxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJT
OwogCisgICAgLy8gTm90ZTogcmVnVDMgaXMgcmVxdWlyZWQgdG8gYmUgY2FsbGVlLXByZXNlcnZl
ZC4KKwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDEgPSBYODZSZWdpc3RlcnM6OmVkeDsKQEAgLTM0Myw3ICszNTksMTEgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgQ1BVKFg4Nl82NCkKKyNpZiAhT1MoV0lORE9XUykKICNkZWZpbmUgTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA2dQorI2Vsc2UKKyNkZWZpbmUgTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA0dQorI2VuZGlmCiAKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgpAQCAt
MzUxLDYgKzM3MSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMgPSAxMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CiAKKyAgICAvLyBO
b3RlOiByZWdUMyBpcyByZXF1aXJlZCB0byBiZSBjYWxsZWUtcHJlc2VydmVkLgorCiAgICAgLy8g
VGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCiAgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OwogICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsK
QEAgLTM2OCwxMiArMzkwLDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
Z1Q4ID0gWDg2UmVnaXN0ZXJzOjpyMTA7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUOSA9
IFg4NlJlZ2lzdGVyczo6cjEzOwogICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBu
YW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdp
c3RlcnMuCisjaWYgIU9TKFdJTkRPV1MpCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVu
dEdQUjAgPSBYODZSZWdpc3RlcnM6OmVkaTsgLy8gcmVnVDQKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZXNpOyAvLyByZWdUNQogICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gWDg2UmVnaXN0ZXJzOjplZHg7IC8vIHJlZ1Qx
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OmVj
eDsgLy8gcmVnVDIKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSNCA9IFg4NlJl
Z2lzdGVyczo6cjg7ICAvLyByZWdUNgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRH
UFI1ID0gWDg2UmVnaXN0ZXJzOjpyOTsgIC8vIHJlZ1Q3CisjZWxzZQorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYXJndW1lbnRHUFIwID0gWDg2UmVnaXN0ZXJzOjplY3g7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6OmVkeDsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IFg4NlJlZ2lzdGVyczo6cjg7IC8vIHJlZ1Q2Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBYODZSZWdpc3RlcnM6OnI5OyAv
LyByZWdUNworI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gWDg2
UmVnaXN0ZXJzOjplYXg7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdH
UFIxID0gWDg2UmVnaXN0ZXJzOjplYng7IC8vIHJlZ1QzCiAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBub25BcmdHUFIyID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q4CkBAIC0zOTEsNyArNDIw
LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR1BSUmVnIHRvQXJndW1lbnRSZWdpc3Rlcih1bnNp
Z25lZCBpbmRleCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnMpOworI2lmICFPUyhXSU5ET1dTKQogICAgICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyc10gPSB7IGFyZ3Vt
ZW50R1BSMCwgYXJndW1lbnRHUFIxLCBhcmd1bWVudEdQUjIsIGFyZ3VtZW50R1BSMywgYXJndW1l
bnRHUFI0LCBhcmd1bWVudEdQUjUgfTsKKyNlbHNlCisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzXSA9IHsgYXJndW1l
bnRHUFIwLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMiwgYXJndW1lbnRHUFIzIH07CisjZW5k
aWYKICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwogICAgIH0KICAgICAK
QEAgLTQzMyw2ICs0NjYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51
bWJlck9mUmVnaXN0ZXJzID0gMTA7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOwogCisgICAg
Ly8gTm90ZTogcmVnVDMgaXMgcmVxdWlyZWQgdG8gYmUgY2FsbGVlLXByZXNlcnZlZC4KKwogICAg
IC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9
IEFSTVJlZ2lzdGVyczo6cjA7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IEFSTVJl
Z2lzdGVyczo6cjE7CkBAIC00NjAsNiArNDk1LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IEFSTVJlZ2lzdGVyczo6cjE7IC8vIHJlZ1QxCiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk1SZWdp
c3RlcnM6OnIyOwogCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYnVja2V0Q291bnRlclJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNzsKKyNlbmRp
ZgorCiAgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwpAQCAtNTA0LDYgKzU0
Myw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTY7CiAKKyAgICAvLyBOb3Rl
OiByZWdUMyBpcyByZXF1aXJlZCB0byBiZSBjYWxsZWUtcHJlc2VydmVkLgorCiAgICAgLy8gVGhl
c2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsKICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHRpbWVvdXRDaGVja1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6Ongy
NjsKQEAgLTUxNCw4ICs1NTUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMCA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsKICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qx
ID0gQVJNNjRSZWdpc3RlcnM6OngxOwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBB
Uk02NFJlZ2lzdGVyczo6eDI7Ci0gICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IEFSTTY0
UmVnaXN0ZXJzOjp4MzsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gQVJNNjRSZWdp
c3RlcnM6Ong0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBBUk02NFJlZ2lzdGVy
czo6eDIzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBBUk02NFJlZ2lzdGVyczo6
eDI0OwogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBBUk02NFJlZ2lzdGVyczo6eDU7
CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNiA9IEFSTTY0UmVnaXN0ZXJzOjp4NjsKICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q3ID0gQVJNNjRSZWdpc3RlcnM6Ong3OwpAQCAtNTQz
LDYgKzU4NCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1
ZUdQUjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7IC8vIHJlZ1QxCiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBBUk02NFJlZ2lzdGVyczo6eDI7CiAKKyNp
ZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBidWNrZXRD
b3VudGVyUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDc7CisjZW5kaWYKKwogICAgIC8vIEdQ
UlJlZyBtYXBwaW5nIGlzIGRpcmVjdCwgdGhlIG1hY2hpbmUgcmVnc2l0ZXIgbnVtYmVycyBjYW4K
ICAgICAvLyBiZSB1c2VkIGRpcmVjdGx5IGFzIGluZGljZXMgaW50byB0aGUgR1BSIFJlZ2lzdGVy
QmFuay4KICAgICBDT01QSUxFX0FTU0VSVChBUk02NFJlZ2lzdGVyczo6cTAgPT0gMCwgcTBfaXNf
MCk7CkBAIC01OTgsNiArNjQzLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA3OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKIAor
ICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2YWx1ZS4KKyAg
ICAvLyByZWdUMSBtdXN0IGJlIHYxIGZvciByZXR1cm5pbmcgYSBwYWlyIG9mIDMyLWJpdCB2YWx1
ZS4KKyAgICAvLyByZWdUMyBtdXN0IGJlIHNhdmVkIGluIHRoZSBjYWxsZWUsIHNvIHVzZSBhbiBT
IHJlZ2lzdGVyLgorCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOwpAQCAtNjcwLDYgKzcxOSw4IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTA7CiAKKyAgICAvLyBOb3RlOiByZWdUMyBpcyBy
ZXF1aXJlZCB0byBiZSBjYWxsZWUtcHJlc2VydmVkLgorCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gU0g0UmVnaXN0ZXJzOjpyMDsK
ICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpyMTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1ODg4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDggKzEwOSw4
IEBAIHZvaWQgSklUOjplbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVjaygpCiAgICAgc2tpcE9wdGlt
aXplLmFwcGVuZChicmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihPcHRpb25zOjpleGVj
dXRpb25Db3VudGVySW5jcmVtZW50Rm9yRW50cnkoKSksIEFic29sdXRlQWRkcmVzcyhtX2NvZGVC
bG9jay0+YWRkcmVzc09mSklURXhlY3V0ZUNvdW50ZXIoKSkpKTsKICAgICBBU1NFUlQoIW1fYnl0
ZWNvZGVPZmZzZXQpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT3B0aW1pemUsIG1fYnl0
ZWNvZGVPZmZzZXQpOwotICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQoYnJhbmNoVGVzdFB0cihaZXJv
LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKSk7Ci0gICAganVtcChyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsK
KyAgICBza2lwT3B0aW1pemUuYXBwZW5kKGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVH
UFIpKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKICAgICBza2lwT3B0aW1pemUubGluayh0
aGlzKTsKIH0KICNlbmRpZgpAQCAtNjIxLDggKzYyMSw4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7CiAKICAg
ICAgICAgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29k
ZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDog
b3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spOwotICAgICAgICBpZiAocmV0dXJuVmFsdWVSZWdpc3Rl
ciAhPSByZWdUMCkKLSAgICAgICAgICAgIG1vdmUocmV0dXJuVmFsdWVSZWdpc3RlciwgcmVnVDAp
OworICAgICAgICBpZiAocmV0dXJuVmFsdWVHUFIgIT0gcmVnVDApCisgICAgICAgICAgICBtb3Zl
KHJldHVyblZhbHVlR1BSLCByZWdUMCk7CiAgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCByZWdU
MCkubGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOwogICAgICAgICBlbWl0TmFrZWRDYWxsKG1fdm0t
PmdldENUSVN0dWIoYXJpdHlGaXh1cCkuY29kZSgpKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkocmV2aXNpb24gMTU4ODg5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KGludCBvcAogICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKICAgICBl
bWl0TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24s
IHJlZ1QxLCByZWdUMCwgcmVnVDMsIHJlZ1QyKTsKLSAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFu
Y2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVyblZhbHVlUmVnaXN0ZXIpLCB0
YXJnZXQpOworICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJv
IDogTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCiAvLyBMZWZ0U2hpZnQg
KDw8KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
CShyZXZpc2lvbiAxNTg4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRo
bWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsMTAgKzQ3NywxMCBAQCB2b2lkIEpJVDo6
ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCi0gICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIob3AxLCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIpOwotICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKG9wMiwgc2Vjb25kQXJndW1lbnRSZWdpc3Rlcik7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uLCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIsIHNlY29uZEFyZ3VtZW50
UmVnaXN0ZXIpOwotICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0
ID8gWmVybyA6IE5vblplcm8sIHJldHVyblZhbHVlUmVnaXN0ZXIpLCB0YXJnZXQpOworICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgYXJndW1lbnRHUFIwKTsKKyAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uLCBhcmd1bWVudEdQUjAsIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIGVt
aXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihpbnZlcnQgPyBaZXJvIDogTm9uWmVybywgcmV0
dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MDYs
NyArNTA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogCiAg
ICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMSk7CiAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uLCByZWdUMCwgcmVnVDEpOwotICAgICAgICBlbWl0SnVtcFNsb3dU
b0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVyblZhbHVlUmVn
aXN0ZXIpLCB0YXJnZXQpOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIo
aW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKICAgICB9
IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKICAgICAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIob3AxLCByZWdUMik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZWdUMiwg
cmVnVDEpOwotICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8g
WmVybyA6IE5vblplcm8sIHJldHVyblZhbHVlUmVnaXN0ZXIpLCB0YXJnZXQpOworICAgICAgICBl
bWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5vblplcm8sIHJl
dHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKICAgICB9IGVsc2UgewogICAgICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5k
SnVtcFNsb3coaW50IG9wCiAKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVnVDAsIHJlZ1QxKTsKLSAgICAgICAgZW1pdEp1bXBT
bG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1
ZVJlZ2lzdGVyKSwgdGFyZ2V0KTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVz
dDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7CiAg
ICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNTg4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEpJVDo6
Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uCiAgICAgZW1pdExvYWQodGhpc1ZhbHVlLCBy
ZWdUMSwgcmVnVDApOwogICAgIGVtaXRMb2FkKGFyZ3VtZW50cywgcmVnVDMsIHJlZ1QyKTsKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCByZWdUMSwgcmVnVDAsIHJlZ1Qz
LCByZWdUMiwgZmlyc3RGcmVlUmVnaXN0ZXIpOwotICAgIG1vdmUocmV0dXJuVmFsdWVSZWdpc3Rl
ciwgcmVnVDMpOworICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QzKTsKIAogICAgIGlmIChj
YW5PcHRpbWl6ZSkKICAgICAgICAgZW5kLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE1ODg4OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIEpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcih0aGlzVmFsdWUsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGFyZ3VtZW50cywgcmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZh
cmFyZ3MsIHJlZ1QwLCByZWdUMSwgZmlyc3RGcmVlUmVnaXN0ZXIpOwotICAgIG1vdmUocmV0dXJu
VmFsdWVSZWdpc3RlciwgcmVnVDEpOworICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QxKTsK
IAogICAgIGlmIChjYW5PcHRpbWl6ZSkKICAgICAgICAgZW5kLmxpbmsodGhpcyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTU4ODg5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OSw5ICsxNDksOSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
CiB7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2soZnVuY3Rpb24pOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAjZWxzZQotICAgIGVtaXRTdG9yZShkc3Qs
IHJldHVyblZhbHVlMlJlZ2lzdGVyLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBlbWl0U3Rv
cmUoZHN0LCByZXR1cm5WYWx1ZUdQUjIsIHJldHVyblZhbHVlR1BSKTsKICNlbmRpZgogICAgIHJl
dHVybiBjYWxsOwogfQpAQCAtMTYxLDkgKzE2MSw5IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgSklUOjoKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShyZWdUNCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QsIHJldHVyblZhbHVlR1BSKTsKICNlbHNlCi0gICAgZW1pdFN0b3JlKGRzdCwgcmV0dXJu
VmFsdWUyUmVnaXN0ZXIsIHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGVtaXRTdG9yZShkc3Qs
IHJldHVyblZhbHVlR1BSMiwgcmV0dXJuVmFsdWVHUFIpOwogI2VuZGlmCiAgICAgcmV0dXJuIGNh
bGw7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCShyZXZpc2lvbiAxNTg4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBKSVQ6
OkNvZGVSZWYgSklUOjpwcml2YXRlQ29tcGlsZUNUSU5hdGl2CiAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMigtMTIpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgcHVzaChjYWxsRnJhbWVSZWdp
c3Rlcik7CiAjZWxzZQotICAgIG1vdmUoY2FsbEZyYW1lUmVnaXN0ZXIsIGZpcnN0QXJndW1lbnRS
ZWdpc3Rlcik7CisgICAgbW92ZShjYWxsRnJhbWVSZWdpc3RlciwgYXJndW1lbnRHUFIwKTsKICNl
bmRpZgogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihGdW5jdGlvblB0cihvcGVyYXRpb25WTUhhbmRs
ZUV4Y2VwdGlvbikudmFsdWUoKSksIHJlZ1QzKTsKICAgICBjYWxsKHJlZ1QzKTsKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZv
aWQgSklUOjplbWl0X29wX2VuZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIEFTU0VSVChyZXR1cm5WYWx1ZVJlZ2lzdGVyICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAg
ICBBU1NFUlQocmV0dXJuVmFsdWVHUFIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGVtaXRM
b2FkKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QxLCByZWdUMCk7CiAgICAg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rl
ciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7CiAgICAgcmV0KCk7CkBAIC0yNDMsNyAr
MjQzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoSW5zdHJ1YwogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUtPnN0cnVjdHVyZSgpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3T2JqZWN0LCBz
dHJ1Y3R1cmUpOwotICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsK
KyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKEluc3Ry
dWN0aW9uCiAgICAgfQogCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0SlNWYWx1
ZVRvQm9vbGVhbiwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hU
ZXN0MzIoWmVybywgcmV0dXJuVmFsdWVSZWdpc3RlciksIHRhcmdldCk7IC8vIEludmVydGVkLgor
ICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihaZXJvLCByZXR1cm5WYWx1ZUdQUiks
IHRhcmdldCk7IC8vIEludmVydGVkLgogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9qdHJ1ZShJbnN0cnVjdGlvbioKICAgICB9CiAKICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZWdUMSwgcmVnVDApOwotICAg
IGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZXR1cm5WYWx1ZVJlZ2lz
dGVyKSwgdGFyZ2V0KTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVy
bywgcmV0dXJuVmFsdWVHUFIpLCB0YXJnZXQpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFf
bnVsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtNjUxLDcgKzY1MSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVFcSwgcmVnVDEsIHJlZ1QwLCByZWdUMywgcmVnVDIpOwogCiAg
ICAgc3RvcmVSZXN1bHQubGluayh0aGlzKTsKLSAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmV0dXJu
VmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFN0b3JlQm9vbChkc3QsIHJldHVyblZhbHVlR1BSKTsK
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkBAIC02OTMsOCArNjkzLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShJbnN0cnVj
dGlvbiogYwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMSwgcmVn
VDAsIHJlZ1QzLCByZWdUMik7CiAKICAgICBzdG9yZVJlc3VsdC5saW5rKHRoaXMpOwotICAgIHhv
cjMyKFRydXN0ZWRJbW0zMigweDEpLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBlbWl0U3Rv
cmVCb29sKGRzdCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgeG9yMzIoVHJ1c3RlZEltbTMy
KDB4MSksIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0U3RvcmVCb29sKGRzdCwgcmV0dXJuVmFs
dWVHUFIpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHR5cGUpCkBAIC04MjUsNyAr
ODI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoSW5zdHJ1Y3Rpb24qIAogCiB2b2lk
IEpJVDo6ZW1pdF9vcF90aHJvdyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIEFTU0VSVChyZWdUMCA9PSByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBBU1NFUlQocmVn
VDAgPT0gcmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRMb2FkKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uVGhyb3csIHJlZ1QxLCByZWdUMCk7CiAgICAganVtcFRvRXhjZXB0aW9u
SGFuZGxlcigpOwpAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFt
ZXMoSW5zdHJ1Y3Rpb24KICAgICAvLyB0aGlzIGNhbGwgZG9lc24ndCBzZWVtIHRvIGJlIGhvdC4K
ICAgICBMYWJlbCBpc09iamVjdCh0aGlzKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdl
dFBOYW1lcywgcmVnVDApOwotICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZVJlZ2lz
dGVyKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGxvYWQz
MihBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwg
bV9qc1N0cmluZ3NTaXplKSksIHJlZ1QzKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihJbnQz
MlRhZyksIGludFRhZ0ZvcihpKSk7CiAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIGludFBh
eWxvYWRGb3IoaSkpOwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dp
dGNoX2ltbShJbnN0cnVjdGlvbgogCiAgICAgZW1pdExvYWQoc2NydXRpbmVlLCByZWdUMSwgcmVn
VDApOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlU
eXBlLCByZWdUMSwgcmVnVDAsIHRhYmxlSW5kZXgpOwotICAgIGp1bXAocmV0dXJuVmFsdWVSZWdp
c3Rlcik7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X3N3aXRjaF9jaGFyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMDIyLDcg
KzEwMjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfY2hhcihJbnN0cnVjdGlvCiAKICAg
ICBlbWl0TG9hZChzY3J1dGluZWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlLCByZWdUMSwgcmVnVDAsIHRhYmxl
SW5kZXgpOwotICAgIGp1bXAocmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAganVtcChyZXR1cm5W
YWx1ZUdQUik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9zdHJpbmcoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3N3aXRjaF9zdHJpbmcoSW5zdHJ1Y3QKIAogICAgIGVtaXRMb2FkKHNjcnV0aW5lZSwg
cmVnVDEsIHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dp
dGhVbmtub3duS2V5VHlwZSwgcmVnVDEsIHJlZ1QwLCB0YWJsZUluZGV4KTsKLSAgICBqdW1wKHJl
dHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF90aHJvd19zdGF0aWNfZXJyb3IoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKQEAgLTEwODMsNyArMTA4Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9h
Y3RpdmF0aW9uKEluc3QKICAgICAKICAgICBKdW1wIGFjdGl2YXRpb25DcmVhdGVkID0gYnJhbmNo
MzIoTm90RXF1YWwsIHRhZ0ZvcihhY3RpdmF0aW9uKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVt
cHR5VmFsdWVUYWcpKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRp
b24sIDApOwotICAgIGVtaXRTdG9yZUNlbGwoYWN0aXZhdGlvbiwgcmV0dXJuVmFsdWVSZWdpc3Rl
cik7CisgICAgZW1pdFN0b3JlQ2VsbChhY3RpdmF0aW9uLCByZXR1cm5WYWx1ZUdQUik7CiAgICAg
YWN0aXZhdGlvbkNyZWF0ZWQubGluayh0aGlzKTsKIH0KIApAQCAtMTA5Myw4ICsxMDkzLDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50cyhJbnN0cgogCiAgICAgSnVtcCBhcmdz
Q3JlYXRlZCA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoZHN0KSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0
ZUFyZ3VtZW50cyk7Ci0gICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlUmVnaXN0ZXIp
OwotICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxS
ZWdpc3Rlcihkc3QpKS5vZmZzZXQoKSwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdFN0
b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0U3RvcmVDZWxsKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoZHN0KSkub2Zmc2V0KCksIHJldHVy
blZhbHVlR1BSKTsKICAgICBhcmdzQ3JlYXRlZC5saW5rKHRoaXMpOwogfQogCkBAIC0xMjQzLDgg
KzEyNDMsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVB
cmd1bWVudHMpOwotICAgIGVtaXRTdG9yZUNlbGwoYXJndW1lbnRzLCByZXR1cm5WYWx1ZVJlZ2lz
dGVyKTsKLSAgICBlbWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSkub2Zmc2V0KCksIHJldHVyblZhbHVlUmVnaXN0ZXIpOwor
ICAgIGVtaXRTdG9yZUNlbGwoYXJndW1lbnRzLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFN0
b3JlQ2VsbCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGFyZ3Vt
ZW50cykpLm9mZnNldCgpLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgCiAgICAgc2tpcEFyZ3VtZW50
c0NyZWF0aW9uLmxpbmsodGhpcyk7CiAgICAgZW1pdExvYWQoYXJndW1lbnRzLCByZWdUMSwgcmVn
VDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAxNTg4ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Myw4ICs4Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX21vdihJ
bnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuVmFsdWVSZWdp
c3RlciAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChyZXR1cm5WYWx1ZUdQUiAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4o
QWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7
CiAgICAgcmV0KCk7CiB9CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X25ld19vYmplY3QoSW5zdHJ1YwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOwogICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3T2JqZWN0LCBzdHJ1Y3R1cmUpOwotICAgIGVtaXRTdG9yZUNlbGwo
ZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJu
VmFsdWVHUFIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI2OCwxMSArMjY4LDExIEBAIHZvaWQg
SklUOjplbWl0X29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhJbnMKIHZvaWQgSklUOjplbWl0X29wX3Jl
dChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEFTU0VSVChjYWxsRnJh
bWVSZWdpc3RlciAhPSByZWdUMSk7Ci0gICAgQVNTRVJUKHJlZ1QxICE9IHJldHVyblZhbHVlUmVn
aXN0ZXIpOwotICAgIEFTU0VSVChyZXR1cm5WYWx1ZVJlZ2lzdGVyICE9IGNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICBBU1NFUlQocmVnVDEgIT0gcmV0dXJuVmFsdWVHUFIpOworICAgIEFTU0VSVChy
ZXR1cm5WYWx1ZUdQUiAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAKICAgICAvLyBSZXR1cm4gdGhl
IHJlc3VsdCBpbiAlZWF4LgotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1
ZUdQUik7CiAKICAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBlbWl0R2V0UmV0
dXJuUENGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKHJlZ1QxKTsKQEAgLTI4OCwxMyArMjg4LDEzIEBA
IHZvaWQgSklUOjplbWl0X29wX3JldChJbnN0cnVjdGlvbiogY3VycmUKIHZvaWQgSklUOjplbWl0
X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIEFTU0VSVChjYWxsRnJhbWVSZWdpc3RlciAhPSByZWdUMSk7Ci0gICAgQVNTRVJUKHJl
Z1QxICE9IHJldHVyblZhbHVlUmVnaXN0ZXIpOwotICAgIEFTU0VSVChyZXR1cm5WYWx1ZVJlZ2lz
dGVyICE9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICBBU1NFUlQocmVnVDEgIT0gcmV0dXJuVmFs
dWVHUFIpOworICAgIEFTU0VSVChyZXR1cm5WYWx1ZUdQUiAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7
CiAKICAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCBpbiAlZWF4LgotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdp
c3Rlcik7Ci0gICAgSnVtcCBub3RKU0NlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJldHVyblZh
bHVlUmVnaXN0ZXIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXR1cm5WYWx1ZVJlZ2lzdGVyLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVHUFIpOwor
ICAgIEp1bXAgbm90SlNDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZXR1cm5WYWx1ZUdQUik7
CisgICAgbG9hZFB0cihBZGRyZXNzKHJldHVyblZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZk5vdE9iamVj
dChyZWdUMik7CiAKICAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KQEAgLTMxMCw3ICsz
MTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zCiAgICAgLy8g
UmV0dXJuICd0aGlzJyBpbiAlZWF4LgogICAgIG5vdEpTQ2VsbC5saW5rKHRoaXMpOwogICAgIG5v
dE9iamVjdC5saW5rKHRoaXMpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CisgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZXR1cm5W
YWx1ZUdQUik7CiAKICAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBlbWl0R2V0
UmV0dXJuUENGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKHJlZ1QxKTsKQEAgLTQ4Myw3ICs0ODMsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihJbnN0cnVjdGlvbiogY3VyCiAKIHZvaWQgSklUOjpl
bWl0X29wX3Rocm93KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQVNT
RVJUKHJlZ1QwID09IHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIEFTU0VSVChyZWdUMCA9PSBy
ZXR1cm5WYWx1ZUdQUik7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9u
Q2hlY2sob3BlcmF0aW9uVGhyb3csIHJlZ1QwKTsKICAgICBqdW1wVG9FeGNlcHRpb25IYW5kbGVy
KCk7CkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyhJbnN0
cnVjdGlvbgogICAgIC8vIHRoaXMgY2FsbCBkb2Vzbid0IHNlZW0gdG8gYmUgaG90LgogICAgIExh
YmVsIGlzT2JqZWN0KHRoaXMpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UE5hbWVz
LCByZWdUMCk7Ci0gICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlUmVnaXN0ZXIpOwor
ICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQUik7CiAgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2pzU3Ry
aW5nc1NpemUpKSwgcmVnVDMpOwogICAgIHN0b3JlNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCBh
ZGRyZXNzRm9yKGkpKTsKICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihJbnQzMlRhZyksIGludFRh
Z0ZvcihzaXplKSk7CkBAIC02ODIsNyArNjgyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNo
X2ltbShJbnN0cnVjdGlvbgogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY3J1dGluZWUs
IHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3du
S2V5VHlwZSwgcmVnVDAsIHRhYmxlSW5kZXgpOwotICAgIGp1bXAocmV0dXJuVmFsdWVSZWdpc3Rl
cik7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3N3
aXRjaF9jaGFyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC02OTgsNyArNjk4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIoSW5zdHJ1Y3RpbwogCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihzY3J1dGluZWUsIHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktleVR5cGUsIHJlZ1QwLCB0YWJsZUluZGV4
KTsKLSAgICBqdW1wKHJldHVyblZhbHVlUmVnaXN0ZXIpOworICAgIGp1bXAocmV0dXJuVmFsdWVH
UFIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfc3RyaW5nKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC03MTMsNyArNzEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
c3dpdGNoX3N0cmluZyhJbnN0cnVjdAogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY3J1
dGluZWUsIHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZ1dp
dGhVbmtub3duS2V5VHlwZSwgcmVnVDAsIHRhYmxlSW5kZXgpOwotICAgIGp1bXAocmV0dXJuVmFs
dWVSZWdpc3Rlcik7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CiB9CiAKIHZvaWQgSklUOjpl
bWl0X29wX3Rocm93X3N0YXRpY19lcnJvcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQpAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hY3RpdmF0aW9u
KEluc3QKICAgICAKICAgICBKdW1wIGFjdGl2YXRpb25DcmVhdGVkID0gYnJhbmNoVGVzdDY0KE5v
blplcm8sIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBkc3Qp
KTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb24sIDApOwotICAg
IGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBlbWl0U3RvcmVD
ZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwogICAgIGFjdGl2YXRpb25DcmVhdGVkLmxpbmsodGhp
cyk7CiB9CiAKQEAgLTgzMiw4ICs4MzIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJn
dW1lbnRzKEluc3RyCiAgICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5jaFRlc3Q2NChOb25aZXJv
LCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAK
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyk7Ci0gICAgZW1pdFN0
b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlUmVnaXN0ZXIpOwotICAgIGVtaXRTdG9yZUNlbGwodW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihkc3QpKSwgcmV0dXJuVmFs
dWVSZWdpc3Rlcik7CisgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVyblZhbHVlR1BSKTsKKyAg
ICBlbWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIoZHN0KSksIHJldHVyblZhbHVlR1BSKTsKIAogICAgIGFyZ3NDcmVhdGVkLmxpbmsodGhpcyk7
CiB9CkBAIC05NTUsMTQgKzk1NSwxNCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKElu
c3RydWN0aW9uCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4sIHJlZ1QwKTsKLSAgICBlbWl0SnVtcFNs
b3dUb0hvdChicmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVSZWdpc3RlciksIGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOyAvLyBpbnZlcnRlZCEKKyAgICBlbWl0SnVtcFNsb3dU
b0hvdChicmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVHUFIpLCBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKTsgLy8gaW52ZXJ0ZWQhCiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9qdHJ1ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuLCByZWdUMCk7Ci0g
ICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJldHVyblZhbHVlUmVn
aXN0ZXIpLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICBlbWl0SnVtcFNs
b3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpLCBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdHhv
cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQpAQCAtOTg1LDggKzk4NSw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9lcShJbnN0cnVjdGlvbiogY3UKIHsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7Ci0gICAgZW1pdFRh
Z0FzQm9vbEltbWVkaWF0ZShyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlUmVn
aXN0ZXIpOworICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmV0dXJuVmFsdWVHUFIpOworICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cmV0dXJuVmFsdWVHUFIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCkBAIC05OTQsOCArOTk0LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShJbnN0
cnVjdGlvbiogYwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNvbXBhcmVFcSwgcmVnVDAsIHJlZ1QxKTsKICAgICB4b3IzMihUcnVzdGVkSW1tMzIo
MHgxKSwgcmVnVDApOwotICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmV0dXJuVmFsdWVSZWdp
c3Rlcik7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAgICBlbWl0VGFnQXNCb29sSW1tZWRp
YXRlKHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlR1BSKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3N0cmljdGVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC0xMTA2LDggKzExMDYsOCBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyk7Ci0gICAgZW1pdFN0b3JlQ2VsbChhcmd1bWVudHMsIHJl
dHVyblZhbHVlUmVnaXN0ZXIpOwotICAgIGVtaXRTdG9yZUNlbGwodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpKSwgcmV0dXJuVmFsdWVSZWdpc3Rl
cik7CisgICAgZW1pdFN0b3JlQ2VsbChhcmd1bWVudHMsIHJldHVyblZhbHVlR1BSKTsKKyAgICBl
bWl0U3RvcmVDZWxsKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIo
YXJndW1lbnRzKSksIHJldHVyblZhbHVlR1BSKTsKICAgICAKICAgICBza2lwQXJndW1lbnRzQ3Jl
YXRpb24ubGluayh0aGlzKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywg
cmVnVDApOwpAQCAtMTE1MCw4ICsxMTUwLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3Bf
aGludChJbnN0cnVjdAogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgICAgIAogICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9wdGltaXplLCBtX2J5dGVjb2RlT2Zmc2V0KTsK
LSAgICAgICAgSnVtcCBub09wdGltaXplZEVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1
cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICAgICAganVtcChyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAg
ICAgICAgSnVtcCBub09wdGltaXplZEVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5W
YWx1ZUdQUik7CisgICAgICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwogICAgICAgICBub09wdGlt
aXplZEVudHJ5LmxpbmsodGhpcyk7CiAKICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgp
LCBPUENPREVfTEVOR1RIKG9wX2xvb3BfaGludCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTU4ODg5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw4IEBACiAKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAi
Q0NhbGxIZWxwZXJzLmgiCisjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8u
aCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpJVFN0dWJzLmgiCkBAIC00MCwxNzcgKzQyLDEyIEBACiAjaWYgRU5BQkxFKEpJVCkK
IAogbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgSlNJbnRlcmZhY2VKSVQgOiBwdWJsaWMgQ0Nh
bGxIZWxwZXJzIHsKKyAgICBjbGFzcyBKU0ludGVyZmFjZUpJVCA6IHB1YmxpYyBDQ2FsbEhlbHBl
cnMsIHB1YmxpYyBHUFJJbmZvLCBwdWJsaWMgRlBSSW5mbyB7CiAgICAgcHVibGljOgogICAgICAg
ICBKU0ludGVyZmFjZUpJVChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrID0gMCkKICAgICAg
ICAgICAgIDogQ0NhbGxIZWxwZXJzKHZtLCBjb2RlQmxvY2spCiAgICAgICAgIHsKICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgLy8gTk9URVM6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIHJl
Z1QwIGhhcyB0d28gc3BlY2lhbCBtZWFuaW5ncy4gIFRoZSByZXR1cm4gdmFsdWUgZnJvbSBhIHN0
dWIKLSAgICAgICAgLy8gY2FsbCB3aWxsIGFsd2F5cyBiZSBpbiByZWdUMCwgYW5kIGJ5IGRlZmF1
bHQgKHVubGVzcwotICAgICAgICAvLyBhIHJlZ2lzdGVyIGlzIHNwZWNpZmllZCkgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcigpIHdpbGwgc3RvcmUKLSAgICAgICAgLy8gdGhlIHZhbHVlIGZyb20gcmVn
VDAuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHJlZ1QzIGlzIHJlcXVpcmVkIHRvIGJlIGNhbGxl
ZS1wcmVzZXJ2ZWQuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHRlbXBSZWdpc3RlcjIgaXMgaGFz
IG5vIHN1Y2ggZGVwZW5kZW5jaWVzLiAgSXQgaXMgaW1wb3J0YW50IHRoYXQKLSAgICAgICAgLy8g
b24geDg2L3g4Ni02NCBpdCBpcyBlY3ggZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHNpbmNlIHRo
ZQotICAgICAgICAvLyBNYWNyb0Fzc2VtYmxlciB3aWxsIG5lZWQgdG8gcGxhbnQgcmVnaXN0ZXIg
c3dhcHMgaWYgaXQgaXMgbm90IC0KLSAgICAgICAgLy8gaG93ZXZlciB0aGUgY29kZSB3aWxsIHN0
aWxsIGZ1bmN0aW9uIGNvcnJlY3RseS4KLSNpZiBDUFUoWDg2XzY0KQotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlMlJlZ2lzdGVyID0g
WDg2UmVnaXN0ZXJzOjplZHg7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hl
ZFJlc3VsdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0jaWYgIU9TKFdJTkRPV1MpCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6ZWRpOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRB
cmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc2k7Ci0jZWxzZQotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OmVjeDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgc2Vjb25kQXJndW1lbnRSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCB0aGlyZEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnI4OwotI2VuZGlmCi0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OmVicDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGFnVHlwZU51bWJl
clJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1OwotCi0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gWDg2UmVnaXN0ZXJzOjplZHg7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QzID0gWDg2UmVnaXN0ZXJzOjplYng7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1Q0ID0gWDg2UmVnaXN0ZXJzOjpy
MTA7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gWDg2UmVn
aXN0ZXJzOjp4bW0wOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEg
PSBYODZSZWdpc3RlcnM6OnhtbTE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQg
ZnBSZWdUMiA9IFg4NlJlZ2lzdGVyczo6eG1tMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVn
aXN0ZXJJRCBmcFJlZ1QzID0gWDg2UmVnaXN0ZXJzOjp4bW0zOwotCi0gICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIG5vbkFyZ0dQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsgLy8gcmVnVDAK
LSNlbGlmIENQVShYODYpCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZh
bHVlUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgcmV0dXJuVmFsdWUyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkeDsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OmVheDsKLSAgICAgICAgLy8gT24geDg2IHdlIGFsd2F5cyB1c2UgZmFzdGNhbGwgY29u
dmVudGlvbnMgPSBidXQgb24KLSAgICAgICAgLy8gT1MgWCBpZiBtaWdodCBtYWtlIG1vcmUgc2Vu
c2UgdG8ganVzdCB1c2UgcmVncGFybS4KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
Zmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplY3g7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OmVkeDsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFt
ZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwotICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUNCA9IFg4NlJlZ2lzdGVyczo6ZXNpOwot
ICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gWDg2
UmVnaXN0ZXJzOjp4bW0wOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVn
VDEgPSBYODZSZWdpc3RlcnM6OnhtbTE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVy
SUQgZnBSZWdUMiA9IFg4NlJlZ2lzdGVyczo6eG1tMjsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQ
UmVnaXN0ZXJJRCBmcFJlZ1QzID0gWDg2UmVnaXN0ZXJzOjp4bW0zOwotI2VsaWYgQ1BVKEFSTSkK
LSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IEFS
TVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZh
bHVlMlJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwotICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBBUk1SZWdp
c3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVu
dFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCByZWdUMCA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmVnVDIgPSBBUk1SZWdpc3RlcnM6OnIyOwotICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCByZWdUMyA9IEFSTVJlZ2lzdGVyczo6cjQ7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHJlZ1Q0ID0gQVJNUmVnaXN0ZXJzOjpyNzsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgcmVnVDUgPSBBUk1SZWdpc3RlcnM6OnI4OwotCi0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpm
cDsKLQotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDAgPSBBUk1SZWdp
c3RlcnM6OmQwOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBB
Uk1SZWdpc3RlcnM6OmQxOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVn
VDIgPSBBUk1SZWdpc3RlcnM6OmQyOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklE
IGZwUmVnVDMgPSBBUk1SZWdpc3RlcnM6OmQzOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gQVJNNjRSZWdpc3Rl
cnM6OngwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngwOwotICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gQVJNNjRSZWdp
c3RlcnM6OngxOwotCi0jaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6
eDc7Ci0jZW5kaWYKLQotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IEFS
TTY0UmVnaXN0ZXJzOjp4MDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEg
PSBBUk02NFJlZ2lzdGVyczo6eDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJl
Z1QyID0gQVJNNjRSZWdpc3RlcnM6OngyOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCByZWdUMyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIHJlZ1Q0ID0gQVJNNjRSZWdpc3RlcnM6OngyNDsKLSAgICAgICAgCi0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6
OmZwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklE
IHRhZ1R5cGVOdW1iZXJSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHRhZ01hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4
Mjg7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDAg
PSBBUk02NFJlZ2lzdGVyczo6cTA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQg
ZnBSZWdUMSA9IEFSTTY0UmVnaXN0ZXJzOjpxMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVn
aXN0ZXJJRCBmcFJlZ1QyID0gQVJNNjRSZWdpc3RlcnM6OnEyOwotICAgICAgICBzdGF0aWMgY29u
c3QgRlBSZWdpc3RlcklEIGZwUmVnVDMgPSBBUk02NFJlZ2lzdGVyczo6cTM7Ci0KLSAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbm9uQXJnR1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsK
LSNlbGlmIENQVShNSVBTKQotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5W
YWx1ZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHJldHVyblZhbHVlMlJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djE7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gTUlQU1Jl
Z2lzdGVyczo6djA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1l
bnRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmEwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBzZWNvbmRBcmd1bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTE7Ci0gICAg
ICAgIAotICAgICAgICAvLyByZWdUMCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQg
dmFsdWUuCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lz
dGVyczo6djA7Ci0gICAgICAgIAotICAgICAgICAvLyByZWdUMSBtdXN0IGJlIHYxIGZvciByZXR1
cm5pbmcgYSBwYWlyIG9mIDMyLWJpdCB2YWx1ZS4KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lz
dGVySUQgcmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6dDQ7Ci0gICAgICAgIAot
ICAgICAgICAvLyByZWdUMyBtdXN0IGJlIHNhdmVkIGluIHRoZSBjYWxsZWUsIHNvIHVzZSBhbiBT
IHJlZ2lzdGVyLgotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IE1JUFNS
ZWdpc3RlcnM6OnMyOwotICAgICAgICAKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjp0NTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjp0NjsKLQotICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmZwOwotICAgICAgICAK
LSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gTUlQU1JlZ2lzdGVy
czo6ZjQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IE1JUFNS
ZWdpc3RlcnM6OmY2OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIg
PSBNSVBTUmVnaXN0ZXJzOjpmODsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBm
cFJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6ZjEwOwotI2VsaWYgQ1BVKFNINCkKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OmZw
OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gU0g0UmVnaXN0ZXJz
OjpyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEgPSBTSDRSZWdpc3Rl
cnM6OnIxOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IFNINFJlZ2lz
dGVyczo6cjI7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QzID0gU0g0UmVn
aXN0ZXJzOjpyMTA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1Q0ID0gU0g0
UmVnaXN0ZXJzOjpyNDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDUgPSBT
SDRSZWdpc3RlcnM6OnI1OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUNiA9
IFNINFJlZ2lzdGVyczo6cjY7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1Q3
ID0gU0g0UmVnaXN0ZXJzOjpyNzsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmly
c3RBcmd1bWVudFJlZ2lzdGVyID0gcmVnVDQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIHNlY29uZEFyZ3VtZW50UmVnaXN0ZXIgPSByZWdUNTsKLQotICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpyMDsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWUyUmVnaXN0ZXIgPSBTSDRS
ZWdpc3RlcnM6OnIxOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1
bHRSZWdpc3RlciA9IFNINFJlZ2lzdGVyczo6cjA7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEZQ
UmVnaXN0ZXJJRCBmcFJlZ1QwID0gU0g0UmVnaXN0ZXJzOjpkcjA7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IFNINFJlZ2lzdGVyczo6ZHIyOwotICAgICAgICBz
dGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBTSDRSZWdpc3RlcnM6OmRyNDsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QzID0gU0g0UmVnaXN0ZXJzOjpk
cjY7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUNCA9IFNINFJlZ2lz
dGVyczo6ZHI4OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDUgPSBT
SDRSZWdpc3RlcnM6OmRyMTA7Ci0jZWxzZQotI2Vycm9yICJKSVQgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtLiIKLSNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAg
Ly8gQ2FuJ3QganVzdCBwcm9wb2dhdGUgSlNWYWx1ZTo6SW50MzJUYWcgYXMgdmlzdWFsIHN0dWRp
byBkb2Vzbid0IGxpa2UgaXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1Bh
dGhDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TbG93UGF0
aENhbGwuaAkocmV2aXNpb24gMTU4ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9T
bG93UGF0aENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9qaXQtPnB1c2goSklUOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAjZWxpZiBDUFUo
WDg2XzY0KSAmJiBPUyhXSU5ET1dTKQogICAgICAgICBtX2ppdC0+YWRkUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoLTE2KSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBKSVQ6OmZpcnN0QXJndW1lbnRSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LT5tb3Zl
KEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6c2Vjb25kQXJndW1lbnRSZWdpc3Rlcik7Ci0g
ICAgICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjp0aGlyZEFy
Z3VtZW50UmVnaXN0ZXIpOworICAgICAgICBtX2ppdC0+bW92ZShNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIEpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgbV9qaXQtPm1v
dmUoSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUOjphcmd1bWVudEdQUjEpOworICAgICAgICBt
X2ppdC0+bW92ZShKSVQ6OlRydXN0ZWRJbW1QdHIobV9wYyksIEpJVDo6YXJndW1lbnRHUFIyKTsK
ICNlbHNlCi0gICAgICAgIG1faml0LT5tb3ZlKEpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVDo6
Zmlyc3RBcmd1bWVudFJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpUcnVzdGVk
SW1tUHRyKG1fcGMpLCBKSVQ6OnNlY29uZEFyZ3VtZW50UmVnaXN0ZXIpOworICAgICAgICBtX2pp
dC0+bW92ZShKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVQ6OmFyZ3VtZW50R1BSMCk7CisgICAg
ICAgIG1faml0LT5tb3ZlKEpJVDo6VHJ1c3RlZEltbVB0cihtX3BjKSwgSklUOjphcmd1bWVudEdQ
UjEpOwogI2VuZGlmCiAgICAgICAgIEpJVDo6Q2FsbCBjYWxsID0gbV9qaXQtPmNhbGwoKTsKICAg
ICAgICAgbV9qaXQtPm1fY2FsbHMuYXBwZW5kKENhbGxSZWNvcmQoY2FsbCwgbV9qaXQtPm1fYnl0
ZWNvZGVPZmZzZXQsIG1fc3R1Yi52YWx1ZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAxNTg4ODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxNyw3ICs3MTcsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZv
ckdlCiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKC0xMiksIEpT
SW50ZXJmYWNlSklUOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0LnB1c2goSlNJbnRl
cmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyKTsKICNlbHNlCi0gICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6Zmlyc3RBcmd1bWVu
dFJlZ2lzdGVyKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjApOwogI2VuZGlmCiAgICAgaml0Lm1vdmUo
SlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoRnVuY3Rpb25QdHIob3BlcmF0aW9uVk1IYW5k
bGVFeGNlcHRpb24pLnZhbHVlKCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwogICAgIGppdC5j
YWxsKEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7Cg==
</data>
<flag name="review"
          id="239310"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>