<?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>121055</bug_id>
          
          <creation_ts>2013-09-09 15:37:33 -0700</creation_ts>
          <short_desc>Change virtual register function arguments and locals from unsigned to int</short_desc>
          <delta_ts>2013-09-09 23:00:07 -0700</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>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>118758</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926960</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-09-09 15:37:33 -0700</bug_when>
    <thetext>This is part of making the change for https://bugs.webkit.org/show_bug.cgi?id=118758 - &quot;fourthTier: Change JSStack to grow from high to low addresses&quot;.  In many places the the type of virtual register variables and argument are unsigned.  These should be changed since offsets can be both positive and negative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926966</commentid>
    <comment_count>1</comment_count>
      <attachid>211108</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-09-09 15:43:56 -0700</bug_when>
    <thetext>Created attachment 211108
Patch

Builds and passes JS tests for both 32 and 64 bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927007</commentid>
    <comment_count>2</comment_count>
      <attachid>211108</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-09 17:14:37 -0700</bug_when>
    <thetext>Comment on attachment 211108
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This is a largely mechanical change.  This changes function paramaters and local variables use to

Should be &quot;used&quot;.

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        * bytecode/CodeOrigin.h:
&gt; +        * dfg/DFGByteCodeParser.cpp:
&gt; +        (JSC::DFG::ByteCodeParser::getDirect):
&gt; +        (JSC::DFG::ByteCodeParser::setDirect):
&gt; +        (JSC::DFG::ByteCodeParser::getLocal):
&gt; +        (JSC::DFG::ByteCodeParser::setLocal):
&gt; +        (JSC::DFG::ByteCodeParser::parseBlock):
&gt; +        * jit/JIT.h:
&gt; +        (JSC::JIT::emitStoreCell):

I don&apos;t think this empty function list is super helpful. Perhaps you could truncate it to a file list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927138</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-09-09 23:00:07 -0700</bug_when>
    <thetext>Committed r155418: &lt;http://trac.webkit.org/changeset/155418&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211108</attachid>
            <date>2013-09-09 15:43:56 -0700</date>
            <delta_ts>2013-09-09 17:14:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>121055.patch</filename>
            <type>text/plain</type>
            <size>111525</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1Mzk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxNyBA
QAorMjAxMy0wOS0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDaGFuZ2UgdmlydHVhbCByZWdpc3RlciBmdW5jdGlvbiBhcmd1bWVudHMgZnJvbSB1bnNp
Z25lZCB0byBpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTA1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgaXMgYSBsYXJnZWx5IG1lY2hhbmljYWwgY2hhbmdlLiAgVGhpcyBjaGFuZ2VzIGZ1
bmN0aW9uIHBhcmFtYXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB1c2UgdG8KKyAgICAgICAgcmVw
cmVzZW50IGJ5dGVjb2RlIG9wZXJhbmRzIGZyb20gYmVpbmcgdW5zaWduZWQgdG8gYmUgaW50Lgor
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldERp
cmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnNldERpcmVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldExvY2FsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFN0b3JlQ2VsbCk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfamxlc3MpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3Bfamxlc3NlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZ3JlYXRl
cik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZ3JlYXRlcmVxKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2pubGVzcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmxl
c3NlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXIpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2psZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbGVzc2VxKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3Bfam5sZXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9qbmxlc3NlcSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9qbmdyZWF0ZXJlcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2xzaGlmdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yc2hpZnQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3JzaGlmdCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF91cnNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF91cnNo
aWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2JpdGFuZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2RlYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9tb2QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX21vZCk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBp
bGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRk
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9kaXYpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGlj
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVnYXRlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBT
bG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2xzaGlmdCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UmlnaHRT
aGlmdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2JpdGFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRvcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfYml0eG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9iaXR4b3IpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9pbmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9kZWMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
YWRkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWRkMzJDb25zdGFudCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1
Yik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFN1YjMyQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3N1Yik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEJpbmFyeURv
dWJsZU9wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX211bCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfbXVsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rpdik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX21vZCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjppc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
OkpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6SklUOjppc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUNoYXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbml0UmVnaXN0
ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KToK
KyAgICAgICAgKEpTQzo6SklUOjpnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRKSVRTdHViQXJnKToKKyAgICAgICAgKEpTQzo6SklUOjpn
ZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lz
X3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2puZXFfcHRyKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJp
Y3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Ny
ZWF0ZV9hY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV9hcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5pdF9sYXp5X3JlZyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9jaGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9h
cmd1bWVudHNfbGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX21vdik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9j
aGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2Vv
Zik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9pc19ib29sZWFuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9ub3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25vdCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9qZmFsc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2pmYWxzZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qdHJ1ZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfanRydWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
amVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfcHRyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25l
cSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX3N0cmljdGVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9uc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jcmVhdGVfYWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9j
cmVhdGVfYXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luaXRfbGF6eV9y
ZWcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dl
dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFJlc29sdmVDbG9zdXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVf
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0R2V0Q2xvc3VyZVZhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zy
b21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRHbG9iYWxQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEdsb2JhbFZhcik6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFB1dENsb3N1cmVWYXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Nj
b3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9ieV9pbmRleCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVy
X3NldHRlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF9ieV9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UmVzb2x2ZUNsb3N1cmUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExv
YWRXaXRoU3RydWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRDbG9zdXJl
VmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0
R2xvYmFsVmFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q2xvc3VyZVZhcik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRT
dHViQ2FsbC5oOgorICAgICAgICAoSlNDOjpKSVRTdHViQ2FsbDo6YWRkQXJndW1lbnQpOgorICAg
ICAgICAoSlNDOjpKSVRTdHViQ2FsbDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkpJVFN0dWJDYWxs
OjpjYWxsV2l0aFZhbHVlUHJvZmlsaW5nKToKKwogMjAxMy0wOS0wOCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEJlZ2luIG1vdmluZyBvZmYgb2YgVHlw
ZVRyYWl0cy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3Jp
Z2luLmgJKHJldmlzaW9uIDE1NTM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgc3RydWN0IElu
bGluZUNhbGxGcmFtZSB7CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsgLy8g
VGhpcyBtYXkgYmUgbnVsbCwgaW5kaWNhdGluZyB0aGF0IHRoaXMgaXMgYSBjbG9zdXJlIGNhbGwg
YW5kIHRoYXQgdGhlIEpTRnVuY3Rpb24gYW5kIEpTU2NvcGUgYXJlIGFscmVhZHkgb24gdGhlIHN0
YWNrLgogICAgIENvZGVPcmlnaW4gY2FsbGVyOwogICAgIEJpdFZlY3RvciBjYXB0dXJlZFZhcnM7
IC8vIEluZGV4ZWQgYnkgdGhlIG1hY2hpbmUgY2FsbCBmcmFtZSdzIHZhcmlhYmxlIG51bWJlcmlu
Zy4KLSAgICB1bnNpZ25lZCBzdGFja09mZnNldCA6IDMxOworICAgIHNpZ25lZCBpbnQgc3RhY2tP
ZmZzZXQgOiAzMTsKICAgICBib29sIGlzQ2FsbCA6IDE7CiAgICAgCiAgICAgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQoKSBjb25zdCB7IHJldHVybiBzcGVjaWFsaXph
dGlvbkZyb21Jc0NhbGwoaXNDYWxsKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE1NTM1MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTQsOCArMjE0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBnZXRBcmd1
bWVudChvcGVyYW5kKTsKIAogICAgICAgICAvLyBNdXN0IGJlIGEgbG9jYWwuCi0gICAgICAgIHJl
dHVybiBnZXRMb2NhbCgodW5zaWduZWQpb3BlcmFuZCk7CisgICAgICAgIHJldHVybiBnZXRMb2Nh
bChvcGVyYW5kKTsKICAgICB9CisKICAgICBOb2RlKiBnZXQoaW50IG9wZXJhbmQpCiAgICAgewog
ICAgICAgICBpZiAob3BlcmFuZCA9PSBKU1N0YWNrOjpDYWxsZWUpIHsKQEAgLTIyNyw2ICsyMjgs
NyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIGdldERpcmVjdChtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCkpOwogICAgIH0KKwogICAgIGVudW0gU2V0
TW9kZSB7IE5vcm1hbFNldCwgU2V0T25FbnRyeSB9OwogICAgIHZvaWQgc2V0RGlyZWN0KGludCBv
cGVyYW5kLCBOb2RlKiB2YWx1ZSwgU2V0TW9kZSBzZXRNb2RlID0gTm9ybWFsU2V0KQogICAgIHsK
QEAgLTIzNyw4ICsyMzksOSBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgLy8gTXVz
dCBiZSBhIGxvY2FsLgotICAgICAgICBzZXRMb2NhbCgodW5zaWduZWQpb3BlcmFuZCwgdmFsdWUs
IHNldE1vZGUpOworICAgICAgICBzZXRMb2NhbChvcGVyYW5kLCB2YWx1ZSwgc2V0TW9kZSk7CiAg
ICAgfQorCiAgICAgdm9pZCBzZXQoaW50IG9wZXJhbmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNl
dE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewogICAgICAgICBzZXREaXJlY3QobV9pbmxpbmVTdGFj
a1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpLCB2YWx1ZSwgc2V0TW9kZSk7CkBAIC0yNTksNyAr
MjYyLDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICAvLyBVc2VkIGluIGltcGxlbWVudGluZyBn
ZXQvc2V0LCBhYm92ZSwgd2hlcmUgdGhlIG9wZXJhbmQgaXMgYSBsb2NhbCB2YXJpYWJsZS4KLSAg
ICBOb2RlKiBnZXRMb2NhbCh1bnNpZ25lZCBvcGVyYW5kKQorICAgIE5vZGUqIGdldExvY2FsKGlu
dCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2NrLT52
YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCk7CiAgICAgICAgIGJvb2wgaXNDYXB0dXJlZCA9
IG1fY29kZUJsb2NrLT5pc0NhcHR1cmVkKG9wZXJhbmQsIGlubGluZUNhbGxGcmFtZSgpKTsKQEAg
LTI5NSw3ICsyOTgsOCBAQCBwcml2YXRlOgogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFi
bGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAg
ICAgfQotICAgIHZvaWQgc2V0TG9jYWwodW5zaWduZWQgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNl
dE1vZGUgc2V0TW9kZSA9IE5vcm1hbFNldCkKKworICAgIHZvaWQgc2V0TG9jYWwoaW50IG9wZXJh
bmQsIE5vZGUqIHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewogICAg
ICAgICBib29sIGlzQ2FwdHVyZWQgPSBtX2NvZGVCbG9jay0+aXNDYXB0dXJlZChvcGVyYW5kLCBp
bmxpbmVDYWxsRnJhbWUoKSk7CiAgICAgICAgIApAQCAtMjA4NywxNCArMjA5MSwxNCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIC8vID09PSBJbmNy
ZW1lbnQvRGVjcmVtZW50IG9wY29kZXMgPT09CiAKICAgICAgICAgY2FzZSBvcF9pbmM6IHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBpbnQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKICAgICAgICAgICAgIE5vZGUqIG9wID0gZ2V0KHNyY0RzdCk7CiAgICAgICAgICAgICBz
ZXQoc3JjRHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBvcCwgb25lKCkpKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbmMpOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9kZWM6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgc3JjRHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIE5vZGUqIG9wID0gZ2V0KHNyY0RzdCk7
CiAgICAgICAgICAgICBzZXQoc3JjRHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoU3ViLCBv
cCwgb25lKCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWMpOwpAQCAtMjk5NCw3
ICsyOTk4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgTEFTVF9PUENPREUob3Bfam5lcV9wdHIpOwogCiAgICAgICAgIGNhc2Ugb3BfcmVz
b2x2ZV9zY29wZTogewotICAgICAgICAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwogICAgICAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBz
dGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBkZXB0aCA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9w
ZXJhbmQ7CiAKQEAgLTMwMjEsNyArMzAyNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2Nv
cGU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIHNjb3BlID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kXTsKICAgICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gMTU1MzUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDM4LDcgKzQzOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IGVudW0gQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHsgT3BTdHJpY3RFcSwgT3BOU3RyaWN0RXEgfTsK
ICAgICAgICAgdm9pZCBjb21waWxlT3BTdHJpY3RFcShJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IENvbXBpbGVPcFN0cmljdEVxVHlwZSB0eXBlKTsKLSAgICAgICAgYm9vbCBpc09wZXJhbmRDb25z
dGFudEltbWVkaWF0ZURvdWJsZSh1bnNpZ25lZCBzcmMpOworICAgICAgICBib29sIGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKGludCBzcmMpOwogICAgICAgICAKICAgICAgICAgdm9p
ZCBlbWl0TG9hZERvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7CiAgICAgICAg
IHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVl
KTsKQEAgLTUwOSw3ICs1MDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBGaW5h
bE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgICAgICBib29sIGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludCh1
bnNpZ25lZCBvcDEsIHVuc2lnbmVkIG9wMiwgdW5zaWduZWQmIG9wLCBpbnQzMl90JiBjb25zdGFu
dCk7CisgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBvcDEs
IGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIAogICAgICAgICB2b2lkIGVt
aXRMb2FkVGFnKGludCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpOwogICAgICAgICB2b2lkIGVtaXRM
b2FkUGF5bG9hZChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCk7CkBAIC01NDYsOSArNTQ2
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29tcGlsZVB1dERpcmVjdE9mZnNl
dChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdmFsdWVUYWcsIFJlZ2lzdGVySUQgdmFsdWVQ
YXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQpOwogCiAgICAgICAgIC8vIEFyaXRo
bWV0aWMgb3Bjb2RlIGhlbHBlcnMKLSAgICAgICAgdm9pZCBlbWl0QWRkMzJDb25zdGFudCh1bnNp
Z25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1bHRUeXBlIG9wVHlw
ZSk7Ci0gICAgICAgIHZvaWQgZW1pdFN1YjMyQ29uc3RhbnQodW5zaWduZWQgZHN0LCB1bnNpZ25l
ZCBvcCwgaW50MzJfdCBjb25zdGFudCwgUmVzdWx0VHlwZSBvcFR5cGUpOwotICAgICAgICB2b2lk
IGVtaXRCaW5hcnlEb3VibGVPcChPcGNvZGVJRCwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBvcDEs
IHVuc2lnbmVkIG9wMiwgT3BlcmFuZFR5cGVzLCBKdW1wTGlzdCYgbm90SW50MzJPcDEsIEp1bXBM
aXN0JiBub3RJbnQzMk9wMiwgYm9vbCBvcDFJc0luUmVnaXN0ZXJzID0gdHJ1ZSwgYm9vbCBvcDJJ
c0luUmVnaXN0ZXJzID0gdHJ1ZSk7CisgICAgICAgIHZvaWQgZW1pdEFkZDMyQ29uc3RhbnQoaW50
IGRzdCwgaW50IG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1bHRUeXBlIG9wVHlwZSk7CisgICAg
ICAgIHZvaWQgZW1pdFN1YjMyQ29uc3RhbnQoaW50IGRzdCwgaW50IG9wLCBpbnQzMl90IGNvbnN0
YW50LCBSZXN1bHRUeXBlIG9wVHlwZSk7CisgICAgICAgIHZvaWQgZW1pdEJpbmFyeURvdWJsZU9w
KE9wY29kZUlELCBpbnQgZHN0LCBpbnQgb3AxLCBpbnQgb3AyLCBPcGVyYW5kVHlwZXMsIEp1bXBM
aXN0JiBub3RJbnQzMk9wMSwgSnVtcExpc3QmIG5vdEludDMyT3AyLCBib29sIG9wMUlzSW5SZWdp
c3RlcnMgPSB0cnVlLCBib29sIG9wMklzSW5SZWdpc3RlcnMgPSB0cnVlKTsKIAogI2lmIENQVShB
Uk1fVFJBRElUSU9OQUwpCiAgICAgICAgIC8vIHNlcXVlbmNlT3BDYWxsCkBAIC01ODAsMTcgKzU4
MCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAgICAgLyogVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLiAqLwotICAgICAgICB2b2lkIGVt
aXRHZXRKSVRTdHViQXJnKHVuc2lnbmVkIGFyZ3VtZW50TnVtYmVyLCBSZWdpc3RlcklEIGRzdCk7
CisgICAgICAgIHZvaWQgZW1pdEdldEpJVFN0dWJBcmcoaW50IGFyZ3VtZW50TnVtYmVyLCBSZWdp
c3RlcklEIGRzdCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGludCBz
cmMsIFJlZ2lzdGVySUQgZHN0KTsKICAgICAgICAgdm9pZCBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
cyhpbnQgc3JjMSwgUmVnaXN0ZXJJRCBkc3QxLCBpbnQgc3JjMiwgUmVnaXN0ZXJJRCBkc3QyKTsK
LSAgICAgICAgdm9pZCBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHVuc2lnbmVkIGRzdCwgUmVnaXN0
ZXJJRCBmcm9tID0gcmVnVDApOwotICAgICAgICB2b2lkIGVtaXRTdG9yZUNlbGwodW5zaWduZWQg
ZHN0LCBSZWdpc3RlcklEIHBheWxvYWQsIGJvb2wgLyogb25seSB1c2VkIGluIEpTVmFsdWUzMl82
NCAqLyA9IGZhbHNlKQorICAgICAgICB2b2lkIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoaW50IGRz
dCwgUmVnaXN0ZXJJRCBmcm9tID0gcmVnVDApOworICAgICAgICB2b2lkIGVtaXRTdG9yZUNlbGwo
aW50IGRzdCwgUmVnaXN0ZXJJRCBwYXlsb2FkLCBib29sIC8qIG9ubHkgdXNlZCBpbiBKU1ZhbHVl
MzJfNjQgKi8gPSBmYWxzZSkKICAgICAgICAgewogICAgICAgICAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3Rlcihkc3QsIHBheWxvYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50MzJfdCBnZXRD
b25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQodW5zaWduZWQgc3JjKTsKKyAgICAgICAgaW50MzJf
dCBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQoaW50IHNyYyk7CiAKICAgICAgICAgdm9p
ZCBraWxsTGFzdFJlc3VsdFJlZ2lzdGVyKCk7CiAKQEAgLTYwOSw4ICs2MDksOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7CiAKICAgICAgICAgdm9pZCBlbWl0VGFnQXNCb29s
SW1tZWRpYXRlKFJlZ2lzdGVySUQgcmVnKTsKLSAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5QXJp
dGhPcChPcGNvZGVJRCwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBzcmMxLCB1bnNpZ25lZCBzcmMy
LCBPcGVyYW5kVHlwZXMgb3BpKTsKLSAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5QXJpdGhPcFNs
b3dDYXNlKEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImLCB1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIHNyYzEsIHVuc2lnbmVkIHNyYzIsIE9wZXJh
bmRUeXBlcywgYm9vbCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSwgYm9vbCBvcDJIYXNJbW1l
ZGlhdGVJbnRGYXN0Q2FzZSk7CisgICAgICAgIHZvaWQgY29tcGlsZUJpbmFyeUFyaXRoT3AoT3Bj
b2RlSUQsIGludCBkc3QsIGludCBzcmMxLCBpbnQgc3JjMiwgT3BlcmFuZFR5cGVzIG9waSk7Cisg
ICAgICAgIHZvaWQgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShJbnN0cnVjdGlvbiosIE9w
Y29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgaW50IGRzdCwgaW50IHNy
YzEsIGludCBzcmMyLCBPcGVyYW5kVHlwZXMsIGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENh
c2UsIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOwogCiAgICAgICAgIHZvaWQgY29t
cGlsZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlVlJlZywgY29uc3QgSWRlbnRpZmllciopOwogICAg
ICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBiYXNl
VlJlZywgY29uc3QgSWRlbnRpZmllciosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KTsKQEAgLTYzNSw4ICs2MzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgRU5EX1VOSU5U
RVJSVVBURURfU0VRVUVOQ0VfRk9SX1BVVChuYW1lLCBkc3QpCiAjZW5kaWYKIAotICAgICAgICB2
b2lkIGVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQg
b3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24pOwotICAgICAgICB2b2lk
IGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNp
Z25lZCB0YXJnZXQsIERvdWJsZUNvbmRpdGlvbiwgaW50IChKSVRfU1RVQiAqc3R1YikoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSwgYm9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCBpbnQg
b3AxLCBpbnQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24pOworICAg
ICAgICB2b2lkIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBvcDEsIGludCBvcDIsIHVuc2ln
bmVkIHRhcmdldCwgRG91YmxlQ29uZGl0aW9uLCBpbnQgKEpJVF9TVFVCICpzdHViKShTVFVCX0FS
R1NfREVDTEFSQVRJT04pLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogCiAgICAgICAgIHZvaWQgZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2JpdGFuZChJbnN0cnVjdGlvbiopOwpAQCAtNzk0LDE2ICs3OTQsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZShJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBib29sIGlzVW5z
aWduZWQpOwogCiAgICAgICAgIHZvaWQgZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MpOwotICAgICAgICB2b2lkIGVtaXRSZXNvbHZlQ2xvc3VyZSh1bnNp
Z25lZCBkc3QsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRoKTsK
LSAgICAgICAgdm9pZCBlbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayh1bnNpZ25lZCBzY29wZSwg
U3RydWN0dXJlKiogc3RydWN0dXJlU2xvdCk7CisgICAgICAgIHZvaWQgZW1pdFJlc29sdmVDbG9z
dXJlKGludCBkc3QsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRo
KTsKKyAgICAgICAgdm9pZCBlbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhpbnQgc2NvcGUsIFN0
cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QpOwogICAgICAgICB2b2lkIGVtaXRHZXRHbG9iYWxQcm9w
ZXJ0eSh1aW50cHRyX3QqIG9wZXJhbmRTbG90KTsKICAgICAgICAgdm9pZCBlbWl0R2V0R2xvYmFs
VmFyKHVpbnRwdHJfdCBvcGVyYW5kKTsKLSAgICAgICAgdm9pZCBlbWl0R2V0Q2xvc3VyZVZhcih1
bnNpZ25lZCBzY29wZSwgdWludHB0cl90IG9wZXJhbmQpOwotICAgICAgICB2b2lkIGVtaXRQdXRH
bG9iYWxQcm9wZXJ0eSh1aW50cHRyX3QqIG9wZXJhbmRTbG90LCB1bnNpZ25lZCB2YWx1ZSk7Ci0g
ICAgICAgIHZvaWQgZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgdW5zaWduZWQg
dmFsdWUpOwotICAgICAgICB2b2lkIGVtaXRQdXRDbG9zdXJlVmFyKHVuc2lnbmVkIHNjb3BlLCB1
aW50cHRyX3Qgb3BlcmFuZCwgdW5zaWduZWQgdmFsdWUpOworICAgICAgICB2b2lkIGVtaXRHZXRD
bG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0cl90IG9wZXJhbmQpOworICAgICAgICB2b2lkIGVt
aXRQdXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyX3QqIG9wZXJhbmRTbG90LCBpbnQgdmFsdWUpOwor
ICAgICAgICB2b2lkIGVtaXRQdXRHbG9iYWxWYXIodWludHB0cl90IG9wZXJhbmQsIGludCB2YWx1
ZSk7CisgICAgICAgIHZvaWQgZW1pdFB1dENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qg
b3BlcmFuZCwgaW50IHZhbHVlKTsKIAotICAgICAgICB2b2lkIGVtaXRJbml0UmVnaXN0ZXIodW5z
aWduZWQgZHN0KTsKKyAgICAgICAgdm9pZCBlbWl0SW5pdFJlZ2lzdGVyKGludCBkc3QpOwogCiAg
ICAgICAgIHZvaWQgZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOwogICAgICAgICB2b2lkIGVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5LCBSZWdpc3Rl
cklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC04MTIsOSAr
ODEyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXI2NChKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywg
UmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogI2VuZGlmCiAKLSAgICAgICAg
SlNWYWx1ZSBnZXRDb25zdGFudE9wZXJhbmQodW5zaWduZWQgc3JjKTsKLSAgICAgICAgYm9vbCBp
c09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludCh1bnNpZ25lZCBzcmMpOwotICAgICAgICBib29s
IGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcih1bnNpZ25lZCBzcmMpOworICAgICAgICBK
U1ZhbHVlIGdldENvbnN0YW50T3BlcmFuZChpbnQgc3JjKTsKKyAgICAgICAgYm9vbCBpc09wZXJh
bmRDb25zdGFudEltbWVkaWF0ZUludChpbnQgc3JjKTsKKyAgICAgICAgYm9vbCBpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUNoYXIoaW50IHNyYyk7CiAKICAgICAgICAgYm9vbCBhdEp1bXBUYXJn
ZXQoKTsKIApAQCAtODUyLDcgKzg1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgIHZvaWQgcHJpbnRCeXRlY29kZU9wZXJhbmRUeXBlcyh1bnNp
Z25lZCBzcmMxLCB1bnNpZ25lZCBzcmMyKTsKKyAgICAgICAgdm9pZCBwcmludEJ5dGVjb2RlT3Bl
cmFuZFR5cGVzKGludCBzcmMxLCBpbnQgc3JjMik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTQU1Q
TElOR19GTEFHUykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
YzMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHAJKHJldmlzaW9uIDE1NTM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsOCAr
NTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOwogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShJbnN0cnVjdGlvbiogY3UKIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX25lZ2F0ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIDB4
N2ZmZmZmZmYgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGRvdWJsZSBjaGVjawpA
QCAtODYsNyArODYsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKEluc3RydWN0aW9u
CiAgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9j
b21wYXJlQW5kSnVtcChPcGNvZGVJRCBvcGNvZGUsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3Ay
LCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQordm9pZCBK
SVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgb3AxLCBpbnQgb3Ay
LCB1bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAg
IEp1bXBMaXN0IG5vdEludDMyT3AxOwogICAgIEp1bXBMaXN0IG5vdEludDMyT3AyOwpAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlEIG8KICAg
ICBlbmQubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93
KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRp
dGlvbiwgaW50IChKSVRfU1RVQiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSwgYm9vbCBp
bnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lkIEpJVDo6
ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQgdGFyZ2V0
LCBEb3VibGVDb25kaXRpb24sIGludCAoSklUX1NUVUIgKnN0dWIpKFNUVUJfQVJHU19ERUNMQVJB
VElPTiksIGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewogICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUNoYXIob3AxKSB8fCBpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUNoYXIob3AyKSkgewogICAgICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CkBAIC0xNjksOSArMTY5LDkgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBT
bG93KHVuc2lnbgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAg
ICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3Ay
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CiAgICAgICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEs
IHJlZ1QwKTsKQEAgLTE5MSw5ICsxOTEsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQoSW5z
dHJ1Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBp
bnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGlmICghaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkKICAg
ICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawpAQCAtMjA4LDkgKzIwOCw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6
OmVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIGJvb2wgaXNV
bnNpZ25lZCkKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
KyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIC8vIFNsb3cgY2FzZSBvZiByc2hp
ZnQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCByZWdpc3RlcnMgaG9sZCB0aGUKICAgICAv
LyBzaGlmdCBhcmd1bWVudHMsIHNvIGFueSBjaGFuZ2VzIG11c3QgYmUgdXBkYXRlZCB0aGVyZSBh
cyB3ZWxsLgpAQCAtMjQyLDkgKzI0Miw5IEBAIHZvaWQgSklUOjplbWl0UmlnaHRTaGlmdChJbnN0
cnVjdGlvbiogY3UKIAogdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlciwgYm9vbCBpc1Vuc2lnbmVkKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIGlmIChpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CiAgICAgICAgIGludCBzaGlmdCA9IGdl
dENvbnN0YW50T3BlcmFuZChvcDIpLmFzSW50MzIoKSAmIDB4MWY7CiAgICAgICAgIC8vIG9wMSA9
IHJlZ1QxOnJlZ1QwCkBAIC0zMjksMTEgKzMyOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
dXJzaGlmdChJbnN0cnVjdGlvCiAKIHZvaWQgSklUOjplbWl0X29wX2JpdGFuZChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgdW5zaWdu
ZWQgb3A7CisgICAgaW50IG9wOwogICAgIGludDMyX3QgY29uc3RhbnQ7CiAgICAgaWYgKGdldE9w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEsIG9wMiwgb3AsIGNvbnN0YW50KSkgewogICAg
ICAgICBlbWl0TG9hZChvcCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTM1Miw5ICszNTIsOSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0U2xv
d19vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
KyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGlm
ICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVJbnQob3AyKSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQz
MiBjaGVjawpAQCAtMzY5LDExICszNjksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdGFu
ZChJbnN0cnVjdGlvbgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwor
ICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBv
cDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgdW5zaWduZWQgb3A7
CisgICAgaW50IG9wOwogICAgIGludDMyX3QgY29uc3RhbnQ7CiAgICAgaWYgKGdldE9wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludChvcDEsIG9wMiwgb3AsIGNvbnN0YW50KSkgewogICAgICAgICBl
bWl0TG9hZChvcCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTM5Miw5ICszOTIsOSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9iaXRvcihJbnN0cnVjdGlvbiogY3VyCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9i
aXRvcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGlu
dCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgaWYgKCFpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludChvcDIpKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNr
CkBAIC00MDksMTEgKzQwOSwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYml0b3IoSW5zdHJ1
Y3Rpb24qCiAKIHZvaWQgSklUOjplbWl0X29wX2JpdHhvcihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
OworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGlu
dCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgdW5zaWduZWQgb3A7CisgICAg
aW50IG9wOwogICAgIGludDMyX3QgY29uc3RhbnQ7CiAgICAgaWYgKGdldE9wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZUludChvcDEsIG9wMiwgb3AsIGNvbnN0YW50KSkgewogICAgICAgICBlbWl0TG9h
ZChvcCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTQzMiw5ICs0MzIsOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9iaXR4b3IoSW5zdHJ1Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXR4b3Io
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAg
ICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3Ay
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGlmICghaXNPcGVyYW5k
Q29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJ
bnQob3AyKSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawpAQCAt
NDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXR4b3IoSW5zdHJ1Y3Rpb24K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAog
ICAgIGVtaXRMb2FkKHNyY0RzdCwgcmVnVDEsIHJlZ1QwKTsKIApAQCAtNDU4LDcgKzQ1OCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHNyY0RzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGlu
dDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBvdmVyZmxvdyBjaGVjawpAQCAt
NDcwLDcgKzQ3MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbmMoSW5zdHJ1Y3Rpb24qIGMK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZGVjKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAog
ICAgIGVtaXRMb2FkKHNyY0RzdCwgcmVnVDEsIHJlZ1QwKTsKIApAQCAtNDgxLDcgKzQ4MSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIHNyY0RzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHNyY0RzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGlu
dDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBvdmVyZmxvdyBjaGVjawpAQCAt
NDk1LDkgKzQ5NSw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24qIGMK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
LSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAg
IHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5
cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYg
KCF0eXBlcy5maXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8fCAhdHlwZXMuc2Vjb25kKCkubWlnaHRC
ZU51bWJlcigpKSB7CkBAIC01MTAsNyArNTEwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKElu
c3RydWN0aW9uKiBjdXJyZQogICAgIEp1bXBMaXN0IG5vdEludDMyT3AxOwogICAgIEp1bXBMaXN0
IG5vdEludDMyT3AyOwogCi0gICAgdW5zaWduZWQgb3A7CisgICAgaW50IG9wOwogICAgIGludDMy
X3QgY29uc3RhbnQ7CiAgICAgaWYgKGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEs
IG9wMiwgb3AsIGNvbnN0YW50KSkgewogICAgICAgICBlbWl0QWRkMzJDb25zdGFudChkc3QsIG9w
LCBjb25zdGFudCwgb3AgPT0gb3AxID8gdHlwZXMuZmlyc3QoKSA6IHR5cGVzLnNlY29uZCgpKTsK
QEAgLTUzNyw3ICs1MzcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qIGN1
cnJlCiAgICAgZW5kLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0QWRkMzJDb25zdGFu
dCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9wLCBpbnQzMl90IGNvbnN0YW50LCBSZXN1bHRUeXBl
IG9wVHlwZSkKK3ZvaWQgSklUOjplbWl0QWRkMzJDb25zdGFudChpbnQgZHN0LCBpbnQgb3AsIGlu
dDMyX3QgY29uc3RhbnQsIFJlc3VsdFR5cGUgb3BUeXBlKQogewogICAgIC8vIEludDMyIGNhc2Uu
CiAgICAgZW1pdExvYWQob3AsIHJlZ1QxLCByZWdUMik7CkBAIC01NjYsOSArNTY2LDkgQEAgdm9p
ZCBKSVQ6OmVtaXRBZGQzMkNvbnN0YW50KHVuc2lnbmVkIGRzdAogCiB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgT3BlcmFu
ZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmQpOwogCiAgICAgaWYgKCF0eXBlcy5maXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8
fCAhdHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigpKSB7CkBAIC01NzYsNyArNTc2LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiogYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdW5zaWduZWQgb3A7CisgICAgaW50IG9wOwogICAgIGludDMyX3QgY29u
c3RhbnQ7CiAgICAgaWYgKGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEsIG9wMiwg
b3AsIGNvbnN0YW50KSkgewogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG92ZXJmbG93
IGNoZWNrCkBAIC02MTQsOSArNjE0LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0
cnVjdGlvbiogYwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMg
PSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7
CiAKICAgICBKdW1wTGlzdCBub3RJbnQzMk9wMTsKQEAgLTY0Nyw3ICs2NDcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgZW5kLmxpbmsodGhpcyk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U3ViMzJDb25zdGFudCh1bnNpZ25lZCBkc3QsIHVuc2lnbmVkIG9w
LCBpbnQzMl90IGNvbnN0YW50LCBSZXN1bHRUeXBlIG9wVHlwZSkKK3ZvaWQgSklUOjplbWl0U3Vi
MzJDb25zdGFudChpbnQgZHN0LCBpbnQgb3AsIGludDMyX3QgY29uc3RhbnQsIFJlc3VsdFR5cGUg
b3BUeXBlKQogewogICAgIC8vIEludDMyIGNhc2UuCiAgICAgZW1pdExvYWQob3AsIHJlZ1QxLCBy
ZWdUMCk7CkBAIC02ODEsOCArNjgxLDggQEAgdm9pZCBKSVQ6OmVtaXRTdWIzMkNvbnN0YW50KHVu
c2lnbmVkIGRzdAogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7
Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAg
ICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9
IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsK
IAogICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CkBAIC03MTIs
NyArNzEyLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N1YihJbnN0cnVjdGlvbiogYwogICAg
IGVtaXRMb2FkKGRzdCwgcmVnVDEsIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRCaW5hcnlE
b3VibGVPcChPcGNvZGVJRCBvcGNvZGVJRCwgdW5zaWduZWQgZHN0LCB1bnNpZ25lZCBvcDEsIHVu
c2lnbmVkIG9wMiwgT3BlcmFuZFR5cGVzIHR5cGVzLCBKdW1wTGlzdCYgbm90SW50MzJPcDEsIEp1
bXBMaXN0JiBub3RJbnQzMk9wMiwgYm9vbCBvcDFJc0luUmVnaXN0ZXJzLCBib29sIG9wMklzSW5S
ZWdpc3RlcnMpCit2b2lkIEpJVDo6ZW1pdEJpbmFyeURvdWJsZU9wKE9wY29kZUlEIG9wY29kZUlE
LCBpbnQgZHN0LCBpbnQgb3AxLCBpbnQgb3AyLCBPcGVyYW5kVHlwZXMgdHlwZXMsIEp1bXBMaXN0
JiBub3RJbnQzMk9wMSwgSnVtcExpc3QmIG5vdEludDMyT3AyLCBib29sIG9wMUlzSW5SZWdpc3Rl
cnMsIGJvb2wgb3AySXNJblJlZ2lzdGVycykKIHsKICAgICBKdW1wTGlzdCBlbmQ7CiAKQEAgLTk0
MCw5ICs5NDAsOSBAQCB2b2lkIEpJVDo6ZW1pdEJpbmFyeURvdWJsZU9wKE9wY29kZUlEIG9wCiAK
IHZvaWQgSklUOjplbWl0X29wX211bChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGludCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBl
czo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKQEAgLTk3Niw5ICs5NzYsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9t
dWwoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9tdWwoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
KyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBP
cGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAK
ICAgICBKdW1wIG92ZXJmbG93ID0gZ2V0U2xvd0Nhc2UoaXRlcik7IC8vIG92ZXJmbG93IGNoZWNr
CkBAIC0xMDIyLDkgKzEwMjIsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0
aW9uKiBjCiAKIHZvaWQgSklUOjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwor
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBv
cDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9w
ZXJhbmRUeXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAog
I2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTEwODUsNyArMTA4NSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2RpdihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CiAKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21J
bnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKQEAgLTExMTMsOSArMTExMyw5
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9kaXYoSW5zdHJ1Y3Rpb24qIGMKIHZvaWQgSklUOjpl
bWl0X29wX21vZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCi0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9w
MiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICAvLyBNYWtlIHN1cmUg
cmVnaXN0ZXJzIGFyZSBjb3JyZWN0IGZvciB4ODYgSURJViBpbnN0cnVjdGlvbnMuCiAgICAgQVNT
RVJUKHJlZ1QwID09IFg4NlJlZ2lzdGVyczo6ZWF4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMTU1MzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfamxlc3Mo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBvcDEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKIAogICAgIGVtaXRfY29tcGFyZUFuZEp1bXAob3Bfamxlc3MsIG9wMSwgb3AyLCB0
YXJnZXQsIExlc3NUaGFuKTsKQEAgLTU5LDggKzU5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfamxl
c3MoSW5zdHJ1Y3Rpb24qIGN1cgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbGVzc2VxKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7
CiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2psZXNzZXEsIG9wMSwgb3AyLCB0YXJnZXQs
IExlc3NUaGFuT3JFcXVhbCk7CkBAIC02OCw4ICs2OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2ps
ZXNzZXEoSW5zdHJ1Y3Rpb24qIGMKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamdyZWF0ZXIoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKIAogICAgIGVtaXRfY29tcGFyZUFuZEp1bXAob3BfamdyZWF0ZXIsIG9wMSwgb3AyLCB0YXJn
ZXQsIEdyZWF0ZXJUaGFuKTsKQEAgLTc3LDggKzc3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfamdy
ZWF0ZXIoSW5zdHJ1Y3Rpb24qIAogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qZ3JlYXRlcmVxKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2pncmVhdGVyZXEsIG9wMSwgb3AyLCB0
YXJnZXQsIEdyZWF0ZXJUaGFuT3JFcXVhbCk7CkBAIC04Niw4ICs4Niw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2pncmVhdGVyZXEoSW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfam5sZXNz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgb3AxID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7CiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2pubGVzcywgb3AxLCBvcDIs
IHRhcmdldCwgR3JlYXRlclRoYW5PckVxdWFsKTsKQEAgLTk1LDggKzk1LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfam5sZXNzKEluc3RydWN0aW9uKiBjdQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbmxl
c3NlcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIG9w
MSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogCiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcChvcF9qbmxlc3NlcSwgb3Ax
LCBvcDIsIHRhcmdldCwgR3JlYXRlclRoYW4pOwpAQCAtMTA0LDggKzEwNCw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2pubGVzc2VxKEluc3RydWN0aW9uKiAKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfam5n
cmVhdGVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2puZ3JlYXRlciwg
b3AxLCBvcDIsIHRhcmdldCwgTGVzc1RoYW5PckVxdWFsKTsKQEAgLTExMyw4ICsxMTMsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9qbmdyZWF0ZXIoSW5zdHJ1Y3Rpb24qCiAKIHZvaWQgSklUOjplbWl0
X29wX2puZ3JlYXRlcmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAg
dW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNp
Z25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDEg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wKG9wX2pu
Z3JlYXRlcmVxLCBvcDEsIG9wMiwgdGFyZ2V0LCBMZXNzVGhhbik7CkBAIC0xMjIsOCArMTIyLDgg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5ncmVhdGVyZXEoSW5zdHJ1Y3RpbwogCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfamxlc3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBvcDEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKIAogICAgIGVtaXRfY29tcGFyZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQs
IERvdWJsZUxlc3NUaGFuLCBjdGlfb3Bfamxlc3MsIGZhbHNlLCBpdGVyKTsKQEAgLTEzMSw4ICsx
MzEsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfamxlc3MoSW5zdHJ1Y3Rpb24qCiAKIHZvaWQg
SklUOjplbWl0U2xvd19vcF9qbGVzc2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhvcDEsIG9wMiwg
dGFyZ2V0LCBEb3VibGVMZXNzVGhhbk9yRXF1YWwsIGN0aV9vcF9qbGVzc2VxLCBmYWxzZSwgaXRl
cik7CkBAIC0xNDAsOCArMTQwLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2psZXNzZXEoSW5z
dHJ1Y3RpbwogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamdyZWF0ZXIoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwot
ICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAg
aW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdGFyZ2V0ID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRfY29tcGFyZUFuZEp1
bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUdyZWF0ZXJUaGFuLCBjdGlfb3BfamdyZWF0
ZXIsIGZhbHNlLCBpdGVyKTsKQEAgLTE0OSw4ICsxNDksOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfamdyZWF0ZXIoSW5zdHJ1Y3RpCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9qZ3JlYXRlcmVx
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIHVu
c2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBl
bWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhvcDEsIG9wMiwgdGFyZ2V0LCBEb3VibGVHcmVhdGVyVGhh
bk9yRXF1YWwsIGN0aV9vcF9qZ3JlYXRlcmVxLCBmYWxzZSwgaXRlcik7CkBAIC0xNTgsOCArMTU4
LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pncmVhdGVyZXEoSW5zdHJ1YwogCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3Bfam5sZXNzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgb3Ax
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhvcDEsIG9wMiwgdGFy
Z2V0LCBEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgY3RpX29wX2psZXNzLCB0
cnVlLCBpdGVyKTsKQEAgLTE2Nyw4ICsxNjcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5s
ZXNzKEluc3RydWN0aW9uCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCB0
YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgZW1pdF9jb21w
YXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwgRG91YmxlR3JlYXRlclRoYW5PclVub3Jk
ZXJlZCwgY3RpX29wX2psZXNzZXEsIHRydWUsIGl0ZXIpOwpAQCAtMTc2LDggKzE3Niw4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9qbmxlc3NlcShJbnN0cnVjdGkKIAogdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2puZ3JlYXRlcihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIG9wMSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kOwogCiAgICAgZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cob3AxLCBvcDIsIHRhcmdldCwg
RG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIGN0aV9vcF9qZ3JlYXRlciwgdHJ1ZSwg
aXRlcik7CkBAIC0xODUsOCArMTg1LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRl
cihJbnN0cnVjdAogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50
IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdGFy
Z2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93KG9wMSwgb3AyLCB0YXJnZXQsIERvdWJsZUxlc3NUaGFuT3JVbm9yZGVyZWQs
IGN0aV9vcF9qZ3JlYXRlcmVxLCB0cnVlLCBpdGVyKTsKQEAgLTE5Niw4ICsxOTYsOCBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3Bfam5ncmVhdGVyZXEoSW5zdHJ1CiAKIHZvaWQgSklUOjplbWl0X29w
X25lZ2F0ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVk
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3Jj
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3JjID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdU
MCk7CiAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoSW5zdHJ1
Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyAweDdmZmZmZmZmIGNoZWNrCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBkb3VibGUgY2hlY2sKQEAgLTIzMiw5ICsyMzIsOSBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbmVnYXRlKEluc3RydWN0aW9uCiAKIHZvaWQgSklUOjplbWl0X29wX2xzaGlm
dChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMob3AxLCByZWdUMCwgb3AyLCByZWdU
Mik7CiAgICAgLy8gRklYTUU6IHdvdWxkIHdlIGJlIGJldHRlciB1c2luZyAnZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMnPyAtIHdlICpwcm9iYWJseSogb3VnaHQgdG8gYmUg
Y29uc2lzdGVudC4KQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sc2hpZnQo
SW5zdHJ1Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9sc2hpZnQoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKQEAg
LTI2MCw5ICsyNjAsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KEluc3RydWN0aW9u
CiAKIHZvaWQgSklUOjplbWl0X29wX3JzaGlmdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwor
ICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGlu
dCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlSW50KG9wMikpIHsKICAgICAgICAgLy8gaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQob3AyKSA9PiAxIFNsb3dDYXNlCkBAIC0yOTUsOSArMjk1LDkgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcnNoaWZ0KEluc3RydWN0aW9uKiBjdQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cnNoaWZ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CisgICAgaW50IHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBV
TlVTRURfUEFSQU0ob3AxKTsKIApAQCAtMzIyLDkgKzMyMiw5IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9yc2hpZnQoSW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OworICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAg
Ly8gU2xvdyBjYXNlIG9mIHVyc2hpZnQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCByZWdp
c3RlcnMgaG9sZCB0aGUKICAgICAvLyBzaGlmdCBhcmd1bWVudHMsIHNvIGFueSBjaGFuZ2VzIG11
c3QgYmUgdXBkYXRlZCB0aGVyZSBhcyB3ZWxsLgpAQCAtMzU4LDkgKzM1OCw5IEBAIHZvaWQgSklU
OjplbWl0X29wX3Vyc2hpZnQoSW5zdHJ1Y3Rpb24qIGMKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3Vyc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgewogICAgICAgICBpbnQgc2hpZnQgPSBn
ZXRDb25zdGFudE9wZXJhbmQob3AyKS5hc0ludDMyKCk7CiAgICAgICAgIC8vIG9wMSA9IHJlZ1Qw
CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Vyc2hpZnQoSW5zdHJ1
Y3RpbwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVk
IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3Zv
aWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCBpbnQgb3AxLCBpbnQgb3AyLCB1
bnNpZ25lZCB0YXJnZXQsIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQogewogICAgIC8v
IFdlIGdlbmVyYXRlIGlubGluZSBjb2RlIGZvciB0aGUgZm9sbG93aW5nIGNhc2VzIGluIHRoZSBm
YXN0IHBhdGg6CiAgICAgLy8gLSBpbnQgaW1tZWRpYXRlIHRvIGNvbnN0YW50IGludCBpbW1lZGlh
dGUKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNv
ZGVJRCwgCiAgICAgfQogfQogCi12b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3codW5z
aWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIHVuc2lnbmVkIHRhcmdldCwgRG91YmxlQ29uZGl0aW9u
IGNvbmRpdGlvbiwgaW50IChKSVRfU1RVQiAqc3R1YikoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSwg
Ym9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit2b2lk
IEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50IG9wMiwgdW5zaWduZWQg
dGFyZ2V0LCBEb3VibGVDb25kaXRpb24gY29uZGl0aW9uLCBpbnQgKEpJVF9TVFVCICpzdHViKShT
VFVCX0FSR1NfREVDTEFSQVRJT04pLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RIKG9w
X2psZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2psZXNzZXEpLCBPUENPREVfTEVOR1RIX29wX2ps
ZXNzZXFfZXF1YWxzX29wX2psZXNzKTsKICAgICBDT01QSUxFX0FTU0VSVChPUENPREVfTEVOR1RI
KG9wX2psZXNzKSA9PSBPUENPREVfTEVOR1RIKG9wX2pubGVzcyksIE9QQ09ERV9MRU5HVEhfb3Bf
am5sZXNzX2VxdWFsc19vcF9qbGVzcyk7CkBAIC01NjcsOSArNTY3LDkgQEAgdm9pZCBKSVQ6OmVt
aXRfY29tcGFyZUFuZEp1bXBTbG93KHVuc2lnbgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRhbmQo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCByZXN1bHQg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgcmVzdWx0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKIAogICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CiAgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMCk7CkBAIC01OTUsNyArNTk1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfYml0YW5kKEluc3RydWN0aW9uKiBjdQogCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgcmVzdWx0
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgcmVzdWx0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
IApAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1
Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKKyAgICBpbnQgc3JjRHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCByZWdUMCk7CiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7CkBAIC02MTcsNyArNjE3
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZQogCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgc3JjRHN0
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3JjRHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX2luYyhJbnN0cnVjdGlvbiogYwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9kZWMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBzcmNEc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBzcmNEc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihz
cmNEc3QsIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2Vy
KHJlZ1QwKTsKQEAgLTYzOSw3ICs2MzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWMoSW5zdHJ1
Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9kZWMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKQEAgLTY1NCw5
ICs2NTQsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVjKEluc3RydWN0aW9uKiBjCiAKIHZv
aWQgSklUOjplbWl0X29wX21vZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGludCBy
ZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgLy8gTWFrZSBzdXJlIHJlZ2lzdGVycyBhcmUg
Y29ycmVjdCBmb3IgeDg2IElESVYgaW5zdHJ1Y3Rpb25zLgogICAgIEFTU0VSVChyZWdUMCA9PSBY
ODZSZWdpc3RlcnM6OmVheCk7CkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bW9kKEluc3RydWN0aW9uKiBjdXJyZQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBpbnQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CkBAIC02OTksOSArNjk5LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChJbnN0cnVjdGlv
biogYwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
KyAgICBpbnQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIFVOVVNFRF9QQVJBTShvcDEp
OwogICAgIFVOVVNFRF9QQVJBTShvcDIpOwpAQCAtNzIyLDcgKzcyMiw3IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9tb2QoSW5zdHJ1Y3Rpb24qIGMKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEJFR0lOOiBVU0UoSlNWQUxVRTY0KSAoT1BfQURELCBPUF9TVUIsIE9QX01VTCkg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXZvaWQgSklUOjpjb21waWxlQmlu
YXJ5QXJpdGhPcChPcGNvZGVJRCBvcGNvZGVJRCwgdW5zaWduZWQsIHVuc2lnbmVkIG9wMSwgdW5z
aWduZWQgb3AyLCBPcGVyYW5kVHlwZXMpCit2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3Ao
T3Bjb2RlSUQgb3Bjb2RlSUQsIGludCwgaW50IG9wMSwgaW50IG9wMiwgT3BlcmFuZFR5cGVzKQog
ewogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKG9wMSwgcmVnVDAsIG9wMiwgcmVnVDEpOwog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOwpAQCAtNzY4
LDcgKzc2OCw3IEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcChPcGNvZGVJRCAKICAg
ICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7CiB9CiAKLXZvaWQg
SklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIE9wY29kZUlEIG9wY29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCB1bnNpZ25lZCByZXN1bHQsIHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCBP
cGVyYW5kVHlwZXMgdHlwZXMsIGJvb2wgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIGJvb2wg
b3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpCit2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRo
T3BTbG93Q2FzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgaW50IHJlc3VsdCwg
aW50IG9wMSwgaW50IG9wMiwgT3BlcmFuZFR5cGVzIHR5cGVzLCBib29sIG9wMUhhc0ltbWVkaWF0
ZUludEZhc3RDYXNlLCBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKQogewogICAgIC8v
IFdlIGFzc3VtZSB0aGF0IHN1YnRyYWN0aW5nIFRhZ1R5cGVOdW1iZXIgaXMgZXF1aXZhbGVudCB0
byBhZGRpbmcgRG91YmxlRW5jb2RlT2Zmc2V0LgogICAgIENPTVBJTEVfQVNTRVJUKCgoVGFnVHlw
ZU51bWJlciArIERvdWJsZUVuY29kZU9mZnNldCkgPT0gMCksIFRhZ1R5cGVOdW1iZXJfUExVU19E
b3VibGVFbmNvZGVPZmZzZXRfRVFVQUxTXzApOwpAQCAtODU0LDkgKzg1NCw5IEBAIHZvaWQgSklU
Ojpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKEkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfYWRk
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgcmVzdWx0
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IHJlc3VsdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYgKCF0eXBlcy5maXJzdCgpLm1p
Z2h0QmVOdW1iZXIoKSB8fCAhdHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigpKSB7CkBAIC04
ODQsOSArODg0LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJyZQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWdu
ZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25l
ZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9w
MiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IHJlc3VsdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9t
SW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCiAgICAgaWYgKCF0eXBlcy5m
aXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSB8fCAhdHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigp
KSB7CkBAIC05MDEsOSArOTAxLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0cnVj
dGlvbiogYwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKKyAgICBpbnQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAg
ICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3Ay
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlw
ZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZCk7CiAKICAgICAvLyBGb3Igbm93LCBvbmx5IHBsYW50IGEgZmFzdCBpbnQgY2FzZSBpZiB0aGUg
Y29uc3RhbnQgb3BlcmFuZCBpcyBncmVhdGVyIHRoYW4gemVyby4KQEAgLTkzNCw5ICs5MzQsOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
ICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKICAgICBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZh
c3RDYXNlID0gaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSAmJiBnZXRDb25zdGFu
dE9wZXJhbmRJbW1lZGlhdGVJbnQob3AxKSA+IDA7CkBAIC05NDYsOSArOTQ2LDkgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX211bChJbnN0cnVjdGlvbiogYwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9k
aXYoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
ICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVEb3VibGUob3AxKSkgewpAQCAtMTAyOCw5ICsxMDI4LDkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZGl2KEluc3RydWN0aW9uKiBjdXJyZQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGl2KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CisgICAgaW50IHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50
IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgT3BlcmFuZFR5cGVz
IHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9w
ZXJhbmQpOwogICAgIGlmICh0eXBlcy5maXJzdCgpLmRlZmluaXRlbHlJc051bWJlcigpICYmIHR5
cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJc051bWJlcigpKSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAt
MTA1NCw5ICsxMDU0LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2RpdihJbnN0cnVjdGlvbiog
YwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwotICAgIHVuc2lnbmVkIG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
Ci0gICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAg
ICBpbnQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgb3AyID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBP
cGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAK
ICAgICBjb21waWxlQmluYXJ5QXJpdGhPcChvcF9zdWIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVz
KTsKQEAgLTEwNjUsOSArMTA2NSw5IEBAIHZvaWQgSklUOjplbWl0X29wX3N1YihJbnN0cnVjdGlv
biogY3VycmUKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N1YihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGludCBy
ZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBvcDEgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBvcDIgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRU
eXBlczo6ZnJvbUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAogICAgIGNv
bXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoY3VycmVudEluc3RydWN0aW9uLCBvcF9zdWIsIGl0
ZXIsIHJlc3VsdCwgb3AxLCBvcDIsIHR5cGVzLCBmYWxzZSwgZmFsc2UpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE1NTM1MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
MiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6
OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKHVuc2lnbmVkIHNyYykKK0FMV0FZU19J
TkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlRG91YmxlKGludCBzcmMp
CiB7CiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMp
ICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzRG91YmxlKCk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBKSVQ6OmdldENvbnN0YW50T3BlcmFuZCh1bnNpZ25lZCBzcmMpCitBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgSklUOjpnZXRDb25zdGFudE9wZXJhbmQoaW50IHNyYykKIHsKICAgICBB
U1NFUlQobV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykpOwogICAgIHJl
dHVybiBtX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoc3JjKTsKQEAgLTMxNyw3ICszMTcsNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjpzYW1wbGVDb2RlQmxvY2soCiAjZW5kaWYKICNlbmRpZgog
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUNoYXIo
dW5zaWduZWQgc3JjKQorQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVDaGFyKGludCBzcmMpCiB7CiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzU3RyaW5n
KCkgJiYgYXNTdHJpbmcoZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNDZWxsKCkpLT5sZW5ndGgo
KSA9PSAxOwogfQpAQCAtNjEwLDcgKzYxMCw3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3Jl
KGludCBpbmRleCwgY28KICAgICBzdG9yZTMyKEltbTMyKGNvbnN0YW50LnRhZygpKSwgdGFnRm9y
KGluZGV4LCBiYXNlKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRJbml0UmVn
aXN0ZXIodW5zaWduZWQgZHN0KQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdp
c3RlcihpbnQgZHN0KQogewogICAgIGVtaXRTdG9yZShkc3QsIGpzVW5kZWZpbmVkKCkpOwogfQpA
QCAtNzEwLDEyICs3MTAsMTIgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZO
b3RKUwogICAgIH0KIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVJbnQodW5zaWduZWQgc3JjKQorQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IHNyYykKIHsKICAgICByZXR1cm4gbV9jb2Rl
QmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5k
KHNyYykuaXNJbnQzMigpOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSklUOjpnZXRPcGVyYW5k
Q29uc3RhbnRJbW1lZGlhdGVJbnQodW5zaWduZWQgb3AxLCB1bnNpZ25lZCBvcDIsIHVuc2lnbmVk
JiBvcCwgaW50MzJfdCYgY29uc3RhbnQpCitBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjpnZXRPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IG9wMSwgaW50IG9wMiwgaW50JiBvcCwgaW50MzJf
dCYgY29uc3RhbnQpCiB7CiAgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9w
MSkpIHsKICAgICAgICAgY29uc3RhbnQgPSBnZXRDb25zdGFudE9wZXJhbmQob3AxKS5hc0ludDMy
KCk7CkBAIC03MzYsOSArNzM2LDkgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6Z2V0T3BlcmFu
ZENvbnN0YQogCiAvKiBEZXByZWNhdGVkOiBQbGVhc2UgdXNlIEpJVFN0dWJDYWxsIGluc3RlYWQu
ICovCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRKSVRTdHViQXJnKHVuc2lnbmVk
IGFyZ3VtZW50TnVtYmVyLCBSZWdpc3RlcklEIGRzdCkKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmVtaXRHZXRKSVRTdHViQXJnKGludCBhcmd1bWVudE51bWJlciwgUmVnaXN0ZXJJRCBkc3QpCiB7
Ci0gICAgdW5zaWduZWQgYXJndW1lbnRTdGFja09mZnNldCA9IChhcmd1bWVudE51bWJlciAqIChz
aXplb2YoSlNWYWx1ZSkgLyBzaXplb2Yodm9pZCopKSkgKyBKSVRTVEFDS0ZSQU1FX0FSR1NfSU5E
RVg7CisgICAgaW50IGFyZ3VtZW50U3RhY2tPZmZzZXQgPSAoYXJndW1lbnROdW1iZXIgKiAoc2l6
ZW9mKEpTVmFsdWUpIC8gc2l6ZW9mKHZvaWQqKSkpICsgSklUU1RBQ0tGUkFNRV9BUkdTX0lOREVY
OwogICAgIHBlZWs2NChkc3QsIGFyZ3VtZW50U3RhY2tPZmZzZXQpOwogfQogCkBAIC03ODYsMjMg
Kzc4NiwyMyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0VmlydHVhbFJlCiAgICAg
fQogfQogCi1BTFdBWVNfSU5MSU5FIGludDMyX3QgSklUOjpnZXRDb25zdGFudE9wZXJhbmRJbW1l
ZGlhdGVJbnQodW5zaWduZWQgc3JjKQorQUxXQVlTX0lOTElORSBpbnQzMl90IEpJVDo6Z2V0Q29u
c3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KGludCBzcmMpCiB7CiAgICAgcmV0dXJuIGdldENvbnN0
YW50T3BlcmFuZChzcmMpLmFzSW50MzIoKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6
aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQodW5zaWduZWQgc3JjKQorQUxXQVlTX0lOTElO
RSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IHNyYykKIHsKICAg
ICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0
Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNJbnQzMigpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHVuc2lnbmVkIGRzdCwgUmVnaXN0ZXJJRCBmcm9t
KQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihpbnQgZHN0
LCBSZWdpc3RlcklEIGZyb20pCiB7CiAgICAgc3RvcmU2NChmcm9tLCBBZGRyZXNzKGNhbGxGcmFt
ZVJlZ2lzdGVyLCBkc3QgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci0gICAgbV9sYXN0UmVzdWx0Qnl0
ZWNvZGVSZWdpc3RlciA9IChmcm9tID09IGNhY2hlZFJlc3VsdFJlZ2lzdGVyKSA/IHN0YXRpY19j
YXN0PGludD4oZHN0KSA6IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgbV9s
YXN0UmVzdWx0Qnl0ZWNvZGVSZWdpc3RlciA9IChmcm9tID09IGNhY2hlZFJlc3VsdFJlZ2lzdGVy
KSA/IGRzdCA6IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiB9CiAKLUFMV0FZU19J
TkxJTkUgdm9pZCBKSVQ6OmVtaXRJbml0UmVnaXN0ZXIodW5zaWduZWQgZHN0KQorQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0KQogewogICAgIHN0b3JlNjQo
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIEFkZHJlc3MoY2Fs
bEZyYW1lUmVnaXN0ZXIsIGRzdCAqIHNpemVvZihSZWdpc3RlcikpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE1
NTM1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgyLDggKzE4Miw4IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZh
dGVDb21waWxlQ1RJTmF0aXYKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAg
ICAgaWYgKG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMpKQogICAgICAg
ICBlbWl0U3RvcmUoZHN0LCBnZXRDb25zdGFudE9wZXJhbmQoc3JjKSk7CkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoSW5zdHJ1YwogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICB1bnNpZ25lZCBiYXNlVmFsID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKKyAgICBpbnQgYmFzZVZhbCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CiAKICAgICBlbWl0TG9hZFBheWxvYWQoYmFzZVZhbCwgcmVnVDApOwogCkBAIC0yNDcsOSAr
MjQ3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKElucwogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
LSAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgcHJvdG8gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAg
IGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCB2YWx1
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHByb3RvID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIC8vIExvYWQgdGhlIG9wZXJhbmRz
IGludG8gcmVnaXN0ZXJzLgogICAgIC8vIFdlIHVzZSByZWdUMCBmb3IgYmFzZVZhbCBzaW5jZSB3
ZSB3aWxsIGJlIGRvbmUgd2l0aCB0aGlzIGZpcnN0LCBhbmQgd2UgY2FuIHRoZW4gdXNlIGl0IGZv
ciB0aGUgcmVzdWx0LgpAQCAtMjg3LDkgKzI4Nyw5IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3Rh
bmNlb2YoSW5zdHJ1Y3Rpb24KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX2hhc19pbnN0
YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CisgICAgaW50IGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAg
ICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZVZhbCk7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwpAQCAtMzA0LDkgKzMwNCw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVj
a19oYXNfaW5zdGFuY2UKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwotICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKLSAgICB1bnNpZ25lZCBwcm90byA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
aW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgcHJv
dG8gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgbGlua1Nsb3dDYXNl
SWZOb3RKU0NlbGwoaXRlciwgdmFsdWUpOwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0
ZXIsIHByb3RvKTsKQEAgLTMyMCw4ICszMjAsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5z
dGFuY2VvZihJbnN0cnVjCiAKIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CiAgICAgCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVt
cCBpc0NlbGwgPSBicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSk7CkBAIC0zNDcsOCArMzQ3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZp
bmVkKEluc3RydWN0aQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKICAgICAKICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwogICAgIGNvbXBhcmUzMihF
cXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwgcmVnVDApOwpA
QCAtMzU3LDggKzM1Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oSW5zdHJ1Y3Rp
b24KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAKICAg
ICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwogICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwg
cmVnVDApOwpAQCAtMzY4LDggKzM2OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihJ
bnN0cnVjdGlvbioKIAogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ICAgICAKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzTm90
Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19zdHJpbmco
SW5zdHJ1Y3Rpb24qCiAKIHZvaWQgSklUOjplbWl0X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBhY3RpdmF0aW9u
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYWN0aXZhdGlvbiA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgSnVtcCBhY3RpdmF0aW9uTm90
Q3JlYXRlZCA9IGJyYW5jaDMyKEVxdWFsLCB0YWdGb3IoYWN0aXZhdGlvbiksIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX3RlYXJfb2ZmX2FjdGl2YXRpb24pOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KGFjdGl2YXRpb24pOwpAQCAtNDQzLDggKzQ0Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX3N0cmNh
dChJbnN0cnVjdGlvbiogY3UKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAg
ICAgZW1pdExvYWRUYWcoc3JjLCByZWdUMCk7CiAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9ub3QoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9ub3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCkBAIC00NjgsNyArNDY4LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25vdChJbnN0cnVjdGlvbiogYwogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1
bnNpZ25lZCBjb25kID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQg
Y29uZCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdGFy
Z2V0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRMb2FkKGNv
bmQsIHJlZ1QxLCByZWdUMCk7CkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
amZhbHNlKEluc3RydWN0aW9uKiBjdQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfamZhbHNlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgY29uZCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CisgICAgaW50IGNvbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2pmYWxzZShJbnN0cnVjdGlvbgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9q
dHJ1ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGNv
bmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBjb25kID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQoY29uZCwgcmVnVDEs
IHJlZ1QwKTsKQEAgLTUxNiw3ICs1MTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qdHJ1ZShJbnN0
cnVjdGlvbiogY3VyCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9qdHJ1ZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQogewotICAgIHVuc2lnbmVkIGNvbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBjb25kID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICB1
bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9qdHJ1ZShJbnN0cnVjdGlvbioKIAogdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBzcmMgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CkBA
IC01NjYsNyArNTY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5zdHJ1Y3Rpb24q
IAogCiB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwog
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAK
ICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CkBAIC01OTIsNyArNTkyLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKgogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9qbmVxX3B0cihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2ln
bmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHNyYyA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgU3BlY2lhbDo6UG9pbnRlciBw
dHIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5zcGVjaWFsUG9pbnRlcjsKICAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCkBAIC02MDMsOSAr
NjAzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoSW5zdHJ1Y3Rpb24qIAogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5z
aWduZWQgc3JjMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWdu
ZWQgc3JjMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHNyYzEgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBzcmMyID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwgcmVnVDAsIHNy
YzIsIHJlZ1QzLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCByZWdUMykpOwpAQCAtNjE5LDkgKzYxOSw5IEBAIHZvaWQgSklUOjplbWl0X29wX2VxKElu
c3RydWN0aW9uKiBjdXJyZW4KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwot
ICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAg
aW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IG9wMiA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBKdW1wTGlzdCBzdG9yZVJlc3VsdDsKICAg
ICBKdW1wTGlzdCBnZW5lcmljQ2FzZTsKQEAgLTY1Myw5ICs2NTMsOSBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0X29wX25lcShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc3JjMiA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CisgICAgaW50IHNyYzEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOworICAgIGludCBzcmMyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAog
ICAgIGVtaXRMb2FkMihzcmMxLCByZWdUMSwgcmVnVDAsIHNyYzIsIHJlZ1QzLCByZWdUMik7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCByZWdUMykpOwpAQCAtNjY5
LDcgKzY2OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcShJbnN0cnVjdGlvbiogY3VycmUKIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVk
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBKdW1wTGlzdCBzdG9yZVJlc3Vs
dDsKICAgICBKdW1wTGlzdCBnZW5lcmljQ2FzZTsKQEAgLTcwMiw5ICs3MDIsOSBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0aW9uKiBjCiAKIHZvaWQgSklUOjpjb21waWxlT3BT
dHJpY3RFcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RF
cVR5cGUgdHlwZSkKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYzEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYzIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
IGludCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgc3Jj
MiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0TG9hZDIoc3Jj
MSwgcmVnVDEsIHJlZ1QwLCBzcmMyLCByZWdUMywgcmVnVDIpOwogCkBAIC03MzUsNyArNzM1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIAogCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKQEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9uc3RyaWN0
ZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKQEAgLTc2Niw4ICs3NjYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKElu
c3RydWN0CiAKIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0
TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKQEAgLTc5
Nyw4ICs3OTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBjCiAK
IHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwor
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBz
cmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQoc3Jj
LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CkBAIC0xMTA0LDcgKzEx
MDQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lbnRlcihJbnN0cnVjdGlvbiopCiAKIHZvaWQgSklU
OjplbWl0X29wX2NyZWF0ZV9hY3RpdmF0aW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgdW5zaWduZWQgYWN0aXZhdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGFjdGl2YXRpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwogICAgIAogICAgIEp1bXAgYWN0aXZhdGlvbkNyZWF0ZWQgPSBicmFuY2gzMihOb3RF
cXVhbCwgdGFnRm9yKGFjdGl2YXRpb24pLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1
ZVRhZykpOwogICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9vcF9wdXNoX2FjdGl2YXRpb24pLmNh
bGwoYWN0aXZhdGlvbik7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
cmVhdGVfYWN0aXZhdGlvbihJbnN0CiAKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVu
dHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5j
aDMyKE5vdEVxdWFsLCB0YWdGb3IoZHN0KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFs
dWVUYWcpKTsKIApAQCAtMTEyNSw3ICsxMTI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRl
X2FyZ3VtZW50cyhJbnN0cgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbml0X2xhenlfcmVnKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGVtaXRTdG9yZShkc3QsIEpTVmFsdWUoKSk7CiB9CkBA
IC0xMTcwLDcgKzExNzAsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfY3JlYXRlX3RoaXMoSW5z
dHJ1CiAKIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCB0aGlzUmVnaXN0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOworICAgIGludCB0aGlzUmVnaXN0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwogCiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMywgcmVn
VDIpOwogCkBAIC0xMjUyLDkgKzEyNTIsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1l
bnRfYnlfdmFsKEluCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFs
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBhcmd1bWVudHMgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKKyAgICBpbnQgYXJndW1lbnRzID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKKyAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
OwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIEp1bXAgc2tpcEFyZ3VtZW50c0NyZWF0
aW9uID0ganVtcCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCShyZXZpc2lvbiAxNTUzNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX25ld19vYmplY3QoSW5zdHJ1YwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNp
Z25lZCBiYXNlVmFsID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQg
YmFzZVZhbCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJhc2VWYWwsIHJlZ1QwKTsKIApAQCAtMTMzLDkgKzEzMyw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKIAogdm9pZCBKSVQ6OmVtaXRf
b3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVu
c2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWdu
ZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVk
IHByb3RvID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBwcm90byA9IGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICAvLyBMb2FkIHRoZSBvcGVyYW5kcyAoYmFzZVZhbCwg
cHJvdG8sIGFuZCB2YWx1ZSByZXNwZWN0aXZlbHkpIGludG8gcmVnaXN0ZXJzLgogICAgIC8vIFdl
IHVzZSByZWdUMCBmb3IgYmFzZVZhbCBzaW5jZSB3ZSB3aWxsIGJlIGRvbmUgd2l0aCB0aGlzIGZp
cnN0LCBhbmQgd2UgY2FuIHRoZW4gdXNlIGl0IGZvciB0aGUgcmVzdWx0LgpAQCAtMTczLDggKzE3
Myw4IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
LSAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHZh
bHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc0NlbGwgPSBlbWl0SnVt
cElmSlNDZWxsKHJlZ1QwKTsKQEAgLTIwMSw4ICsyMDEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
c191bmRlZmluZWQoSW5zdHJ1Y3RpCiAKIHZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1Qw
KTsKICAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxz
ZSkpLCByZWdUMCk7CkBAIC0yMTMsOCArMjEzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9v
bGVhbihJbnN0cnVjdGlvbgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAg
ICB0ZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDApOwpA
QCAtMjI0LDggKzIyNCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihJbnN0cnVjdGlv
bioKIAogdm9pZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENl
bGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1CiAKIHZvaWQgSklUOjplbWl0X29w
X2plcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWdu
ZWQgc3JjID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3JjID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihzcmMsIHJlZ1QwKTsKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9q
ZXFfbnVsbChJbnN0cnVjdGlvbiogCiB9Owogdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgc3JjID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3JjID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJl
Z1QwKTsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5z
dHJ1Y3Rpb24qCiAKIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgc3JjID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3JjID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKICAgICBTcGVjaWFsOjpQb2ludGVyIHB0ciA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnNwZWNpYWxQb2ludGVyOwogICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAgICAgCkBAIC02MTcsOSArNjE3LDkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcG9wX3Njb3BlKEluc3RydWN0aW9uKgogCiB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeXBlIHR5
cGUpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
LSAgICB1bnNpZ25lZCBzcmMyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc3Jj
MSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHNyYzIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cnMoc3JjMSwgcmVnVDAsIHNyYzIsIHJlZ1QxKTsKICAgICAKQEAgLTc2Niw4ICs3NjYsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VyCiAKIHZvaWQgSklUOjplbWl0
X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNp
Z25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVk
IHNyYzEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBzcmMxID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
MSwgcmVnVDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKTsKQEAgLTc5OCw4ICs3OTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3Ry
dWN0aW9uKiBjCiAKIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMxID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgc3JjMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRp
YXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CkBAIC04NDEsNyArODQxLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9j
cmVhdGVfYWN0aXZhdGlvbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgSnVtcCBh
Y3RpdmF0aW9uQ3JlYXRlZCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCBBZGRyZXNzKGNhbGxGcmFt
ZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0KSk7CiAgICAgSklUU3R1YkNhbGwodGhp
cywgY3RpX29wX3B1c2hfYWN0aXZhdGlvbikuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKQEAgLTg1MSw3ICs4NTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYWN0
aXZhdGlvbihJbnN0CiAKIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwogCiAgICAgSnVtcCBhcmdzQ3JlYXRlZCA9IGJyYW5jaFRlc3Q2NChO
b25aZXJvLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogZHN0
KSk7CiAgICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHMpLmNhbGwo
KTsKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRz
KEluc3RyCiAKIHZvaWQgSklUOjplbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwogCiAgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoKGludDY0X3QpMCksIEFkZHJlc3Mo
Y2FsbEZyYW1lUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiBkc3QpKTsKIH0KQEAgLTg4MSw3
ICs4ODEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjCiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwog
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlZSwgcmVnVDAp
OwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUocmVnVDQpOwogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0KTsKQEAgLTEwMzksOSArMTAzOSw5IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3QKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX2hh
c19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIGJhc2VWYWwgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
OwogCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZVZhbCk7CiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwpAQCAtMTA1NSw5ICsxMDU1LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2NoZWNrX2hhc19pbnN0YW5jZQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
ZihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHByb3RvID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAg
IGludCBwcm90byA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5r
U2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCB2YWx1ZSk7CiAgICAgbGlua1Nsb3dDYXNlSWZOb3RK
U0NlbGwoaXRlciwgcHJvdG8pOwpAQCAtMTA5MSw4ICsxMDkxLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgoSQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9hcmd1
bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwot
ICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAg
dW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2UgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7CiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7
CkBAIC0xMTI0LDkgKzExMjQsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlf
dmFsKEluCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKLSAgICB1bnNpZ25lZCBhcmd1bWVudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgYXJndW1lbnRzID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
KyAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAg
IAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBKdW1wIHNraXBBcmd1bWVudHNDcmVhdGlv
biA9IGp1bXAoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTU1MzUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTQsOSArNTQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKIHZvaWQgSklUOjplbWl0
X29wX3B1dF9ieV9pbmRleChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAg
IHVuc2lnbmVkIGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVu
c2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50
IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBwcm9wZXJ0
eSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHZhbHVlID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAKICAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfcHV0X2J5X2luZGV4KTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChiYXNlKTsKQEAgLTY3LDEwICs2NywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaW5k
ZXgoSW5zdHJ1Y3RpCiAKIHZvaWQgSklUOjplbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgYmFzZSA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgcHJvcGVydHkgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIGdldHRlciA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc2V0dGVyID0gY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFzZSA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKKyAgICBpbnQgZ2V0dGVyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKKyAgICBpbnQgc2V0dGVyID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZDsKICAgICAKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHV0X2dldHRl
cl9zZXR0ZXIpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGJhc2UpOwpAQCAtODIsOSArODIs
OSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfZ2V0dGVyX3NldHRlcihJbnN0CiAKIHZvaWQgSklU
OjplbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAg
dW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5z
aWduZWQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBiYXNlID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgcHJvcGVydHkgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIAogICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9kZWxfYnlfaWQpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGJh
c2UpOwpAQCAtMTM2LDkgKzEzNiw5IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFs
U3R1YkdlbmUKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAg
ICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmls
ZTsKICAgICAKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVn
VDMsIHJlZ1QyKTsKQEAgLTIzOSw5ICsyMzksOSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFy
cmF5U3RvcmFnZUdldEJ5CiAgICAgCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBp
bnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIEFycmF5
UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsK
ICAgICAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHByb3BlcnR5IGludDMyIGNoZWNrCkBA
IC0yODMsOCArMjgzLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1
YwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOworICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKKyAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwog
ICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5
UHJvZmlsZTsKICAgICAKICAgICBlbWl0TG9hZDIoYmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0
eSwgcmVnVDMsIHJlZ1QyKTsKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9w
dXRfYnlfdmFsKEluc3RydWN0aW9uCiAKIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0Nv
bnRpZ3VvdXNQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKLSAgICB1bnNp
Z25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IHZh
bHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGU7CiAgICAgCiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwpAQCAtMzgzLDcgKzM4Myw3IEBAIEpJVDo6SnVtcExpc3Qg
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXMKIAogSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJh
eVN0b3JhZ2VQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRjaGFi
bGVKdW1wJiBiYWRUeXBlKQogewotICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51LmFycmF5UHJvZmlsZTsKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC00
MTksOSArNDE5LDkgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRCeQog
CiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAg
IHVuc2lnbmVkIGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVu
c2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICB1
bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50
IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBwcm9wZXJ0
eSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHZhbHVlID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGU7CiAgICAgCiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyBwcm9wZXJ0eSBpbnQzMiBjaGVjawpAQCAtMTE5NiwxMiArMTE5Niwx
MiBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlCiAKIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgdW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAg
dW5zaWduZWQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAg
IGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBiYXNl
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgcHJvcGVydHkgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIGV4cGVjdGVkID0g
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBpdGVyID0gY3Vy
cmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBpID0gY3VycmVudElu
c3RydWN0aW9uWzZdLnUub3BlcmFuZDsKKyAgICBpbnQgaXRlciA9IGN1cnJlbnRJbnN0cnVjdGlv
bls1XS51Lm9wZXJhbmQ7CisgICAgaW50IGkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5vcGVy
YW5kOwogICAgIAogICAgIGVtaXRMb2FkMihwcm9wZXJ0eSwgcmVnVDEsIHJlZ1QwLCBiYXNlLCBy
ZWdUMywgcmVnVDIpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm9wZXJ0eSwg
cmVnVDEpOwpAQCAtMTIyOCw5ICsxMjI4LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3Bu
YW1lKEluc3RydWN0aQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3BuYW1lKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKLSAgICB1bnNpZ25lZCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBw
cm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgbGlu
a1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgcHJvcGVydHkpOwogICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hl
Y2soYm9vbCBuZWUKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0
ZUFkZHJlc3MobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT52YXJJbmplY3Rpb25XYXRjaHBv
aW50KCktPmFkZHJlc3NPZklzSW52YWxpZGF0ZWQoKSkpKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRS
ZXNvbHZlQ2xvc3VyZSh1bnNpZ25lZCBkc3QsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3Ms
IHVuc2lnbmVkIGRlcHRoKQordm9pZCBKSVQ6OmVtaXRSZXNvbHZlQ2xvc3VyZShpbnQgZHN0LCBi
b29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzLCB1bnNpZ25lZCBkZXB0aCkKIHsKICAgICBlbWl0
VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOwogICAgIG1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7CkBAIC0xMjcwLDcgKzEyNzAsNyBA
QCB2b2lkIEpJVDo6ZW1pdFJlc29sdmVDbG9zdXJlKHVuc2lnbmVkIGRzCiAKIHZvaWQgSklUOjpl
bWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
IGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIFJlc29sdmVU
eXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpOwogICAgIHVuc2lnbmVkIGRlcHRoID0gY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZDsKIApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdAogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2
ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxS
ZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAKICAgICBpZiAo
cmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFy
IHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCkBAIC0xMzEwLDcgKzEzMTAsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0CiAgICAgc3R1YkNhbGwuY2FsbChk
c3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2sodW5zaWduZWQg
c2NvcGUsIFN0cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QpCit2b2lkIEpJVDo6ZW1pdExvYWRXaXRo
U3RydWN0dXJlQ2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90KQogewog
ICAgIGVtaXRMb2FkKHNjb3BlLCByZWdUMSwgcmVnVDApOwogICAgIGxvYWRQdHIoc3RydWN0dXJl
U2xvdCwgcmVnVDIpOwpAQCAtMTMzMCw3ICsxMzMwLDcgQEAgdm9pZCBKSVQ6OmVtaXRHZXRHbG9i
YWxWYXIodWludHB0cl90IG9wZQogICAgIGxvYWQzMihyZWludGVycHJldF9jYXN0PGNoYXIqPihv
cGVyYW5kKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMu
cGF5bG9hZCksIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRHZXRDbG9zdXJlVmFyKHVuc2ln
bmVkIHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCkKK3ZvaWQgSklUOjplbWl0R2V0Q2xvc3VyZVZh
cihpbnQgc2NvcGUsIHVpbnRwdHJfdCBvcGVyYW5kKQogewogICAgIGVtaXRMb2FkKHNjb3BlLCBy
ZWdUMSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNWYXJpYWJsZU9iamVj
dDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1QwKTsKQEAgLTEzNDAsOCArMTM0MCw4IEBAIHZv
aWQgSklUOjplbWl0R2V0Q2xvc3VyZVZhcih1bnNpZ25lZCBzY28KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVu
c2lnbmVkIHNjb3BlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQg
ZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgc2NvcGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVU
eXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQp
LnR5cGUoKTsKICAgICBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90ID0gY3VycmVudEluc3RydWN0
aW9uWzVdLnUuc3RydWN0dXJlLnNsb3QoKTsKICAgICB1aW50cHRyX3QqIG9wZXJhbmRTbG90ID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPigmY3VycmVudEluc3RydWN0aW9uWzZdLnUucG9p
bnRlcik7CkBAIC0xMzczLDcgKzEzNzMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9z
Y29wZShJbnN0cnVjCiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUoY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkudHlwZSgpOwogCiAgICAgaWYgKHJlc29sdmVUeXBl
ID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQpAQCAtMTM4Nyw3ICsx
Mzg3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKElucwogICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUocmVnVDQpOwogfQogCi12b2lkIEpJVDo6ZW1pdFB1dEdsb2Jh
bFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QsIHVuc2lnbmVkIHZhbHVlKQordm9pZCBK
SVQ6OmVtaXRQdXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyX3QqIG9wZXJhbmRTbG90LCBpbnQgdmFs
dWUpCiB7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihvcGVyYW5kU2xvdCwgcmVnVDEpOwpAQCAtMTM5
NywxNCArMTM5NywxNCBAQCB2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJf
CiAgICAgc3RvcmUzMihyZWdUMiwgQmFzZUluZGV4KHJlZ1QwLCByZWdUMSwgVGltZXNFaWdodCwg
KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwog
fQogCi12b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwgdW5zaWdu
ZWQgdmFsdWUpCit2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFZhcih1aW50cHRyX3Qgb3BlcmFuZCwg
aW50IHZhbHVlKQogewogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwogICAgIHN0
b3JlMzIocmVnVDEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG9wZXJhbmQpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKICAgICBzdG9yZTMy
KHJlZ1QwLCByZWludGVycHJldF9jYXN0PGNoYXIqPihvcGVyYW5kKSArIE9CSkVDVF9PRkZTRVRP
RihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdFB1dENsb3N1cmVWYXIodW5zaWduZWQgc2NvcGUsIHVpbnRwdHJfdCBvcGVyYW5kLCB1
bnNpZ25lZCB2YWx1ZSkKK3ZvaWQgSklUOjplbWl0UHV0Q2xvc3VyZVZhcihpbnQgc2NvcGUsIHVp
bnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUpCiB7CiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1Qz
LCByZWdUMik7CiAgICAgZW1pdExvYWQoc2NvcGUsIHJlZ1QxLCByZWdUMCk7CkBAIC0xNDE1LDgg
KzE0MTUsOCBAQCB2b2lkIEpJVDo6ZW1pdFB1dENsb3N1cmVWYXIodW5zaWduZWQgc2NvCiAKIHZv
aWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIHVuc2lnbmVkIHNjb3BlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CisgICAgaW50IHNjb3BlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAg
ICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIFJlc29s
dmVUeXBlIHJlc29sdmVUeXBlID0gUmVzb2x2ZU1vZGVBbmRUeXBlKGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpLnR5cGUoKTsKICAgICBTdHJ1Y3R1cmUqKiBzdHJ1Y3R1cmVTbG90ID0g
Y3VycmVudEluc3RydWN0aW9uWzVdLnUuc3RydWN0dXJlLnNsb3QoKTsKICAgICB1aW50cHRyX3Qq
IG9wZXJhbmRTbG90ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3QqPigmY3VycmVudEluc3Ry
dWN0aW9uWzZdLnUucG9pbnRlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTU1MzUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDkgKzk1LDkgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKLSAgICB1bnNpZ25lZCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
aW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBwcm9w
ZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgQXJyYXlQcm9maWxl
KiBwcm9maWxlID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlOwogICAgIAog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDEp
OwpAQCAtMjAxLDkgKzIwMSw5IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdl
R2V0QnkKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwot
ICAgIHVuc2lnbmVkIGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAg
IHVuc2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFz
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHByb3BlcnR5ID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBBcnJheVByb2ZpbGUqIHByb2Zp
bGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGU7CiAgICAgCiAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOyAvLyBwcm9wZXJ0eSBpbnQzMiBjaGVjawpAQCAtMjY5LDEyICsyNjks
MTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwot
ICAgIHVuc2lnbmVkIGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAg
IHVuc2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAg
ICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFz
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgaW50IHByb3BlcnR5ID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICB1bnNpZ25lZCBleHBlY3RlZCA9
IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgaXRlciA9IGN1
cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgaSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbls2XS51Lm9wZXJhbmQ7CisgICAgaW50IGl0ZXIgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bNV0udS5vcGVyYW5kOworICAgIGludCBpID0gY3VycmVudEluc3RydWN0aW9uWzZdLnUub3Bl
cmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QwKTsKICAg
ICBhZGRTbG93Q2FzZShicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIGFkZHJlc3NGb3IoZXhwZWN0
ZWQpKSk7CkBAIC0yOTgsOSArMjk4LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1l
KEluc3RydWN0aQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCiB7Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKLSAgICB1bnNpZ25lZCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
aW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBwcm9w
ZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZSk7CkBAIC0z
MTUsOCArMzE1LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9wbmFtZShJbnN0cgog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOworICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgcHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAg
IEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJv
ZmlsZTsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGJhc2UsIHJlZ1QwLCBwcm9wZXJ0
eSwgcmVnVDEpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92
YWwoSW5zdHJ1Y3Rpb24KIAogSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91
c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewotICAgIHVuc2lnbmVkIHZh
bHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmls
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsKICAgICAKICAgICBKdW1w
TGlzdCBzbG93Q2FzZXM7CkBAIC00MTcsNyArNDE3LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRHZW5lcmljQ29udGlndW91cwogCiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFn
ZVB1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUpCiB7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7CiAgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUu
YXJyYXlQcm9maWxlOwogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKQEAgLTQ1MCw5ICs0
NTAsOSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5CiAKIHZvaWQg
SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWdu
ZWQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQg
cHJvcGVydHkgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVk
IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFzZSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHByb3BlcnR5ID0gY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZTsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gcHJvcGVydHkgaW50MzIgY2hlY2sKQEAgLTUxNiw4ICs1MTYsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIHJl
c3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVk
IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgcmVz
dWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGJhc2VW
UmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCkpOwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlVlJlZywg
cmVnVDApOwpAQCAtNTYwLDggKzU2MCw4IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBh
dGgoaW50IGJhc2UKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewotICAgIHVuc2lnbmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKKyAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50
aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogCiAgICAgY29tcGlsZUdl
dEJ5SWRTbG93Q2FzZShyZXN1bHRWUmVnLCBiYXNlVlJlZywgaWRlbnQsIGl0ZXIpOwpAQCAtNTk1
LDggKzU5NSw4IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXMKIAog
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgdW5zaWduZWQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwotICAgIHVuc2lnbmVkIHZhbHVlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7CisgICAgaW50IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBpbnQgdmFsdWVWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKIAogICAgIC8vIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcGF0Y2ggYm90aCB0aGUgU3RydWN0
dXJlLCBhbmQgdGhlIG9iamVjdCBvZmZzZXQsIHdlIHN0b3JlIG9uZSBwb2ludGVyLAogICAgIC8v
IHRvIGp1c3QgYWZ0ZXIgdGhlIGFyZ3VtZW50cyBoYXZlIGJlZW4gbG9hZGVkIGludG8gcmVnaXN0
ZXJzICdob3RQYXRoQmVnaW4nLCBhbmQgd2UgZ2VuZXJhdGUgY29kZQpAQCAtNjI3LDcgKzYyNyw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVkIGJh
c2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYmFzZVZS
ZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CiAgICAgdW5zaWduZWQgZGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9u
WzhdLnUub3BlcmFuZDsKIApAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBKSVQ6OmVtaXRWYXJJ
bmplY3Rpb25DaGVjayhib29sIG5lZQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KE5vblpl
cm8sIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPnZhckluamVj
dGlvbldhdGNocG9pbnQoKS0+YWRkcmVzc09mSXNJbnZhbGlkYXRlZCgpKSkpOwogfQogCi12b2lk
IEpJVDo6ZW1pdFJlc29sdmVDbG9zdXJlKHVuc2lnbmVkIGRzdCwgYm9vbCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcywgdW5zaWduZWQgZGVwdGgpCit2b2lkIEpJVDo6ZW1pdFJlc29sdmVDbG9zdXJl
KGludCBkc3QsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MsIHVuc2lnbmVkIGRlcHRoKQog
ewogICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpTY29wZUNoYWluLCByZWdUMCk7CkBA
IC0xMjI4LDcgKzEyMjgsNyBAQCB2b2lkIEpJVDo6ZW1pdFJlc29sdmVDbG9zdXJlKHVuc2lnbmVk
IGRzCiAKIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5
cGU+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgIHVuc2lnbmVkIGRlcHRo
ID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKIApAQCAtMTI1NCw3ICsxMjU0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdAogCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIHVuc2lnbmVk
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5
cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCk7CiAKICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2
ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCkBAIC0xMjY3
LDcgKzEyNjcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0CiAg
ICAgc3R1YkNhbGwuY2FsbChkc3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0
dXJlQ2hlY2sodW5zaWduZWQgc2NvcGUsIFN0cnVjdHVyZSoqIHN0cnVjdHVyZVNsb3QpCit2b2lk
IEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50IHNjb3BlLCBTdHJ1Y3R1cmUqKiBz
dHJ1Y3R1cmVTbG90KQogewogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUsIHJlZ1Qw
KTsKICAgICBsb2FkUHRyKHN0cnVjdHVyZVNsb3QsIHJlZ1QxKTsKQEAgLTEyODUsNyArMTI4NSw3
IEBAIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGUKICAgICBsb2FkUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhbmQpLCByZWdUMCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0R2V0Q2xvc3VyZVZhcih1bnNpZ25lZCBzY29wZSwgdWludHB0cl90IG9wZXJhbmQpCit2
b2lkIEpJVDo6ZW1pdEdldENsb3N1cmVWYXIoaW50IHNjb3BlLCB1aW50cHRyX3Qgb3BlcmFuZCkK
IHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNjb3BlLCByZWdUMCk7CiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lzdGVycygpKSwg
cmVnVDApOwpAQCAtMTI5NCw4ICsxMjk0LDggQEAgdm9pZCBKSVQ6OmVtaXRHZXRDbG9zdXJlVmFy
KHVuc2lnbmVkIHNjbwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgc2NvcGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBzY29wZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBSZXNvbHZlTW9kZUFuZFR5cGUo
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkudHlwZSgpOwogICAgIFN0cnVjdHVyZSoq
IHN0cnVjdHVyZVNsb3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS5zdHJ1Y3R1cmUuc2xvdCgp
OwogICAgIHVpbnRwdHJfdCogb3BlcmFuZFNsb3QgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dCo+KCZjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKTsKQEAgLTEzMjcsNyArMTMyNyw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWMKIAogdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgdW5zaWdu
ZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZl
VHlwZSA9IFJlc29sdmVNb2RlQW5kVHlwZShjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
KS50eXBlKCk7CiAKICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVU
eXBlID09IENsb3N1cmVWYXIpCkBAIC0xMzQxLDcgKzEzNDEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zCiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShyZWdU
NCk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0R2xvYmFsUHJvcGVydHkodWludHB0cl90KiBvcGVy
YW5kU2xvdCwgdW5zaWduZWQgdmFsdWUpCit2b2lkIEpJVDo6ZW1pdFB1dEdsb2JhbFByb3BlcnR5
KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QsIGludCB2YWx1ZSkKIHsKICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QwKTsKICAgICBsb2Fk
UHRyKG9wZXJhbmRTbG90LCByZWdUMSk7CkBAIC0xMzUwLDEzICsxMzUwLDEzIEBAIHZvaWQgSklU
OjplbWl0UHV0R2xvYmFsUHJvcGVydHkodWludHB0cl8KICAgICBzdG9yZVB0cihyZWdUMiwgQmFz
ZUluZGV4KHJlZ1QwLCByZWdUMSwgVGltZXNFaWdodCwgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0g
MikgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0R2xv
YmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCB1bnNpZ25lZCB2YWx1ZSkKK3ZvaWQgSklUOjplbWl0
UHV0R2xvYmFsVmFyKHVpbnRwdHJfdCBvcGVyYW5kLCBpbnQgdmFsdWUpCiB7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIHN0b3JlUHRyKHJlZ1QwLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihvcGVyYW5kKSk7CiB9CiAKLXZvaWQgSklUOjplbWl0UHV0Q2xv
c3VyZVZhcih1bnNpZ25lZCBzY29wZSwgdWludHB0cl90IG9wZXJhbmQsIHVuc2lnbmVkIHZhbHVl
KQordm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKGludCBzY29wZSwgdWludHB0cl90IG9wZXJh
bmQsIGludCB2YWx1ZSkKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdU
MSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY29wZSwgcmVnVDApOwpAQCAtMTM2Niw4
ICsxMzY2LDggQEAgdm9pZCBKSVQ6OmVtaXRQdXRDbG9zdXJlVmFyKHVuc2lnbmVkIHNjbwogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICB1bnNpZ25lZCBzY29wZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kOworICAgIGludCBzY29wZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Cisg
ICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBSZXNv
bHZlVHlwZSByZXNvbHZlVHlwZSA9IFJlc29sdmVNb2RlQW5kVHlwZShjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKS50eXBlKCk7CiAgICAgU3RydWN0dXJlKiogc3RydWN0dXJlU2xvdCA9
IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LnN0cnVjdHVyZS5zbG90KCk7CiAgICAgdWludHB0cl90
KiBvcGVyYW5kU2xvdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Kj4oJmN1cnJlbnRJbnN0
cnVjdGlvbls2XS51LnBvaW50ZXIpOwpAQCAtMTc1Miw3ICsxNzUyLDcgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QgogewogICAgIEFTU0VSVChpc0ludCh0eXBlKSk7
CiAgICAgCi0gICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kOworICAgIGludCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIFJlZ2lzdGVySUQgYmFzZSA9IHJlZ1QwOwpAQCAtMTgx
OCw3ICsxODE4LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQog
ewogICAgIEFTU0VSVChpc0Zsb2F0KHR5cGUpKTsKICAgICAKLSAgICB1bnNpZ25lZCB2YWx1ZSA9
IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgaW50IHZhbHVlID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgUmVn
aXN0ZXJJRCBiYXNlID0gcmVnVDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHViQ2FsbC5oCShyZXZpc2lvbiAxNTUzNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgdm9p
ZCBhZGRBcmd1bWVudCh1bnNpZ25lZCBzcmNWaXJ0dWFsUmVnaXN0ZXIpCisgICAgICAgIHZvaWQg
YWRkQXJndW1lbnQoaW50IHNyY1ZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKG1faml0LT5tX2NvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoc3JjVmly
dHVhbFJlZ2lzdGVyKSkgewogICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50KG1faml0LT5nZXRD
b25zdGFudE9wZXJhbmQoc3JjVmlydHVhbFJlZ2lzdGVyKSk7CkBAIC0xOTIsNyArMTkyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2ppdC0+cGVlayh0YWcsIHN0YWNrSW5kZXgg
KyAxKTsKICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgdm9pZCBhZGRBcmd1bWVudCh1bnNpZ25l
ZCBzcmMsIEpJVDo6UmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXIpIC8vIHNyYyBpcyBhIHZpcnR1
YWwgcmVnaXN0ZXIuCisgICAgICAgIHZvaWQgYWRkQXJndW1lbnQoaW50IHNyYywgSklUOjpSZWdp
c3RlcklEIHNjcmF0Y2hSZWdpc3RlcikgLy8gc3JjIGlzIGEgdmlydHVhbCByZWdpc3Rlci4KICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKG1faml0LT5tX2NvZGVCbG9jay0+aXNDb25zdGFudFJl
Z2lzdGVySW5kZXgoc3JjKSkKICAgICAgICAgICAgICAgICBhZGRBcmd1bWVudChKSVQ6OkltbTY0
KEpTVmFsdWU6OmVuY29kZShtX2ppdC0+bV9jb2RlQmxvY2stPmdldENvbnN0YW50KHNyYykpKSk7
CkBAIC0yMzAsNyArMjMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIEpJVDo6Q2FsbCBjYWxsKHVuc2lnbmVkIGRzdCkgLy8g
ZHN0IGlzIGEgdmlydHVhbCByZWdpc3Rlci4KKyAgICAgICAgSklUOjpDYWxsIGNhbGwoaW50IGRz
dCkgLy8gZHN0IGlzIGEgdmlydHVhbCByZWdpc3Rlci4KICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKG1fcmV0dXJuVHlwZSA9PSBWYWx1ZSB8fCBtX3JldHVyblR5cGUgPT0gQ2VsbCk7CiAg
ICAgICAgICAgICBKSVQ6OkNhbGwgY2FsbCA9IHRoaXMtPmNhbGwoKTsKQEAgLTI0MSw3ICsyNDEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBKSVQ6OkNhbGwgY2FsbFdpdGhWYWx1ZVByb2ZpbGluZyh1bnNp
Z25lZCBkc3QpCisgICAgICAgIEpJVDo6Q2FsbCBjYWxsV2l0aFZhbHVlUHJvZmlsaW5nKGludCBk
c3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX3JldHVyblR5cGUgPT0gVmFsdWUg
fHwgbV9yZXR1cm5UeXBlID09IENlbGwpOwogICAgICAgICAgICAgSklUOjpDYWxsIGNhbGwgPSB0
aGlzLT5jYWxsKCk7CkBAIC0yNTYsNyArMjU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gY2FsbDsKICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgSklUOjpDYWxsIGNh
bGwodW5zaWduZWQgZHN0KSAvLyBkc3QgaXMgYSB2aXJ0dWFsIHJlZ2lzdGVyLgorICAgICAgICBK
SVQ6OkNhbGwgY2FsbChpbnQgZHN0KSAvLyBkc3QgaXMgYSB2aXJ0dWFsIHJlZ2lzdGVyLgogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9yZXR1cm5UeXBlID09IFZhbHVlIHx8IG1fcmV0
dXJuVHlwZSA9PSBDZWxsKTsKICAgICAgICAgICAgIEpJVDo6Q2FsbCBjYWxsID0gdGhpcy0+Y2Fs
bCgpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIGNhbGw7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEpJVDo6Q2FsbCBjYWxsV2l0
aFZhbHVlUHJvZmlsaW5nKHVuc2lnbmVkIGRzdCkKKyAgICAgICAgSklUOjpDYWxsIGNhbGxXaXRo
VmFsdWVQcm9maWxpbmcoaW50IGRzdCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1f
cmV0dXJuVHlwZSA9PSBWYWx1ZSB8fCBtX3JldHVyblR5cGUgPT0gQ2VsbCk7CiAgICAgICAgICAg
ICBKSVQ6OkNhbGwgY2FsbCA9IHRoaXMtPmNhbGwoKTsK
</data>
<flag name="review"
          id="233162"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>