<?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>151423</bug_id>
          
          <creation_ts>2015-11-18 16:24:41 -0800</creation_ts>
          <short_desc>FTL should be able to compile a small function with B3</short_desc>
          <delta_ts>2015-11-18 18:48:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143074</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-18 16:24:41 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143075</commentid>
    <comment_count>1</comment_count>
      <attachid>265805</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-18 16:25:15 -0800</bug_when>
    <thetext>Created attachment 265805
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143085</commentid>
    <comment_count>2</comment_count>
      <attachid>265809</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-18 16:43:58 -0800</bug_when>
    <thetext>Created attachment 265809
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143120</commentid>
    <comment_count>3</comment_count>
      <attachid>265821</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-18 18:22:52 -0800</bug_when>
    <thetext>Created attachment 265821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143121</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-18 18:24:45 -0800</bug_when>
    <thetext>Attachment 265821 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:9061:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143123</commentid>
    <comment_count>5</comment_count>
      <attachid>265821</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-18 18:31:31 -0800</bug_when>
    <thetext>Comment on attachment 265821
Patch

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

I think that we can have a better story for upsilons.  I think that having anchor() create one for you, and then making ValueFromBlock hold onto it, is the most natural.

&gt; Source/JavaScriptCore/ftl/FTLB3Output.h:368
&gt; +    ValueFromBlock anchor(LValue value)
&gt; +    {
&gt; +        return ValueFromBlock(value, m_block);
&gt; +    }

Either this should create an Upsilon for you by simply appending it to m_block...

&gt; Source/JavaScriptCore/ftl/FTLB3Output.h:407
&gt; +inline void Output::addIncomingToPhi(LValue phi, ValueFromBlock value)
&gt; +{
&gt; +    value.value()-&gt;as&lt;B3::UpsilonValue&gt;()-&gt;setPhi(phi);
&gt; +}

... or this should create an Upsilon for you by appending it to the block that your value came from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143126</commentid>
    <comment_count>6</comment_count>
      <attachid>265824</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-18 18:41:11 -0800</bug_when>
    <thetext>Created attachment 265824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143128</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-18 18:44:07 -0800</bug_when>
    <thetext>Attachment 265824 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:9061:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143130</commentid>
    <comment_count>8</comment_count>
      <attachid>265824</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-18 18:48:49 -0800</bug_when>
    <thetext>Comment on attachment 265824
Patch

Clearing flags on attachment: 265824

Committed r192605: &lt;http://trac.webkit.org/changeset/192605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143131</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-18 18:48:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265805</attachid>
            <date>2015-11-18 16:25:15 -0800</date>
            <delta_ts>2015-11-18 16:43:58 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>59044</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lv
biAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcxNCw2ICsxNzE0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEIzOjpPb3BzOiB7CisgICAgICAg
ICAgICBhcHBlbmQoQWlyOjpPb3BzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxOTI1OTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFdlIGFyZSBp
biB0aGUgbWlkZGxlIG9mIGFuIGV4cGVyaW1lbnRhbCB0cmFuc2l0aW9uIGZyb20gTExWTSB0byBC
MyBhcyB0aGUgYmFja2VuZCBmb3IgdGhlIEZUTC4gV2UgZG9uJ3QKIC8vIHlldCBrbm93IGhvdyBp
dCB3aWxsIHR1cm4gb3V0LiBGb3Igbm93LCB0aGlzIGZsYWcgd2lsbCBjb250cm9sIHdoZXRoZXIg
RlRMIHVzZXMgQjMuIFJlbWVtYmVyIHRvIHNldCB0aGlzCiAvLyB0byAwIGJlZm9yZSBjb21taXR0
aW5nIQotI2RlZmluZSBGVExfVVNFU19CMyAwCisjZGVmaW5lIEZUTF9VU0VTX0IzIDEKIAogc3Ry
dWN0IE5vZGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0
ZWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJi
cmV2aWF0ZWRUeXBlcy5oCShyZXZpc2lvbiAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogI2lmIEZUTF9VU0VTX0IzCiB0
eXBlZGVmIEIzOjpCYXNpY0Jsb2NrKiBMQmFzaWNCbG9jazsKIHR5cGVkZWYgQjM6OlR5cGUgTFR5
cGU7Cit0eXBlZGVmIEIzOjpWYWx1ZSogTFZhbHVlOwogI2Vsc2UKIHR5cGVkZWYgTExWTUJhc2lj
QmxvY2tSZWYgTEJhc2ljQmxvY2s7CiB0eXBlZGVmIExMVk1UeXBlUmVmIExUeXBlOwordHlwZWRl
ZiBMTFZNVmFsdWVSZWYgTFZhbHVlOwogI2VuZGlmCiAKIHR5cGVkZWYgTExWTUF0b21pY09yZGVy
aW5nIExBdG9taWNPcmRlcmluZzsKQEAgLTU0LDcgKzU2LDYgQEAgdHlwZWRlZiBMTFZNSW50UHJl
ZGljYXRlIExJbnRQcmVkaWNhdGU7CiB0eXBlZGVmIExMVk1MaW5rYWdlIExMaW5rYWdlOwogdHlw
ZWRlZiBMTFZNTW9kdWxlUmVmIExNb2R1bGU7CiB0eXBlZGVmIExMVk1SZWFsUHJlZGljYXRlIExS
ZWFsUHJlZGljYXRlOwotdHlwZWRlZiBMTFZNVmFsdWVSZWYgTFZhbHVlOwogdHlwZWRlZiBMTFZN
TWVtb3J5QnVmZmVyUmVmIExNZW1vcnlCdWZmZXI7CiAKIGVudW0gU3luY2hyb25pemF0aW9uU2Nv
cGUgeyBTaW5nbGVUaHJlYWQsIENyb3NzVGhyZWFkIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcAkocmV2aXNpb24gMTkyNTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEw
ICszMyw0NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIE91dHB1dDo6T3V0
cHV0KFN0YXRlJiBzdGF0ZSkKICAgICA6IENvbW1vblZhbHVlcyhzdGF0ZS5jb250ZXh0KQotICAg
ICwgbV9wcm9jZWR1cmUoKnN0YXRlLnByb2MpCisgICAgLCBtX3Byb2MoKnN0YXRlLnByb2MpCiB7
CiB9CiAKK3ZvaWQgT3V0cHV0Ojppbml0aWFsaXplKEFic3RyYWN0SGVhcFJlcG9zaXRvcnkmIGhl
YXBzKQoreworICAgIG1faGVhcHMgPSAmaGVhcHM7Cit9CisKK0xCYXNpY0Jsb2NrIE91dHB1dDo6
YXBwZW5kVG8oTEJhc2ljQmxvY2sgYmxvY2ssIExCYXNpY0Jsb2NrIG5leHRCbG9jaykKK3sKKyAg
ICBhcHBlbmRUbyhibG9jayk7CisgICAgcmV0dXJuIGluc2VydE5ld0Jsb2Nrc0JlZm9yZShuZXh0
QmxvY2spOworfQorCit2b2lkIE91dHB1dDo6YXBwZW5kVG8oTEJhc2ljQmxvY2sgYmxvY2spCit7
CisgICAgbV9ibG9jayA9IGJsb2NrOworfQorCitMVmFsdWUgT3V0cHV0Ojpsb2FkKFR5cGVkUG9p
bnRlciBwb2ludGVyLCBMVHlwZSB0eXBlKQoreworICAgIExWYWx1ZSBsb2FkID0gbV9ibG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHR5cGUsIG9yaWdpbigpLCBwb2lu
dGVyLnZhbHVlKCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rpb24ocmVz
dWx0LCAqbV9oZWFwcyk7CisgICAgcmV0dXJuIGxvYWQ7Cit9CisKK3ZvaWQgT3V0cHV0OjpzdG9y
ZShMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKQoreworICAgIExWYWx1ZSBzdG9y
ZSA9IG1fYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2lu
KCksIHZhbHVlLCBwb2ludGVyLnZhbHVlKCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRl
SW5zdHJ1Y3Rpb24ocmVzdWx0LCAqbV9oZWFwcyk7Cit9CisKK3ZvaWQgT3V0cHV0OjpicmFuY2go
TFZhbHVlIGNvbmRpdGlvbiwgTEJhc2ljQmxvY2sgdGFrZW4sIFdlaWdodCB0YWtlbldlaWdodCwg
TEJhc2ljQmxvY2sgbm90VGFrZW4sIFdlaWdodCBub3RUYWtlbikKK3sKKyAgICBtX2Jsb2NrLT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgbV9wcm9jLCBCcmFuY2gsIG9yaWdpbigp
LCBjb25kaXRpb24sCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayh0YWtlbiwgdGFrZW5XZWlnaHQu
ZnJlcXVlbmN5Q2xhc3MoKSksCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhub3RUYWtlbiwgbm90
VGFrZW5XZWlnaHQuZnJlcXVlbmN5Q2xhc3MoKSkpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6RlRMCiAKICNlbmRpZiAvLyBGVExfVVNFU19CMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExCM091dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQjNPdXRwdXQuaAkocmV2aXNpb24gMTkyNTkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSwxMSBA
QAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRlciIK
ICNlbmRpZiAvLyBDT01QSUxFUihDTEFORykKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgeworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBERkcgeyBzdHJ1Y3QgTm9kZTsgfQor
CituYW1lc3BhY2UgRlRMIHsKIAogZW51bSBTY2FsZSB7IFNjYWxlT25lLCBTY2FsZVR3bywgU2Nh
bGVGb3VyLCBTY2FsZUVpZ2h0LCBTY2FsZVB0ciB9OwogCkBAIC02MCwxMCArNjQsMTIgQEAgcHVi
bGljOgogICAgIE91dHB1dChTdGF0ZSYpOwogICAgIH5PdXRwdXQoKSB7IENSQVNIKCk7IH0KIAor
ICAgIHZvaWQgaW5pdGlhbGl6ZShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Jik7CisKICAgICBMQmFz
aWNCbG9jayBuZXdCbG9jayhjb25zdCBjaGFyKiBuYW1lID0gIiIpCiAgICAgewogICAgICAgICBV
TlVTRURfUEFSQU0obmFtZSk7Ci0gICAgICAgIHJldHVybiBtX3Byb2NlZHVyZS5hZGRCbG9jaygp
OworICAgICAgICByZXR1cm4gbV9wcm9jLmFkZEJsb2NrKCk7CiAgICAgfQogCiAgICAgTEJhc2lj
QmxvY2sgaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKExCYXNpY0Jsb2NrIG5leHRCbG9jaykKQEAgLTcz
LDE3ICs3OSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYXN0TmV4dEJsb2NrOwogICAg
IH0KIAotICAgIExCYXNpY0Jsb2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNCbG9jayBu
ZXh0QmxvY2spIHsgQ1JBU0goKTsgfQotICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spIHsg
Q1JBU0goKTsgfQorICAgIExCYXNpY0Jsb2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNC
bG9jayBuZXh0QmxvY2spOworICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spOworCisgICAg
dm9pZCBzZXRPcmlnaW4oREZHOjpOb2RlKiBub2RlKSB7IG1fb3JpZ2luID0gbm9kZTsgfQorICAg
IEIzOjpPcmlnaW4gb3JpZ2luKCkgeyByZXR1cm4gQjM6Ok9yaWdpbihtX29yaWdpbik7IH0KKwor
ICAgIExWYWx1ZSBmcmFtZVBvaW50ZXIoKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIG9yaWdpbigpKTsgfQogCi0gICAgTFZh
bHVlIHBhcmFtKHVuc2lnbmVkIGluZGV4KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgY29uc3RC
b29sKGJvb2wgdmFsdWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBjb25zdEludDMyKGludDMy
X3QgdmFsdWUpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBjb25zdEJvb2woYm9vbCB2YWx1ZSkg
eyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCB2YWx1ZSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIExWYWx1ZSBjb25z
dEludFB0cihUKiB2YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGNvbnN0SW50UHRyKFQq
IHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0UHRyVmFsdWU+KG1f
cHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
TFZhbHVlIGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBjb25z
dEludDY0KGludDY0X3QgdmFsdWUpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBjb25zdEludFB0
cihUIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0UHRyVmFsdWU+
KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBjb25zdEludDY0KGludDY0
X3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3Q2NFZhbHVlPiht
X3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICBMVmFsdWUgY29uc3REb3VibGUoZG91Ymxl
IHZhbHVlKSB7IENSQVNIKCk7IH0KIAogICAgIExWYWx1ZSBwaGkoTFR5cGUgdHlwZSkgeyBDUkFT
SCgpOyB9CkBAIC05Myw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIHBoaShMVHlwZSB0
eXBlLCBjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgQ1JBU0goKTsgfQogICAgIHZvaWQgYWRk
SW5jb21pbmdUb1BoaShMVmFsdWUgcGhpLCBWYWx1ZUZyb21CbG9jayB2YWx1ZSkgeyBDUkFTSCgp
OyB9CiAKLSAgICBMVmFsdWUgYWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0go
KTsgfQorICAgIExWYWx1ZSBhZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWRkLCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIHN1YihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
IHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBkaXYoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkg
eyBDUkFTSCgpOyB9CkBAIC0xMDcsOSArMTE3LDkgQEAgcHVibGljOgogICAgIExWYWx1ZSBkb3Vi
bGVSZW0oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVl
IGRvdWJsZU5lZyhMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQogCi0gICAgTFZhbHVlIGJpdEFu
ZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgYml0
T3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGJp
dFhvcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUg
Yml0QW5kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdEFuZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsgfQorICAgIExWYWx1ZSBiaXRPcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRPciwgb3JpZ2lu
KCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBiaXRYb3IoTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6Qml0WG9yLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIHNobChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgYVNocihMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbFNocihMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KQEAgLTE3NSwzMyArMTg1LDQzIEBA
IHB1YmxpYzoKICAgICAvLyBTaW1pbGFyIHRvIGdldCgpIGJ1dCBmb3Igc3RvcmluZyB0byB0aGUg
dmFsdWUgaW4gYW4gYWxsb2NhLgogICAgIExWYWx1ZSBzZXQoTFZhbHVlIHZhbHVlLCBMVmFsdWUg
cmVmZXJlbmNlKSB7IENSQVNIKCk7IH0KIAotICAgIExWYWx1ZSBsb2FkKFR5cGVkUG9pbnRlciwg
TFR5cGUgcmVmVHlwZSkgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBzdG9yZShMVmFsdWUsIFR5cGVk
UG9pbnRlciwgTFR5cGUgcmVmVHlwZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGxvYWQoVHlw
ZWRQb2ludGVyLCBMVHlwZSB0eXBlKTsKKyAgICB2b2lkIHN0b3JlKExWYWx1ZSB2YWx1ZSwgVHlw
ZWRQb2ludGVyIHBvaW50ZXIpOwogCiAgICAgTFZhbHVlIGxvYWQ4U2lnbkV4dDMyKFR5cGVkUG9p
bnRlcikgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIGxvYWQ4WmVyb0V4dDMyKFR5cGVkUG9pbnRl
cikgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIGxvYWQxNlNpZ25FeHQzMihUeXBlZFBvaW50ZXIp
IHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBsb2FkMTZaZXJvRXh0MzIoVHlwZWRQb2ludGVyKSB7
IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbG9hZDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENS
QVNIKCk7IH0KLSAgICBMVmFsdWUgbG9hZDY0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNI
KCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBs
b2FkKHBvaW50ZXIsIEIzOjpJbnQ2NCk7IH0KICAgICBMVmFsdWUgbG9hZFB0cihUeXBlZFBvaW50
ZXIgcG9pbnRlcikgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIGxvYWRGbG9hdFRvRG91YmxlKFR5
cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbG9hZERvdWJsZShU
eXBlZFBvaW50ZXIgcG9pbnRlcikgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBzdG9yZTE2KExWYWx1
ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JBU0goKTsgfQotICAgIHZvaWQgc3Rv
cmUzMihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAg
ICB2b2lkIHN0b3JlNjQoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBDUkFT
SCgpOyB9Ci0gICAgdm9pZCBzdG9yZVB0cihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2lu
dGVyKSB7IENSQVNIKCk7IH0KLSAgICB2b2lkIHN0b3JlRG91YmxlKExWYWx1ZSB2YWx1ZSwgVHlw
ZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JBU0goKTsgfQotCi0gICAgTFZhbHVlIGFkZFB0cihMVmFs
dWUgdmFsdWUsIHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAwKSB7IENSQVNIKCk7IH0KKyAgICB2b2lk
IHN0b3JlMzIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1
ZSwgcG9pbnRlcik7IH0KKyAgICB2b2lkIHN0b3JlNjQoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50
ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlcik7IH0KKyAgICB2b2lkIHN0b3JlUHRy
KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50
ZXIpOyB9CisgICAgdm9pZCBzdG9yZURvdWJsZShMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBw
b2ludGVyKSB7IHN0b3JlKHZhbHVlLCBwb2ludGVyKTsgfQogCisgICAgTFZhbHVlIGFkZFB0cihM
VmFsdWUgdmFsdWUsIHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAwKQorICAgIHsKKyAgICAgICAgaWYg
KCFpbW1lZGlhdGUpCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBh
ZGQodmFsdWUsIGNvbnN0SW50UHRyKGltbWVkaWF0ZSkpOworICAgIH0KKyAgICAKICAgICAvLyBD
b25zdHJ1Y3QgYW4gYWRkcmVzcyBieSBvZmZzZXR0aW5nIGJhc2UgYnkgdGhlIHJlcXVlc3RlZCBh
bW91bnQgYW5kIGFzY3JpYmluZwogICAgIC8vIHRoZSByZXF1ZXN0ZWQgYWJzdHJhY3QgaGVhcCB0
byBpdC4KLSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzcyhjb25zdCBBYnN0cmFjdEhlYXAmIGhlYXAs
IExWYWx1ZSBiYXNlLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkgeyBDUkFTSCgpOyB9CisgICAgVHlw
ZWRQb2ludGVyIGFkZHJlc3MoY29uc3QgQWJzdHJhY3RIZWFwJiBoZWFwLCBMVmFsdWUgYmFzZSwg
cHRyZGlmZl90IG9mZnNldCA9IDApCisgICAgeworICAgICAgICByZXR1cm4gVHlwZWRQb2ludGVy
KGhlYXAsIGFkZFB0cihiYXNlLCBvZmZzZXQpKTsKKyAgICB9CiAgICAgLy8gQ29uc3RydWN0IGFu
IGFkZHJlc3MgYnkgb2Zmc2V0dGluZyBiYXNlIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5IHRo
ZSBmaWVsZCwKICAgICAvLyBhbmQgb3B0aW9uYWxseSBhbiBhZGRpdGlvbmFsIGFtb3VudCAodXNl
IHRoaXMgd2l0aCBjYXJlKSwgYW5kIHRoZW4gY3JlYXRpbmcKICAgICAvLyBhIFR5cGVkUG9pbnRl
ciB3aXRoIHRoZSBnaXZlbiBmaWVsZCBhcyB0aGUgaGVhcC4KLSAgICBUeXBlZFBvaW50ZXIgYWRk
cmVzcyhMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYgZmllbGQsIHB0cmRpZmZfdCBv
ZmZzZXQgPSAwKSB7IENSQVNIKCk7IH0KKyAgICBUeXBlZFBvaW50ZXIgYWRkcmVzcyhMVmFsdWUg
YmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYgZmllbGQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MoZmllbGQsIGJhc2UsIG9mZnNldCArIGZpZWxk
Lm9mZnNldCgpKTsKKyAgICB9CiAKICAgICBMVmFsdWUgYmFzZUluZGV4KExWYWx1ZSBiYXNlLCBM
VmFsdWUgaW5kZXgsIFNjYWxlLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkgeyBDUkFTSCgpOyB9CiAK
QEAgLTIzNSw3ICsyNTUsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBhYm92ZShMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgYWJvdmVPckVxdWFs
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBiZWxv
dyhMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgYmVs
b3coTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIEJlbG93LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZh
bHVlIGJlbG93T3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0K
ICAgICBMVmFsdWUgZ3JlYXRlclRoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFT
SCgpOyB9CiAgICAgTFZhbHVlIGdyZWF0ZXJUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IENSQVNIKCk7IH0KQEAgLTI1NiwxOSArMjc2LDE5IEBAIHB1YmxpYzoKICAgICBM
VmFsdWUgZG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JV
bm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CiAKLSAgICBM
VmFsdWUgaXNaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgbm90
WmVybzMyKExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGlzWmVybzY0KExW
YWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIG5vdFplcm82NChMVmFsdWUgdmFs
dWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBpc051bGwoTFZhbHVlIHZhbHVlKSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgbm90TnVsbChMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQotCi0g
ICAgTFZhbHVlIHRlc3RJc1plcm8zMihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgdGVzdE5vblplcm8zMihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNr
KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgdGVzdElzWmVybzY0KExWYWx1ZSB2YWx1ZSwgTFZh
bHVlIG1hc2spIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSB0ZXN0Tm9uWmVybzY0KExWYWx1ZSB2
YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSB0ZXN0SXNaZXJvUHRy
KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSB0ZXN0
Tm9uWmVyb1B0cihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IENSQVNIKCk7IH0KKyAgICBM
VmFsdWUgaXNaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsgfQorICAg
IExWYWx1ZSBub3RaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8VmFsdWU+KG1fcHJvYywgTm90RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsg
fQorICAgIExWYWx1ZSBpc1plcm82NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQ2NFplcm8p
OyB9CisgICAgTFZhbHVlIG5vdFplcm82NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBOb3RFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQ2
NFplcm8pOyB9CisgICAgTFZhbHVlIGlzTnVsbChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGlzWmVy
bzY0KHZhbHVlKTsgfQorICAgIExWYWx1ZSBub3ROdWxsKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4g
bm90WmVybzY0KHZhbHVlKTsgfQorCisgICAgTFZhbHVlIHRlc3RJc1plcm8zMihMVmFsdWUgdmFs
dWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBpc1plcm8zMihiaXRBbmQodmFsdWUsIG1hc2spKTsg
fQorICAgIExWYWx1ZSB0ZXN0Tm9uWmVybzMyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsg
cmV0dXJuIG5vdFplcm8zMihiaXRBbmQodmFsdWUsIG1hc2spKTsgfQorICAgIExWYWx1ZSB0ZXN0
SXNaZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gaXNaZXJvNjQoYml0
QW5kKHZhbHVlLCBtYXNrKSk7IH0KKyAgICBMVmFsdWUgdGVzdE5vblplcm82NChMVmFsdWUgdmFs
dWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBub3RaZXJvNjQoYml0QW5kKHZhbHVlLCBtYXNrKSk7
IH0KKyAgICBMVmFsdWUgdGVzdElzWmVyb1B0cihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7
IHJldHVybiBpc051bGwoYml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KKyAgICBMVmFsdWUgdGVzdE5v
blplcm9QdHIoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gbm90TnVsbChiaXRB
bmQodmFsdWUsIG1hc2spKTsgfQogCiAgICAgTFZhbHVlIHNlbGVjdChMVmFsdWUgdmFsdWUsIExW
YWx1ZSB0YWtlbiwgTFZhbHVlIG5vdFRha2VuKSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgZXh0
cmFjdFZhbHVlKExWYWx1ZSBhZ2dWYWwsIHVuc2lnbmVkIGluZGV4KSB7IENSQVNIKCk7IH0KQEAg
LTI3NywxOCArMjk3LDIxIEBAIHB1YmxpYzoKICAgICBMVmFsdWUgZmVuY2VBY3FSZWwoKSB7IENS
QVNIKCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+Ci0gICAgTFZhbHVl
IGNhbGwoTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgQ1JBU0go
KTsgfQotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbikgeyBDUkFTSCgpOyB9Ci0gICAg
TFZhbHVlIGNhbGwoTFZhbHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSkgeyBDUkFTSCgpOyB9Cisg
ICAgTFZhbHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBWZWN0b3JU
eXBlJiB2ZWN0b3IpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3By
b2MsIHR5cGUsIG9yaWdpbigpLCBCMzo6QWRqYWNlbmN5TGlzdCh2ZWN0b3IpKTsgfQorICAgIExW
YWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbikgeyByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCkpOyB9CisgICAgTFZh
bHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCks
IGFyZzEpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgY2Fs
bChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFyZ3MpIHsgQ1JBU0goKTsg
fQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFy
ZzEsIEFyZ3MuLi4gYXJncykgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+
KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIGFyZzEsIGFyZ3MuLi4pOyB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+Ci0gICAgTFZhbHVlIG9wZXJhdGlvbihGdW5jdGlvblR5
cGUgZnVuY3Rpb24pIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25U
eXBlIGZ1bmN0aW9uKSB7IHJldHVybiBjb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1
bmN0aW9uKSk7IH0KIAotICAgIHZvaWQganVtcChMQmFzaWNCbG9jayBkZXN0aW5hdGlvbikgeyBD
UkFTSCgpOyB9Ci0gICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgTEJhc2ljQmxvY2sg
dGFrZW4sIFdlaWdodCB0YWtlbldlaWdodCwgTEJhc2ljQmxvY2sgbm90VGFrZW4sIFdlaWdodCBu
b3RUYWtlbldlaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRp
dGlvbiwgV2VpZ2h0ZWRUYXJnZXQgdGFrZW4sIFdlaWdodGVkVGFyZ2V0IG5vdFRha2VuKSB7IENS
QVNIKCk7IH0KKyAgICB2b2lkIGp1bXAoTEJhc2ljQmxvY2sgZGVzdGluYXRpb24pIHsgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KG1fcHJvYywgSnVtcCwgb3JpZ2luKCks
IEZyZXF1ZW50ZWRCbG9jayhkZXN0aW5hdGlvbikpOyB9CisgICAgdm9pZCBicmFuY2goTFZhbHVl
IGNvbmRpdGlvbiwgTEJhc2ljQmxvY2sgdGFrZW4sIFdlaWdodCB0YWtlbldlaWdodCwgTEJhc2lj
QmxvY2sgbm90VGFrZW4sIFdlaWdodCBub3RUYWtlbldlaWdodCk7CisgICAgdm9pZCBicmFuY2go
TFZhbHVlIGNvbmRpdGlvbiwgV2VpZ2h0ZWRUYXJnZXQgdGFrZW4sIFdlaWdodGVkVGFyZ2V0IG5v
dFRha2VuKQorICAgIHsKKyAgICAgICAgYnJhbmNoKGNvbmRpdGlvbiwgdGFrZW4udGFyZ2V0KCks
IHRha2VuLndlaWdodCgpLCBub3RUYWtlbi50YXJnZXQoKSwgbm90VGFrZW4ud2VpZ2h0KCkpOwor
ICAgIH0KIAogICAgIC8vIEJyYW5jaGVzIHRvIGFuIGFscmVhZHktY3JlYXRlZCBoYW5kbGVyIGlm
IHRydWUsICJmYWxscyB0aHJvdWdoIiBpZiBmYWxzZS4gRmFsbC10aHJvdWdoIGlzCiAgICAgLy8g
c2ltdWxhdGVkIGJ5IGNyZWF0aW5nIGEgY29udGludWF0aW9uIGZvciB5b3UuCkBAIC0zMDAsOSAr
MzIzLDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgogICAg
IHZvaWQgc3dpdGNoSW5zdHJ1Y3Rpb24oTFZhbHVlIHZhbHVlLCBjb25zdCBWZWN0b3JUeXBlJiBj
YXNlcywgTEJhc2ljQmxvY2sgZmFsbFRocm91Z2gsIFdlaWdodCBmYWxsVGhyb3VnaFdlaWdodCkg
eyBDUkFTSCgpOyB9CiAKLSAgICB2b2lkIHJldChMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQor
ICAgIHZvaWQgcmV0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9CisKKyAgICB2b2lkIHVucmVh
Y2hhYmxlKCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4obV9wcm9j
LCBPb3BzLCBvcmlnaW4oKSk7IH0KIAotICAgIHZvaWQgdW5yZWFjaGFibGUoKSB7IENSQVNIKCk7
IH0KKyAgICB0ZW1wbGF0ZTxGdW5jdG9yPgorICAgIHZvaWQgY2hlY2soTFZhbHVlIHZhbHVlLCBj
b25zdCBTdGFja21hcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNoZWNrID0gbV9ibG9jay0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLCB2YWx1ZSk7CisgICAgICAgIGZvciAo
TFZhbHVlIHZhbHVlIDogYXJndW1lbnRzKQorICAgICAgICAgICAgY2hlY2stPmFwcGVuZCh2YWx1
ZSk7CisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoZnVuY3Rvcik7CisgICAgfQogCiAgICAg
dm9pZCB0cmFwKCkgeyBDUkFTSCgpOyB9CiAKQEAgLTMxNiw4ICszNDgsOSBAQCBwdWJsaWM6CiAg
ICAgTFZhbHVlIHBhdGNocG9pbnRWb2lkSW50cmluc2ljKCkgeyBDUkFTSCgpOyB9CiAKICNwcmFn
bWEgbWFyayAtIFN0YXRlcwotICAgIEIzOjpQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOworICAgIEIz
OjpQcm9jZWR1cmUmIG1fcHJvYzsKIAorICAgIERGRzo6Tm9kZSBtX29yaWdpbiB7IG51bGxwdHIg
fTsKICAgICBMQmFzaWNCbG9jayBtX2Jsb2NrIHsgbnVsbHB0ciB9OwogICAgIExCYXNpY0Jsb2Nr
IG1fbmV4dEJsb2NrIHsgbnVsbHB0ciB9OwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAJKHJldmlzaW9uIDE5MjU5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcsNiArODcsMTUgQEAgQ29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMoTENvbnRleHQgY29u
dAogI2VuZGlmCiB9CiAKK3ZvaWQgQ29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29uc3RhbnRzKEIz
OjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBib29sZWFu
VHJ1ZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7
CisgICAgYm9vbGVhbkZhbHNlID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKTsKKyAgICBpbnQzMlplcm8gPSBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOworICAgIGludDMyT25lID0gYmxvY2stPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICBpbnQ2NFplcm8gPSBibG9j
ay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkocmV2aXNpb24g
MTkyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDE1IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKIGNsYXNzIENvbW1vblZhbHVlcyB7CiBwdWJsaWM6CiAgICAgQ29tbW9uVmFsdWVz
KExDb250ZXh0IGNvbnRleHQpOwotICAgIAorCisjaWYgRlRMX1VTRVNfQjMKKyAgICB2b2lkIGlu
aXRpYWxpemVDb25zdGFudHMoQjM6OlByb2NlZHVyZSYsIEIzOjpCYXNpY0Jsb2NrKik7CisjZWxz
ZSAvLyBGVExfVVNFU19CMwogICAgIHZvaWQgaW5pdGlhbGl6ZShMTW9kdWxlIG1vZHVsZSkKICAg
ICB7CiAgICAgICAgIG1fbW9kdWxlID0gbW9kdWxlOwogICAgIH0KKyNlbmRpZiAvLyBGVExfVVNF
U19CMwogICAgIAogICAgIGNvbnN0IExUeXBlIHZvaWRUeXBlOwogICAgIGNvbnN0IExUeXBlIGJv
b2xlYW47CkBAIC02MCwyMCArNjQsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IExUeXBlIHJlZkZs
b2F0OwogICAgIGNvbnN0IExUeXBlIHJlZkRvdWJsZTsKICNlbmRpZgotICAgIGNvbnN0IExWYWx1
ZSBib29sZWFuVHJ1ZSB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgYm9vbGVhbkZhbHNl
IHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnQ4WmVybyB7IG51bGxwdHIgfTsKLSAg
ICBjb25zdCBMVmFsdWUgaW50MzJaZXJvIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBp
bnQzMk9uZSB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50NjRaZXJvIHsgbnVsbHB0
ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnRQdHJaZXJvIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0
IExWYWx1ZSBpbnRQdHJPbmUgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGludFB0clR3
byB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07
Ci0gICAgY29uc3QgTFZhbHVlIGludFB0ckZvdXIgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZh
bHVlIGludFB0ckVpZ2h0IHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnRQdHJQdHIg
eyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGRvdWJsZVplcm8geyBudWxscHRyIH07Cisg
ICAgTFZhbHVlIGJvb2xlYW5UcnVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBib29sZWFuRmFs
c2UgeyBudWxscHRyIH07CisjaWYgIUZUTF9VU0VTX0IzCisgICAgTFZhbHVlIGludDhaZXJvIHsg
bnVsbHB0ciB9OworI2VuZGlmCisgICAgTFZhbHVlIGludDMyWmVybyB7IG51bGxwdHIgfTsKKyAg
ICBMVmFsdWUgaW50MzJPbmUgeyBudWxscHRyIH07CisgICAgTFZhbHVlIGludDY0WmVybyB7IG51
bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50UHRyWmVybyB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUg
aW50UHRyT25lIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBpbnRQdHJUd28geyBudWxscHRyIH07
CisgICAgTFZhbHVlIGludFB0clRocmVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBpbnRQdHJG
b3VyIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBpbnRQdHJFaWdodCB7IG51bGxwdHIgfTsKKyAg
ICBMVmFsdWUgaW50UHRyUHRyIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBkb3VibGVaZXJvIHsg
bnVsbHB0ciB9OwogICAgIAogICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZCB7IDAgfTsKICAg
ICBjb25zdCB1bnNpZ25lZCBwcm9mS2luZCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxOTI1OTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZU
TCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBCMzsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIG5hbWVz
cGFjZSB7CkBAIC0xMDUsNiArMTA2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZnRsU3RhdGUo
c3RhdGUpCiAgICAgICAgICwgbV9oZWFwcyhzdGF0ZS5jb250ZXh0KQogICAgICAgICAsIG1fb3V0
KHN0YXRlKQorICAgICAgICAsIG1fcHJvYygqc3RhdGUucHJvYykKICAgICAgICAgLCBtX3N0YXRl
KHN0YXRlLmdyYXBoKQogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3Rh
dGUpCiAgICAgICAgICwgbV9zdGFja21hcElEcygwKQpAQCAtMTI3LDE0ICsxMjksNyBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKIAotI2lm
IEZUTF9VU0VTX0IzCi0gICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkgfHwg
IXZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIENSQVNIKCk7Ci0KLSAg
ICAgICAgbV9wcm9sb2d1ZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiUHJvbG9ndWUiKSk7Ci0g
ICAgICAgIExCYXNpY0Jsb2NrIHN0YWNrT3ZlcmZsb3cgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IlN0YWNrIG92ZXJmbG93IikpOwotICAgICAgICBMQmFzaWNCbG9jayBjaGVja0FyZ3VtZW50cyA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQ2hlY2sgYXJndW1lbnRzIikpOwotI2Vsc2UKKyNpZiAh
RlRMX1VTRVNfQjMKICAgICAgICAgbV9mdGxTdGF0ZS5tb2R1bGUgPQogICAgICAgICAgICAgbW9k
dWxlQ3JlYXRlV2l0aE5hbWVJbkNvbnRleHQobmFtZS5kYXRhKCksIG1fZnRsU3RhdGUuY29udGV4
dCk7CiAgICAgICAgIApAQCAtMTQ2LDExICsxNDEsMTYgQEAgcHVibGljOgogICAgICAgICAgICAg
Ly8gc2xvd2VyLiBJdCBzaG91bGQgYmUgZGlzYWJsZWQuCiAgICAgICAgICAgICBhZGRUYXJnZXRE
ZXBlbmRlbnRGdW5jdGlvbkF0dHIobV9mdGxTdGF0ZS5mdW5jdGlvbiwgInRhcmdldC1mZWF0dXJl
cyIsICItYXZ4Iik7CiAgICAgICAgIH0KKyNlbmRmIC8vICFGVExfVVNFU19CMwogICAgICAgICAK
ICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRh
dGFMb2coIkZ1bmN0aW9uIHJlYWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKLSAgICAgICAg
CisKKyNpZiBGVExfVVNFU19CMworICAgICAgICBtX291dC5pbml0aWFsaXplKG1faGVhcHMpOwor
I2Vsc2UKICAgICAgICAgbV9vdXQuaW5pdGlhbGl6ZShtX2Z0bFN0YXRlLm1vZHVsZSwgbV9mdGxT
dGF0ZS5mdW5jdGlvbiwgbV9oZWFwcyk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIG1fcHJv
bG9ndWUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlByb2xvZ3VlIikpOwogICAgICAgICBMQmFz
aWNCbG9jayBzdGFja092ZXJmbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdGFjayBvdmVy
ZmxvdyIpKTsKQEAgLTE2Niw4ICsxNjYsMTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhtX3Byb2xvZ3VlLCBzdGFja092ZXJmbG93KTsKKyAg
ICAgICAgbV9vdXQuaW5pdGlhbGl6ZUNvbnN0YW50cyhtX3Byb2MsIG1fcHJvbG9ndWUpOwogICAg
ICAgICBjcmVhdGVQaGlWYXJpYWJsZXMoKTsKIAorI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIG1f
Y2FwdHVyZWQgPSBtX291dC5sb2NrZWRTdGFja1Nsb3Qoc2l6ZW9mKEpTVmFsdWUpICogbV9ncmFw
aC5tX25leHRNYWNoaW5lTG9jYWwpOworICAgICAgICBtX2Z0bFN0YXRlLmNhcHR1cmVkVmFsdWUg
PSBtX2NhcHR1cmVkOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICAgICAgTFZhbHVlIGNhcHR1
cmVkQWxsb2NhID0gbV9vdXQuYWxsb2NhKGFycmF5VHlwZShtX291dC5pbnQ2NCwgbV9ncmFwaC5t
X25leHRNYWNoaW5lTG9jYWwpKTsKICAgICAgICAgCiAgICAgICAgIG1fY2FwdHVyZWQgPSBtX291
dC5hZGQoCkBAIC0xNzYsOSArMTgxLDkgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgbV9m
dGxTdGF0ZS5jYXB0dXJlZFN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIG1f
b3V0LmNhbGwoCi0gICAgICAgICAgICBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291dC5j
b25zdEludDY0KG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEKSwKKyAgICAgICAgICAgIG1f
b3V0LnZvaWRUeXBlLCBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0
KG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEKSwKICAgICAgICAgICAgIG1fb3V0LmludDMy
WmVybywgY2FwdHVyZWRBbGxvY2EpOwotI2VuZGlmCisjZW5kaWYgLy8gRlRMX1VTRV9CMwogCiAg
ICAgICAgIGF1dG8gcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAg
ICAgCkBAIC0yNDQsMTUgKzI0OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmIEZUTF9V
U0VTX0IzCi0gICAgICAgIGlmIChoYXNWYXJhcmdzIHx8ICFoYXNWYXJhcmdzKQotICAgICAgICAg
ICAgQ1JBU0goKTsKKyAgICAgICAgLy8gRklYTUUKICNlbHNlCiAgICAgICAgIGlmIChoYXNWYXJh
cmdzKSB7CiAgICAgICAgICAgICBMVmFsdWUgdmFyYXJnc1NwaWxsU2xvdHMgPSBtX291dC5hbGxv
Y2EoCiAgICAgICAgICAgICAgICAgYXJyYXlUeXBlKG1fb3V0LmludDY0LCBKU0NhbGxWYXJhcmdz
OjpudW1TcGlsbFNsb3RzTmVlZGVkKCkpKTsKICAgICAgICAgICAgIG1fZnRsU3RhdGUudmFyYXJn
c1NwaWxsU2xvdHNTdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwogICAgICAgICAgICAgbV9v
dXQuY2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291
dC5jb25zdEludDY0KG1fZnRsU3RhdGUudmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEKSwKKyAg
ICAgICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwK
KyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUudmFyYXJnc1NwaWxs
U2xvdHNTdGFja21hcElEKSwKICAgICAgICAgICAgICAgICBtX291dC5pbnQzMlplcm8sIHZhcmFy
Z3NTcGlsbFNsb3RzKTsKICAgICAgICAgfQogCkBAIC0yNjQsNyArMjY5LDggQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIGFycmF5VHlwZShtX291dC5pbnQ2NCwgbWF4TnVtYmVyT2ZDYXRjaFNw
aWxscykpOwogICAgICAgICAgICAgbV9mdGxTdGF0ZS5leGNlcHRpb25IYW5kbGluZ1NwaWxsU2xv
dFN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgICAgICBtX291dC5jYWxsKAot
ICAgICAgICAgICAgICAgIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCksIG1fb3V0LmNvbnN0SW50
NjQobV9mdGxTdGF0ZS5leGNlcHRpb25IYW5kbGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQpLAorICAg
ICAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBtX291dC5zdGFja21hcEludHJpbnNpYygpLAor
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQobV9mdGxTdGF0ZS5leGNlcHRpb25IYW5k
bGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQpLAogICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVy
bywgZXhjZXB0aW9uSGFuZGxpbmdWb2xhdGlsZVJlZ2lzdGVyc1NwaWxsU2xvdHMpOwogICAgICAg
ICB9CiAjZW5kaWYKQEAgLTI3Miw4ICsyNzgsMTIgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBz
aG91bGQgbm90IGNyZWF0ZSBhbnkgYWxsb2NhJ3MgYWZ0ZXIgdGhpcyBwb2ludCwgc2luY2UgdGhl
eSB3aWxsIGNlYXNlIHRvCiAgICAgICAgIC8vIGJlIG1lbTJyZWcgY2FuZGlkYXRlcy4KICAgICAg
ICAgCisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgbV9jYWxsRnJhbWUgPSBtX291dC5mcmFtZVBv
aW50ZXIoKTsKKyNlbHNlCiAgICAgICAgIG1fY2FsbEZyYW1lID0gbV9vdXQucHRyVG9JbnQoCi0g
ICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0LmZyYW1lQWRkcmVzc0ludHJpbnNpYygpLCBtX291
dC5pbnQzMlplcm8pLCBtX291dC5pbnRQdHIpOworICAgICAgICAgICAgbV9vdXQuY2FsbChtX291
dC5pbnRQdHIsIG1fb3V0LmZyYW1lQWRkcmVzc0ludHJpbnNpYygpLCBtX291dC5pbnQzMlplcm8p
LCBtX291dC5pbnRQdHIpOworI2VuZGlmCiAgICAgICAgIG1fdGFnVHlwZU51bWJlciA9IG1fb3V0
LmNvbnN0SW50NjQoVGFnVHlwZU51bWJlcik7CiAgICAgICAgIG1fdGFnTWFzayA9IG1fb3V0LmNv
bnN0SW50NjQoVGFnTWFzayk7CiAgICAgICAgIApAQCAtMjgzLDE4ICsyOTMsMjcgQEAgcHVibGlj
OgogICAgICAgICAgICAgZGlkT3ZlcmZsb3dTdGFjaygpLCByYXJlbHkoc3RhY2tPdmVyZmxvdyks
IHVzdWFsbHkoY2hlY2tBcmd1bWVudHMpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHN0YWNrT3ZlcmZsb3csIG1faGFuZGxlRXhjZXB0aW9ucyk7Ci0gICAgICAgIG1fb3V0LmNh
bGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKSwgbV9j
YWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSk7CisgICAgICAgIG1fb3V0
LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNr
T3ZlcmZsb3dFcnJvciksIG1fY2FsbEZyYW1lLCBtX291dC5jb25zdEludFB0cihjb2RlQmxvY2so
KSkpOworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIC8vIEZJWE1FCisjZWxzZQogICAgICAgICBt
X2Z0bFN0YXRlLmhhbmRsZVN0YWNrT3ZlcmZsb3dFeGNlcHRpb25TdGFja21hcElEID0gbV9zdGFj
a21hcElEcysrOwogICAgICAgICBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQuc3RhY2tt
YXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmhhbmRsZVN0YWNrT3Zl
cmZsb3dFeGNlcHRpb25TdGFja21hcElEKSwKKyAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBt
X291dC5zdGFja21hcEludHJpbnNpYygpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NCht
X2Z0bFN0YXRlLmhhbmRsZVN0YWNrT3ZlcmZsb3dFeGNlcHRpb25TdGFja21hcElEKSwKICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50MzIoTWFjcm9Bc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKSkpOworI2VuZGlmCiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAgICAgICAg
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhtX2hhbmRsZUV4Y2VwdGlvbnMsIGNoZWNrQXJndW1l
bnRzKTsKKyNpZiBGVExfVVNFU19CMworICAgICAgICAvLyBGSVhNRQorI2Vsc2UKICAgICAgICAg
bV9mdGxTdGF0ZS5oYW5kbGVFeGNlcHRpb25TdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwog
ICAgICAgICBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMo
KSwgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQp
LAorICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCks
IG1fb3V0LmNvbnN0SW50NjQobV9mdGxTdGF0ZS5oYW5kbGVFeGNlcHRpb25TdGFja21hcElEKSwK
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoTWFjcm9Bc3NlbWJsZXI6Om1heEp1bXBSZXBs
YWNlbWVudFNpemUoKSkpOworI2VuZGlmCiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAg
ICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjaGVja0FyZ3VtZW50cywgbG93QmxvY2so
bV9ncmFwaC5ibG9jaygwKSkpOwpAQCAtMzg3LDcgKzQwNiwxMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJhZCBQaGkgbm9kZSByZXN1
bHQgdHlwZSIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgICAgICAgICBtX3BoaXMuYWRkKG5vZGUsIG1fcHJv
Yy5hZGQ8VmFsdWU+KFBoaSwgdHlwZSwgT3JpZ2luKG5vZGUpKSk7CisjZWxzZQogICAgICAgICAg
ICAgICAgIG1fcGhpcy5hZGQobm9kZSwgbV9vdXQuYWxsb2NhKHR5cGUpKTsKKyNlbmRpZgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNDcxLDYgKzQ5NCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBtX25vZGUgPSBtX2hpZ2hCbG9jay0+YXQobm9kZUluZGV4KTsK
ICAgICAgICAgbV9vcmlnaW4gPSBtX25vZGUtPm9yaWdpbjsKKyAgICAgICAgbV9vdXQuc2V0T3Jp
Z2luKG1fbm9kZSk7CiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5h
YmxlZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiTG93ZXJpbmcgIiwgbV9ub2RlLCAiXG4iKTsK
QEAgLTE0MDMsNyArMTQyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlv
bihmdW5jdGlvbiksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOworICAgICAgICAgICAgdm1DYWxsKG1f
b3V0LmludDY0LCBtX291dC5vcGVyYXRpb24oZnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgdmFsdWUp
KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xNDE5LDcgKzE0NDMs
NyBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVy
YXRpb25WYWx1ZUFkZDsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCi0gICAgICAgICAgICBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBtX291
dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbiksIG1fY2FsbEZyYW1lLAogICAgICAg
ICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKSkpOwogICAgIH0KICAgICAKQEAgLTE0MjgsMTMgKzE0NTIsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQzKCkpIHsK
ICAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uU3RyQ2F0MyksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgIG1f
b3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MyksIG1fY2FsbEZyYW1l
LAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiksCiAgICAgICAgICAgICAgICAgbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMygpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgICAg
ICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MiksIG1fY2FsbEZyYW1lLAorICAgICAg
ICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0Miks
IG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpOwogICAgICAgICB9
CkBAIC0xNTc3LDcgKzE2MDEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBhcHBlbmRPU1JF
eGl0QXJndW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENhdGNoRXhjZXB0aW9uKGFyZ3VtZW50cywg
RXhjZXB0aW9uVHlwZTo6U3ViR2VuZXJhdG9yLCAzKTsgLy8gbGVmdCwgcmlnaHQsIGFuZCByZXN1
bHQgc2hvdyB1cCBpbiB0aGUgc3RhY2ttYXAgbG9jYXRpb25zLgogCi0gICAgICAgICAgICBMVmFs
dWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFy
Z3VtZW50cyk7CisgICAgICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50
NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAg
ICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2Fs
bENvbnYpOwogCiAgICAgICAgICAgICBtX2Z0bFN0YXRlLmFyaXRoU3Vicy5hcHBlbmQoQXJpdGhT
dWJEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLApAQCAtMjI5
MiwxNyArMjMxNiwxNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKLSAg
ICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlSW50MzIpLCBt
X2NhbGxGcmFtZSwgY2VsbCk7CisgICAgICAgICAgICB2bUNhbGwobV9vdXQudm9pZFR5cGUsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVJbnQzMiksIG1fY2FsbEZyYW1lLCBjZWxsKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAg
ICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZURvdWJsZSksIG1fY2Fs
bEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZURvdWJsZSksIG1fY2FsbEZyYW1lLCBjZWxsKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAgICAg
ICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzKSwg
bV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQ29udGlndW91cyksIG1fY2FsbEZyYW1lLCBj
ZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3Jh
Z2U6CiAgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgICAg
ICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUFycmF5U3RvcmFnZSksIG1f
Y2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChtX291dC52b2lkVHlwZSwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUFycmF5U3RvcmFnZSksIG1fY2FsbEZyYW1lLCBj
ZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBhcnJheSB0eXBlIik7CkBAIC0yMzYxLDcg
KzIzODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAg
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyksCisgICAgICAgICAgICAg
ICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyks
CiAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHZhbHVlLAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKV0pKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC0y
NDA3LDcgKzI0MzEsNyBAQCBwcml2YXRlOgogICAgICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1f
b3V0LmNvbnN0SW50MzIoc2l6ZU9mUHV0QnlJZCgpKSk7CiAgICAgICAgIGFyZ3VtZW50cy5pbnNl
cnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSk7CiAKLSAgICAgICAgTFZhbHVlIGNh
bGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRWb2lkSW50cmluc2ljKCksIGFyZ3VtZW50
cyk7CisgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC52b2lkVHlwZSwgbV9v
dXQucGF0Y2hwb2ludFZvaWRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKICAgICAgICAgc2V0SW5z
dHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwogICAg
ICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5wdXRCeUlkcy5hcHBlbmQoUHV0QnlJZERlc2NyaXB0
b3IoCkBAIC0yNDQ5LDcgKzI0NzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0
LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
blJlc29sdmVSb3BlKSwgbV9jYWxsRnJhbWUsIGNlbGwpKTsKKyAgICAgICAgICAgICAgICB2bUNh
bGwobV9vdXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBt
X2NhbGxGcmFtZSwgY2VsbCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKQEAgLTI2MDcsNyArMjYzMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBj
b250aW51YXRpb24pOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKKyAgICAg
ICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25H
ZXRCeVZhbEFycmF5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSk7CiAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMjY1OSw3ICsyNjgzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xv
d0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uR2V0QnlWYWxBcnJheUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkp
OworICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKICAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yNzQ5LDcg
KzI3NzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6Okdl
bmVyaWM6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAgICAg
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCksIG1fY2FsbEZyYW1lLAorICAgICAg
ICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwp
LCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTI4OTgsNyArMjkyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICAgICAg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbiksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAg
IG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUs
CiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShjaGlsZDEpLCBsb3dKU1ZhbHVlKGNoaWxkMiks
IGxvd0pTVmFsdWUoY2hpbGQzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTMxMzcsNiArMzE2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBhY2Nlc3NvciA9IGxv
d0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKICAgICAgICAgdm1DYWxsKAor
ICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsCiAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24o
bV9ub2RlLT5vcCgpID09IFB1dEdldHRlckJ5SWQgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkIDog
b3BlcmF0aW9uUHV0U2V0dGVyQnlJZCksCiAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwg
bV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29y
QXR0cmlidXRlcygpKSwgYWNjZXNzb3IpOwogICAgIH0KQEAgLTMxNDgsNyArMzE3Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIExWYWx1ZSBzZXR0ZXIgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKV07CiAgICAgICAgIHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIpLAorICAgICAgICAgICAgbV9vdXQudm9p
ZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIpLAogICAgICAg
ICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKHVpZCksIG1fb3V0LmNv
bnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGdldHRlciwgc2V0dGVyKTsK
IAogICAgIH0KQEAgLTMxNTksNiArMzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBz
dWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUg
YWNjZXNzb3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICB2bUNhbGwoCisg
ICAgICAgICAgICBtX291dC52b2lkVHlwZSwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbiht
X25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlWYWwgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeVZhbCA6
IG9wZXJhdGlvblB1dFNldHRlckJ5VmFsKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNl
LCBzdWJzY3JpcHQsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMo
KSksIGFjY2Vzc29yKTsKICAgICB9CkBAIC0zMjIzLDcgKzMyNDksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25BcnJheVB1c2hEb3VibGUpOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
c2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwob3BlcmF0
aW9uLCBtX2NhbGxGcmFtZSwgdmFsdWUsIGJhc2UpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwo
bV9vdXQuaW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVlLCBiYXNlKSk7CiAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMzI4MSw3ICsz
MzA3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgpLCBtX2NhbGxGcmFtZSwgYmFzZSkpKTsKKyAg
ICAgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5
UG9wQW5kUmVjb3Zlckxlbmd0aCksIG1fY2FsbEZyYW1lLCBiYXNlKSkpOwogICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTMzMDQsNiArMzMzMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChpbml0aWFsaXphdGlvblZhbHVlLmlzVW5kZWZpbmVk
KCkgfHwgaW5pdGlhbGl6YXRpb25WYWx1ZSA9PSBqc1REWlZhbHVlKCkpOwogICAgICAgICBpZiAo
dGFibGUtPnNpbmdsZXRvblNjb3BlKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBM
VmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKKyAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwK
ICAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUpLAogICAgICAgICAg
ICAgICAgIHNjb3BlLCB3ZWFrUG9pbnRlcih0YWJsZSksIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6ZW5jb2RlKGluaXRpYWxpemF0aW9uVmFsdWUpKSk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVl
KGNhbGxSZXN1bHQpOwpAQCAtMzM2MSw4ICszMzg4LDggQEAgcHJpdmF0ZToKICAgICAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlv
bkV4ZWN1dGFibGUqPigpOwogICAgICAgICBpZiAoZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rp
b24oKS0+aXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0g
aXNBcnJvd0Z1bmN0aW9uCi0gICAgICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2lu
dGVyKGV4ZWN1dGFibGUpLCB0aGlzVmFsdWUpCi0gICAgICAgICAgICAgICAgOiB2bUNhbGwobV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3
ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAgICAgICAgICAgPyB2bUNhbGwobV9vdXQu
aW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJvd0Z1bmN0aW9uKSwgbV9jYWxs
RnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSwgdGhpc1ZhbHVlKQorICAgICAg
ICAgICAgICAgIDogdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
TmV3RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUp
KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoY2FsbFJlc3VsdCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTM1MjcsNyArMzU1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIExW
YWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAg
bV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVTY29wZWRBcmd1bWVu
dHMpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgIHdlYWtQb2ludGVyKAogICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2Nv
cGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJndW1lbnRzU3RhcnQo
KSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxsZWUoKSwgc2NvcGUp
OwpAQCAtMzUzOCw3ICszNTY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVD
bG9uZWRBcmd1bWVudHMoKQogICAgIHsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgK
LSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVu
dHMpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKSwgbV9jYWxsRnJhbWUsCiAgICAgICAg
ICAgICB3ZWFrUG9pbnRlcigKICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgp
KSwKICAgICAgICAgICAgIGdldEFyZ3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0aCgp
LnZhbHVlLCBnZXRDdXJyZW50Q2FsbGVlKCkpOwpAQCAtMzYwNyw3ICszNjM0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIGlmICghbV9ub2RlLT5udW1DaGlsZHJlbigpKSB7CiAgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAg
IG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSksIG1f
Y2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzYyOCw3ICszNjU1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHNjcmF0Y2hTaXplKSwgbV9v
dXQuYWJzb2x1dGUoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpKTsKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uTmV3QXJyYXkpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgIG1fb3V0
LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXkpLCBtX2NhbGxGcmFtZSwK
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50
UHRyKGJ1ZmZlciksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNo
aWxkcmVuKCkpKTsKICAgICAgICAgCkBAIC0zNjY5LDcgKzM2OTYsNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCgKLSAgICAgICAgICAg
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLAor
ICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJh
eUJ1ZmZlciksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3Ry
dWN0dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5zdGFydENvbnN0YW50KCkpLAogICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5udW1Db25zdGFudHMoKSkpKTsKICAg
ICB9CkBAIC0zNzgxLDcgKzM4MDgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIoCiAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksCiAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKTsKLSAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUpLCBt
X2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCkpOworICAgICAgICBzZXRK
U1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fy
cmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCkp
OwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgp
CkBAIC0zODcyLDcgKzM4OTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG9wZXJhdGlv
biA9IG1fb3V0Lm9wZXJhdGlvbihtX25vZGUtPm9wKCkgPT0gVG9TdHJpbmcgPyBvcGVyYXRpb25U
b1N0cmluZ09uQ2VsbCA6IG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbCk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbV9vdXQub3BlcmF0
aW9uKG1fbm9kZS0+b3AoKSA9PSBUb1N0cmluZyA/IG9wZXJhdGlvblRvU3RyaW5nIDogb3BlcmF0
aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNv
bnZlcnRlZFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwob3BlcmF0aW9uLCBtX2NhbGxGcmFt
ZSwgdmFsdWUpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvbnZlcnRlZFJlc3VsdCA9
IG1fb3V0LmFuY2hvcih2bUNhbGwobV9vdXQuaW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUs
IHZhbHVlKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwpAQCAtMzkwOCw3ICszOTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGlzT2JqZWN0Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25Ub1ByaW1pdGl2ZSksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpKTsKKyAgICAgICAgICAg
IG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9QcmltaXRpdmUpLCBtX2Nh
bGxGcmFtZSwgdmFsdWUpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpA
QCAtNDA0Niw3ICs0MDczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBWZWN0
b3I8VmFsdWVGcm9tQmxvY2ssIDQ+IHJlc3VsdHM7CiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1f
b3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKSwKICAgICAgICAgICAgIG1f
Y2FsbEZyYW1lLCBjaGFyMTZCaXQudmFsdWUoKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICAgICAgCkBAIC00MDg4LDcgKzQxMTUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKSk7
CisgICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25H
ZXRCeVZhbFN0cmluZ0ludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsKICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTQ2
MzMsNyArNDY2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9v
dXQuY29uc3RJbnQzMihzaXplT2ZDYWxsKCkpKTsKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgw
LCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsKICAgICAgICAgCi0gICAgICAgIExWYWx1
ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LmludDY0LCBt
X291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKICAgICAgICAgc2V0
SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNV2ViS2l0SlNDYWxsQ29udik7
CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmpzQ2FsbHMuYXBwZW5kKEpTQ2FsbChzdGFj
a21hcElELCBtX25vZGUsIGNvZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKSkpOwpAQCAt
NDY3Myw4ICs0NzAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgZXhpdEFyZ3VtZW50cy5pbnNlcnQo
MCwgbV9vdXQuY29uc3RJbnQzMih0YWlsQ2FsbC5lc3RpbWF0ZWRTaXplKCkpKTsKICAgICAgICAg
ZXhpdEFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSk7CiAK
LSAgICAgICAgTFZhbHVlIGNhbGwgPQotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5wYXRj
aHBvaW50Vm9pZEludHJpbnNpYygpLCBleGl0QXJndW1lbnRzKTsKKyAgICAgICAgTFZhbHVlIGNh
bGwgPSBtX291dC5jYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5wYXRjaHBvaW50Vm9pZEludHJp
bnNpYygpLCBleGl0QXJndW1lbnRzKTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29u
dmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwogICAgICAgICBtX291dC51bnJlYWNo
YWJsZSgpOwogCkBAIC00NzI2LDcgKzQ3NTIsNyBAQCBwcml2YXRlOgogICAgICAgICBhcmd1bWVu
dHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mSUNGb3IobV9ub2RlKSkpOwogICAg
ICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50NjQoc3RhY2ttYXBJRCkpOwog
ICAgICAgICAKLSAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9p
bnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOworICAgICAgICBMVmFsdWUgY2FsbCA9IG1f
b3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBh
cmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGws
IExMVk1DQ2FsbENvbnYpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5qc0NhbGxWYXJh
cmdzZXMuYXBwZW5kKEpTQ2FsbFZhcmFyZ3Moc3RhY2ttYXBJRCwgbV9ub2RlLCBjb2RlT3JpZ2lu
RGVzY3JpcHRpb25PZkNhbGxTaXRlKCkpKTsKQEAgLTQ3NDksNyArNDc3NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gdm1DYWxsKAotICAgICAgICAg
ICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MpLCBtX2NhbGxGcmFtZSwg
anNBcmd1bWVudHMsCisgICAgICAgICAgICBtX291dC5pbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvblNpemVPZlZhcmFyZ3MpLCBtX2NhbGxGcmFtZSwganNBcmd1bWVudHMsCiAgICAgICAg
ICAgICBtX291dC5jb25zdEludDMyKGRhdGEtPm9mZnNldCkpOwogICAgICAgICAKICAgICAgICAg
Ly8gRklYTUU6IFRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgd2Ugd2lsbCBjYWxsIGFuIGVmZmVjdGZ1
bCBsZW5ndGggcHJvcGVydHkgdHdpY2UuIFRoaXMgaXMgc2FmZQpAQCAtNDc3Myw3ICs0Nzk5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKDMpKTsKICAgICAgICAg
CiAgICAgICAgIHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25M
b2FkVmFyYXJncyksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncyksIG1fY2FsbEZyYW1lLAogICAgICAg
ICAgICAgbV9vdXQuY2FzdFRvSW50MzIobWFjaGluZVN0YXJ0KSwganNBcmd1bWVudHMsIG1fb3V0
LmNvbnN0SW50MzIoZGF0YS0+b2Zmc2V0KSwKICAgICAgICAgICAgIGxlbmd0aCwgbV9vdXQuY29u
c3RJbnQzMihkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKSk7CiAgICAgfQpAQCAtNDk2OSw3ICs0OTk1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
bmVlZFJlc29sdXRpb24sIHJlc29sdmVkKTsKICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQobV9v
dXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgc3RyaW5nVmFsdWUpKSk7CisgICAgICAgICAg
ICAgICAgdm1DYWxsKG1fb3V0LmludFB0ciwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlc29s
dmVSb3BlKSwgbV9jYWxsRnJhbWUsIHN0cmluZ1ZhbHVlKSkpOwogICAgICAgICAgICAgbV9vdXQu
anVtcChyZXNvbHZlZCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHJlc29sdmVkLCBpczhCaXQpOwpAQCAtNTMwNCw3ICs1MzMwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKAotICAgICAg
ICAgICAgICAgICAgICBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwKKyAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygp
LAogICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpLCBtX291
dC5jb25zdEludDMyKHNpemVPZkluKCkpLAogICAgICAgICAgICAgICAgICAgICBjb25zdE51bGwo
bV9vdXQucmVmOCksIG1fb3V0LmNvbnN0SW50MzIoMSksIGNlbGwpOwogCkBAIC01MzE2LDcgKzUz
NDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IAogCi0gICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZW5lcmljSW4pLCBtX2Nh
bGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdl
bmVyaWNJbiksIG1fY2FsbEZyYW1lLCBjZWxsLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
KSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTU0MjMsNyArNTQ0OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwo
CiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHRydWUpKSksIAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSkpOwor
ICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsKICAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC01NDU3LDcgKzU0ODMsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9y
KG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNl
LCBpbmRleCkpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwg
aW5kZXgpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwpAQCAtNTQ3NSw3ICs1NTAxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIExWYWx1ZSBi
YXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHByb3Bl
cnR5ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSksIG1fY2FsbEZy
YW1lLCBiYXNlLCBwcm9wZXJ0eSkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5p
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSksIG1fY2Fs
bEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUhhc1N0
cnVjdHVyZVByb3BlcnR5KCkKQEAgLTU1MDEsNyArNTUyNyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHdyb25nU3RydWN0dXJlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAogICAg
ICAgICAgICAgbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIAotICAgICAgICAgICAgICAgIHZtQ2Fs
bChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KSwgbV9jYWxsRnJh
bWUsIGJhc2UsIHByb3BlcnR5KSkpOworICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSksIG1fY2FsbEZy
YW1lLCBiYXNlLCBwcm9wZXJ0eSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAt
NTU0OCw3ICs1NTc0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93
Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0Nhc2VSZXN1
bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5VmFsKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5KSk7CisgICAgICAg
ICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CkBAIC01NTY0LDcgKzU1OTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUdl
dFByb3BlcnR5RW51bWVyYXRvcigpCiAgICAgewogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IpLCBtX2NhbGxGcmFtZSwgYmFz
ZSkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciksIG1fY2FsbEZyYW1lLCBiYXNlKSk7
CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lKCkK
QEAgLTU2MjIsNyArNTY0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlVG9JbmRleFN0
cmluZygpCiAgICAgewogICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvblRvSW5kZXhTdHJpbmcpLCBtX2NhbGxGcmFtZSwgaW5kZXgpKTsKKyAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub0luZGV4
U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGluZGV4KSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29t
cGlsZUNoZWNrU3RydWN0dXJlSW1tZWRpYXRlKCkKQEAgLTYxOTYsNiArNjIyMiw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBpZiAocHJldmlvdXNTdHJ1Y3R1cmUtPmNvdWxkSGF2ZUluZGV4
aW5nSGVhZGVyKCkpIHsKICAgICAgICAgICAgIHJldHVybiB2bUNhbGwoCisgICAgICAgICAgICAg
ICAgbV9vdXQuaW50UHRyLAogICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbigKICAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvSGF2ZVByb3BlcnR5
U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkpLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1l
LCBvYmplY3QpOwpAQCAtNjIxNiw3ICs2MjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIGlmIChwcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICAg
ICAgTFZhbHVlIG5ld0FsbG9jU2l6ZSA9IG1fb3V0LmNvbnN0SW50UHRyKG5ld1NpemUpOyAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gdm1DYWxsKG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKSwgbV9j
YWxsRnJhbWUsIG9iamVjdCwgbmV3QWxsb2NTaXplKTsKKyAgICAgICAgICAgIHJldHVybiB2bUNh
bGwobV9vdXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRl
cmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSksIG1fY2FsbEZyYW1lLCBvYmplY3QsIG5ld0FsbG9j
U2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhTaXplSW1wbChuZXdTaXplKTsKQEAgLTYzMDQsNyArNjMz
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJ
bnQzMihzaXplT2ZHZXRCeUlkKCkpKTsKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291
dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsgCiAKLSAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291
dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOworICAg
ICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9p
bnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNh
bGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIAogICAg
ICAgICBtX2Z0bFN0YXRlLmdldEJ5SWRzLmFwcGVuZChHZXRCeUlkRGVzY3JpcHRvcihzdGFja21h
cElELCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgdWlkKSk7CkBAIC02NTMxLDcgKzY1NTgsNyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNv
bnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24o
aGVscGVyRnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpKSk7CisgICAgICAgICAg
ICBtX291dC5ib29sZWFuLCBtX291dC5vcGVyYXRpb24oaGVscGVyRnVuY3Rpb24pLCBtX2NhbGxG
cmFtZSwgbGVmdCwgcmlnaHQpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwpAQCAtNzAzMiw3ICs3MDU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8ob3V0T2ZCb3VuZHNDYXNlLCBob2xl
Q2FzZSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHZtQ2FsbCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24pLAorICAg
ICAgICAgICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKHNsb3dQYXRo
RnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgs
IHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwpAQCAtNzMwOCw3ICs3MzM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDM2OQogICAgICAg
ICAKICAgICAgICAgTFZhbHVlIGJyYW5jaE9mZnNldCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRCcmFuY2hPZmZzZXQpLAor
ICAgICAgICAgICAgbV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hT
dHJpbmdBbmRHZXRCcmFuY2hPZmZzZXQpLAogICAgICAgICAgICAgbV9jYWxsRnJhbWUsIG1fb3V0
LmNvbnN0SW50UHRyKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpLCBzdHJpbmcpOwogICAgICAgICAK
ICAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jaygpLT5zdHJpbmdTd2l0
Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CkBAIC03NTMzLDcgKzc1NjAsNyBA
QCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKLSAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9vdXQub3BlcmF0aW9uKHRv
SW50MzIpLCBkb3VibGVWYWx1ZSkpKTsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5j
aG9yKG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbih0b0ludDMyKSwgZG91
YmxlVmFsdWUpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNzU2
Miw3ICs3NTg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICBt
X291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbih0b0ludDMyKSwgZG91YmxlVmFsdWUpKTsKKyAgICAg
ICAgICAgIG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbih0b0ludDMyKSwg
ZG91YmxlVmFsdWUpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAg
ICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC03
Njc4LDcgKzc3MDUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGFwcGVuZE9TUkV4aXRBcmd1bWVu
dHNGb3JQYXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1lbnRzLCBFeGNlcHRpb25U
eXBlOjpMYXp5U2xvd1BhdGgsIHVzZXJBcmd1bWVudHMuc2l6ZSgpICsgMSk7IC8vIEFsbCB0aGUg
YXJndW1lbnRzIHBsdXMgdGhlIHJlc3VsdCBzaG93IHVwIGluIHRoZSBzdGFja21hcCBsb2NhdGlv
bnMuCiAKLSAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRJ
bnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOworICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0
LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1
bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExM
Vk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8TGF6eVNsb3dQYXRo
TGlua2VyVGFzaz4gbGlua2VyID0KQEAgLTgxMTcsNyArODE0NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAog
ICAgICAgICBMVmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxsKAotICAgICAgICAgICAg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIpLCBib3hl
ZFZhbHVlKTsKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MiksIGJveGVkVmFsdWUpOwogICAgICAgICBGVExf
VFlQRV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFZhbHVlKSwgZWRnZSwg
U3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUsCiAgICAgICAgICAgICBtX291dC5lcXVhbChw
b3NzaWJsZVJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpub3RJbnQ1MikpKTsKQEAg
LTgxMzMsNyArODE2MCw3IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGRvdWJsZVRvU3RyaWN0SW50
NTIoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBMVmFsdWUgcG9zc2li
bGVSZXN1bHQgPSBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkNvbnZlcnREb3VibGVUb0ludDUyKSwgdmFsdWUpOworICAgICAgICAgICAgbV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1MiksIHZhbHVl
KTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBkb3VibGVWYWx1ZSh2YWx1
ZSksIGVkZ2UsIFNwZWNJbnQ1MkFzRG91YmxlLAogICAgICAgICAgICAgbV9vdXQuZXF1YWwocG9z
c2libGVSZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6bm90SW50NTIpKSk7CkBAIC04
ODYwLDIyICs4ODg3LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJncz4KLSAgICBMVmFsdWUgdm1DYWxsKExWYWx1ZSBmdW5jdGlvbiwgQXJncy4uLiBh
cmdzKQorICAgIExWYWx1ZSB2bUNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBjYWxsUHJlZmxpZ2h0KCk7Ci0gICAgICAgIExWYWx1
ZSByZXN1bHQgPSBtX291dC5jYWxsKGZ1bmN0aW9uLCBhcmdzLi4uKTsKKyAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IG1fb3V0LmNhbGwodHlwZSwgZnVuY3Rpb24sIGFyZ3MuLi4pOwogICAgICAgICBj
YWxsQ2hlY2soKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgdm1DYWxsTm9FeGNlcHRpb25zKExW
YWx1ZSBmdW5jdGlvbiwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgY2FsbFByZWZsaWdo
dCgpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuY2FsbChmdW5jdGlvbiwgYXJncy4u
Lik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAgICAgdm9pZCBjYWxsUHJlZmxp
Z2h0KENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4o
Y29kZU9yaWdpbik7CkBAIC04OTA5LDcgKzg5MjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2Fs
bENoZWNrKCkKICAgICB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkp
Ci0gICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FeGNlcHRp
b25GdXp6KSwgbV9jYWxsRnJhbWUpOworICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC52b2lk
VHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopLCBtX2NhbGxGcmFt
ZSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgZXhjZXB0aW9uID0gbV9vdXQubG9hZDY0KG1f
b3V0LmFic29sdXRlKHZtKCkuYWRkcmVzc09mRXhjZXB0aW9uKCkpKTsKICAgICAgICAgTFZhbHVl
IGhhZEV4Y2VwdGlvbiA9IG1fb3V0Lm5vdFplcm82NChleGNlcHRpb24pOwpAQCAtOTAwOCw2ICs5
MDI3LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGFwcGVuZE9TUkV4aXREZXNjcmlwdG9yKGtpbmQs
IGlzRXhjZXB0aW9uSGFuZGxlciA/IEV4Y2VwdGlvblR5cGU6OkNDYWxsRXhjZXB0aW9uIDogRXhj
ZXB0aW9uVHlwZTo6Tm9uZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSwgb3JpZ2luKTsKICAgICAgICAg
T1NSRXhpdERlc2NyaXB0b3ImIGV4aXREZXNjcmlwdG9yID0gbV9mdGxTdGF0ZS5qaXRDb2RlLT5v
c3JFeGl0RGVzY3JpcHRvcnMubGFzdCgpOwogCisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgU3Rh
Y2ttYXBBcmd1bWVudExpc3QgYXJndW1lbnRzOworICAgICAgICAKKyAgICAgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gZXhpdERlc2NyaXB0b3IubV9jb2RlT3JpZ2luOworICAgICAgICAKKyAg
ICAgICAgYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBhcmd1bWVudHMsIGxvd1Zh
bHVlLCBjb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmNoZWNrKAorICAgICAg
ICAgICAgZmFpbENvbmRpdGlvbiwgYXJndW1lbnRzLAorICAgICAgICAgICAgWyZdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAg
ICAgICAgICAgICBqaXQub29wcygpOworICAgICAgICAgICAgfSk7CisjZWxzZSAvLyBGVExfVVNF
U19CMwogICAgICAgICBpZiAoZmFpbENvbmRpdGlvbiA9PSBtX291dC5ib29sZWFuVHJ1ZSkgewog
ICAgICAgICAgICAgZW1pdE9TUkV4aXRDYWxsKGV4aXREZXNjcmlwdG9yLCBsb3dWYWx1ZSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC05MDI4LDggKzkwNjAsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9vdXQudW5yZWFjaGFibGUoKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiAgICAgfQot
ICAgIAorCisjaWYgIUZUTF9VU0VTX0IzCiAgICAgdm9pZCBlbWl0T1NSRXhpdENhbGwoT1NSRXhp
dERlc2NyaXB0b3ImIGV4aXREZXNjcmlwdG9yLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSkKICAg
ICB7CiAgICAgICAgIFN0YWNrbWFwQXJndW1lbnRMaXN0IGFyZ3VtZW50czsKQEAgLTkwNDAsNiAr
OTA3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBjYWxsU3RhY2ttYXAoZXhpdERl
c2NyaXB0b3IsIGFyZ3VtZW50cyk7CiAgICAgfQorI2VuZGlmCiAgICAgCiAgICAgdm9pZCBidWls
ZEV4aXRBcmd1bWVudHMoCiAgICAgICAgIE9TUkV4aXREZXNjcmlwdG9yJiBleGl0RGVzY3JpcHRv
ciwgU3RhY2ttYXBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgRm9ybWF0dGVkVmFsdWUgbG93VmFs
dWUsCkBAIC05MTA0LDE1ICs5MTM5LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCisKKyNpZiAhRlRMX1VTRVNfQjMKICAgICB2b2lkIGNhbGxTdGFj
a21hcChPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3IsIFN0YWNrbWFwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBleGl0RGVzY3JpcHRvci5tX3N0YWNrbWFw
SUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQu
Y29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CiAg
ICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2NChleGl0RGVzY3JpcHRv
ci5tX3N0YWNrbWFwSUQpKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LmNhbGwobV9vdXQuc3Rh
Y2ttYXBJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKKyAgICAgICAgbV9vdXQuY2FsbChtX291dC52
b2lkVHlwZSwgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKICAgICB9Cisj
ZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiAgICAgCiAgICAgRXhpdFZhbHVlIGV4aXRWYWx1ZUZvckF2
YWlsYWJpbGl0eSgKICAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgY29u
c3QgSGFzaE1hcDxOb2RlKiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24qPiYgbWFwLApA
QCAtOTQ3NSw3ICs5NTEyLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHN0
YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIG1fZnRsU3RhdGUucHJvYmVzLmFw
cGVuZChQcm9iZURlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgcHJvYmVGdW5jKSk7Ci0gICAgICAgIG1f
b3V0LmNhbGwobV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJbnQ2NChzdGFj
a21hcElEKSwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZQcm9iZSgpKSk7CisgICAgICAgIG1fb3V0
LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCksIG1fb3V0LmNv
bnN0SW50NjQoc3RhY2ttYXBJRCksIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mUHJvYmUoKSkpOwog
ICAgIH0KICNlbmRpZgogCkBAIC05NDg2LDcgKzk1MjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y3Jhc2goQmxvY2tJbmRleCBibG9ja0luZGV4LCB1bnNpZ25lZCBub2RlSW5kZXgpCiAgICAgewog
I2lmIEFTU0VSVF9ESVNBQkxFRAotICAgICAgICBtX291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbihm
dGxVbnJlYWNoYWJsZSkpOworICAgICAgICBtX291dC5jYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291
dC5vcGVyYXRpb24oZnRsVW5yZWFjaGFibGUpKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGJsb2Nr
SW5kZXgpOwogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICNlbHNlCkBAIC05NDk3
LDYgKzk1MzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ1JBU0goKTsKICNlbHNlCiAgICAg
ICAgIG1fb3V0LmNhbGwoCisgICAgICAgICAgICBtX291dC52b2lkVHlwZSwKICAgICAgICAgICAg
IG1fb3V0LmludFRvUHRyKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGZ0bFVu
cmVhY2hhYmxlKSwKICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSgKQEAgLTk1MTgsNiArOTU1
Niw3IEBAIHByaXZhdGU6CiAgICAgU3RhdGUmIG1fZnRsU3RhdGU7CiAgICAgQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeSBtX2hlYXBzOwogICAgIE91dHB1dCBtX291dDsKKyAgICBQcm9jZWR1cmUmIG1f
cHJvYzsKICAgICAKICAgICBMQmFzaWNCbG9jayBtX3Byb2xvZ3VlOwogICAgIExCYXNpY0Jsb2Nr
IG1faGFuZGxlRXhjZXB0aW9uczsKQEAgLTk1NjgsNiArOTYwNywxMCBAQCBwcml2YXRlOgogCiB2
b2lkIGxvd2VyREZHVG9MTFZNKFN0YXRlJiBzdGF0ZSkKIHsKKyNpZiBGVExfVVNFU19CMworICAg
IHN0YXRlLnByb2MgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2NlZHVyZT4oKTsKKyNlbmRpZgorICAg
IAogICAgIExvd2VyREZHVG9MTFZNIGxvd2VyaW5nKHN0YXRlKTsKICAgICBsb3dlcmluZy5sb3dl
cigpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lv
biAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNzUsMTEgKzM3NSwxMSBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGZlbmNl
QWNxUmVsKCkgeyByZXR1cm4gZmVuY2UoTExWTUF0b21pY09yZGVyaW5nQWNxdWlyZVJlbGVhc2Up
OyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICBMVmFsdWUg
Y2FsbChMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyByZXR1cm4g
YnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24sIHZlY3Rvcik7IH0KLSAgICBMVmFsdWUgY2Fs
bChMVmFsdWUgZnVuY3Rpb24pIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9u
KTsgfQotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEpIHsgcmV0
dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxKTsgfQorICAgIExWYWx1ZSBj
YWxsKExUeXBlLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBy
ZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24sIHZlY3Rvcik7IH0KKyAgICBMVmFs
dWUgY2FsbChMVHlwZSwgTFZhbHVlIGZ1bmN0aW9uKSB7IHJldHVybiBidWlsZENhbGwobV9idWls
ZGVyLCBmdW5jdGlvbik7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSwgTFZhbHVlIGZ1bmN0aW9u
LCBMVmFsdWUgYXJnMSkgeyByZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24sIGFy
ZzEpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgY2FsbChM
VmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFyZ3MpIHsgcmV0dXJuIGJ1aWxk
Q2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmdzLi4uKTsgfQorICAgIExWYWx1ZSBj
YWxsKExUeXBlLCBMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFyZ3MpIHsg
cmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmdzLi4uKTsgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KICAgICBMVmFsdWUgb3Bl
cmF0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFN0YXRlLmgJKHJldmlzaW9uIDE5MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTEgKzc1LDE5IEBAIHB1YmxpYzoK
ICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKICAgICBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5l
cmF0ZWRGdW5jdGlvbjsKICAgICBKSVRGaW5hbGl6ZXIqIGZpbmFsaXplcjsKKyNpZiBGVExfVVNF
U19CMworICAgIExWYWx1ZSBoYW5kbGVTdGFja092ZXJmbG93RXhjZXB0aW9uVmFsdWU7CisgICAg
TFZhbHVlIGhhbmRsZUV4Y2VwdGlvblZhbHVlOworICAgIExWYWx1ZSBjYXB0dXJlZFZhbHVlOwor
ICAgIExWYWx1ZSB2YXJhcmdzU3BpbGxTbG90c1ZhbHVlOworICAgIExWYWx1ZSBleGNlcHRpb25I
YW5kbGluZ1NwaWxsU2xvdFZhbHVlOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICB1bnNpZ25l
ZCBoYW5kbGVTdGFja092ZXJmbG93RXhjZXB0aW9uU3RhY2ttYXBJRDsKICAgICB1bnNpZ25lZCBo
YW5kbGVFeGNlcHRpb25TdGFja21hcElEOwogICAgIHVuc2lnbmVkIGNhcHR1cmVkU3RhY2ttYXBJ
RDsKICAgICB1bnNpZ25lZCB2YXJhcmdzU3BpbGxTbG90c1N0YWNrbWFwSUQ7CiAgICAgdW5zaWdu
ZWQgZXhjZXB0aW9uSGFuZGxpbmdTcGlsbFNsb3RTdGFja21hcElEOworI2VuZGlmIC8vIEZUTF9V
U0VfQjMKICAgICBTZWdtZW50ZWRWZWN0b3I8R2V0QnlJZERlc2NyaXB0b3I+IGdldEJ5SWRzOwog
ICAgIFNlZ21lbnRlZFZlY3RvcjxQdXRCeUlkRGVzY3JpcHRvcj4gcHV0QnlJZHM7CiAgICAgU2Vn
bWVudGVkVmVjdG9yPENoZWNrSW5EZXNjcmlwdG9yPiBjaGVja0luczsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMV2VpZ2h0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaAkocmV2aXNpb24gMTkyNTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJCM0ZyZXF1ZW5jeUNsYXNz
LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKQEAgLTQ5LDYgKzUwLDEwIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgZmxvYXQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyNpZiBGVExfVVNFU19CMworICAgIEZyZXF1ZW5jeUNs
YXNzIGZyZXF1ZW5jeUNsYXNzKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKSA/IEZyZXF1ZW5jeUNs
YXNzOjpOb3JtYWwgOiBGcmVxdWVuY3lDbGFzczo6UmFyZTsgfQorI2VuZGlmCiAgICAgCiAgICAg
dW5zaWduZWQgc2NhbGVUb1RvdGFsKGRvdWJsZSB0b3RhbCkgY29uc3QKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265809</attachid>
            <date>2015-11-18 16:43:58 -0800</date>
            <delta_ts>2015-11-18 18:22:50 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>67165</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShyZXZpc2lv
biAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcxNCw2ICsxNzE0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEIzOjpPb3BzOiB7CisgICAgICAg
ICAgICBhcHBlbmQoQWlyOjpPb3BzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxOTI1OTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIFdlIGFyZSBp
biB0aGUgbWlkZGxlIG9mIGFuIGV4cGVyaW1lbnRhbCB0cmFuc2l0aW9uIGZyb20gTExWTSB0byBC
MyBhcyB0aGUgYmFja2VuZCBmb3IgdGhlIEZUTC4gV2UgZG9uJ3QKIC8vIHlldCBrbm93IGhvdyBp
dCB3aWxsIHR1cm4gb3V0LiBGb3Igbm93LCB0aGlzIGZsYWcgd2lsbCBjb250cm9sIHdoZXRoZXIg
RlRMIHVzZXMgQjMuIFJlbWVtYmVyIHRvIHNldCB0aGlzCiAvLyB0byAwIGJlZm9yZSBjb21taXR0
aW5nIQotI2RlZmluZSBGVExfVVNFU19CMyAwCisjZGVmaW5lIEZUTF9VU0VTX0IzIDEKIAogc3Ry
dWN0IE5vZGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0
ZWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJi
cmV2aWF0ZWRUeXBlcy5oCShyZXZpc2lvbiAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIGNsYXNzIEJhc2ljQmxvY2s7Citj
bGFzcyBWYWx1ZTsKIGVudW0gVHlwZSA6IGludDhfdDsKIH0gfQogCkBAIC00MSw5ICs0MiwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAjaWYgRlRMX1VTRVNfQjMKIHR5cGVk
ZWYgQjM6OkJhc2ljQmxvY2sqIExCYXNpY0Jsb2NrOwogdHlwZWRlZiBCMzo6VHlwZSBMVHlwZTsK
K3R5cGVkZWYgQjM6OlZhbHVlKiBMVmFsdWU7CiAjZWxzZQogdHlwZWRlZiBMTFZNQmFzaWNCbG9j
a1JlZiBMQmFzaWNCbG9jazsKIHR5cGVkZWYgTExWTVR5cGVSZWYgTFR5cGU7Cit0eXBlZGVmIExM
Vk1WYWx1ZVJlZiBMVmFsdWU7CiAjZW5kaWYKIAogdHlwZWRlZiBMTFZNQXRvbWljT3JkZXJpbmcg
TEF0b21pY09yZGVyaW5nOwpAQCAtNTQsNyArNTcsNiBAQCB0eXBlZGVmIExMVk1JbnRQcmVkaWNh
dGUgTEludFByZWRpY2F0ZTsKIHR5cGVkZWYgTExWTUxpbmthZ2UgTExpbmthZ2U7CiB0eXBlZGVm
IExMVk1Nb2R1bGVSZWYgTE1vZHVsZTsKIHR5cGVkZWYgTExWTVJlYWxQcmVkaWNhdGUgTFJlYWxQ
cmVkaWNhdGU7Ci10eXBlZGVmIExMVk1WYWx1ZVJlZiBMVmFsdWU7CiB0eXBlZGVmIExMVk1NZW1v
cnlCdWZmZXJSZWYgTE1lbW9yeUJ1ZmZlcjsKIAogZW51bSBTeW5jaHJvbml6YXRpb25TY29wZSB7
IFNpbmdsZVRocmVhZCwgQ3Jvc3NUaHJlYWQgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQjNPdXRwdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQjNPdXRwdXQuY3BwCShyZXZpc2lvbiAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMz
LDUyIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogT3V0cHV0OjpPdXRwdXQo
U3RhdGUmIHN0YXRlKQogICAgIDogQ29tbW9uVmFsdWVzKHN0YXRlLmNvbnRleHQpCi0gICAgLCBt
X3Byb2NlZHVyZSgqc3RhdGUucHJvYykKKyAgICAsIG1fcHJvYygqc3RhdGUucHJvYykKIHsKIH0K
IAordm9pZCBPdXRwdXQ6OmluaXRpYWxpemUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaGVhcHMp
Cit7CisgICAgbV9oZWFwcyA9ICZoZWFwczsKK30KKworTEJhc2ljQmxvY2sgT3V0cHV0OjphcHBl
bmRUbyhMQmFzaWNCbG9jayBibG9jaywgTEJhc2ljQmxvY2sgbmV4dEJsb2NrKQoreworICAgIGFw
cGVuZFRvKGJsb2NrKTsKKyAgICByZXR1cm4gaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKG5leHRCbG9j
ayk7Cit9CisKK3ZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaykKK3sKKyAg
ICBtX2Jsb2NrID0gYmxvY2s7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmxvY2tlZFN0YWNrU2xvdChz
aXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxTdGFja1Nsb3RW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgYnl0ZXMsIFN0YWNrU2xvdEtpbmQ6OkxvY2tlZCk7Cit9
CisKK0xWYWx1ZSBPdXRwdXQ6OmxvYWQoVHlwZWRQb2ludGVyIHBvaW50ZXIsIExUeXBlIHR5cGUp
Cit7CisgICAgTFZhbHVlIGxvYWQgPSBtX2Jsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZCwgdHlwZSwgb3JpZ2luKCksIHBvaW50ZXIudmFsdWUoKSk7CisgICAgcG9pbnRl
ci5oZWFwKCkuZGVjb3JhdGVJbnN0cnVjdGlvbihyZXN1bHQsICptX2hlYXBzKTsKKyAgICByZXR1
cm4gbG9hZDsKK30KKwordm9pZCBPdXRwdXQ6OnN0b3JlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2lu
dGVyIHBvaW50ZXIpCit7CisgICAgTFZhbHVlIHN0b3JlID0gbV9ibG9jay0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihtX3Byb2MsIFN0b3JlLCBvcmlnaW4oKSwgdmFsdWUsIHBvaW50ZXIudmFsdWUo
KSk7CisgICAgcG9pbnRlci5oZWFwKCkuZGVjb3JhdGVJbnN0cnVjdGlvbihyZXN1bHQsICptX2hl
YXBzKTsKK30KKwordm9pZCBPdXRwdXQ6OmJyYW5jaChMVmFsdWUgY29uZGl0aW9uLCBMQmFzaWNC
bG9jayB0YWtlbiwgV2VpZ2h0IHRha2VuV2VpZ2h0LCBMQmFzaWNCbG9jayBub3RUYWtlbiwgV2Vp
Z2h0IG5vdFRha2VuKQoreworICAgIG1fYmxvY2stPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAor
ICAgICAgICBtX3Byb2MsIEJyYW5jaCwgb3JpZ2luKCksIGNvbmRpdGlvbiwKKyAgICAgICAgRnJl
cXVlbnRlZEJsb2NrKHRha2VuLCB0YWtlbldlaWdodC5mcmVxdWVuY3lDbGFzcygpKSwKKyAgICAg
ICAgRnJlcXVlbnRlZEJsb2NrKG5vdFRha2VuLCBub3RUYWtlbldlaWdodC5mcmVxdWVuY3lDbGFz
cygpKSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKIAogI2VuZGlmIC8vIEZUTF9V
U0VTX0IzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCShyZXZp
c2lvbiAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDE5IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAj
aWYgRlRMX1VTRVNfQjMKIAotI2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkIz
QXJndW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNp
bmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCisjaW5j
bHVkZSAiQjNDb25zdDMyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKKyNp
bmNsdWRlICJCM0NvbnRyb2xWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNp
bmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgIkIzU3RhY2tTbG90VmFsdWUuaCIKKyNp
bmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCisjaW5jbHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIKKyNp
bmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlwZXMu
aCIKICNpbmNsdWRlICJGVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRlRM
Q29tbW9uVmFsdWVzLmgiCkBAIC01MSw3ICs2MiwxMSBAQAogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRlciIKICNlbmRpZiAvLyBDT01QSUxFUihDTEFO
RykKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgeworbmFtZXNwYWNlIEpTQyB7CisK
K25hbWVzcGFjZSBERkcgeyBzdHJ1Y3QgTm9kZTsgfQorCituYW1lc3BhY2UgRlRMIHsKIAogZW51
bSBTY2FsZSB7IFNjYWxlT25lLCBTY2FsZVR3bywgU2NhbGVGb3VyLCBTY2FsZUVpZ2h0LCBTY2Fs
ZVB0ciB9OwogCkBAIC02MCwxMCArNzUsMTIgQEAgcHVibGljOgogICAgIE91dHB1dChTdGF0ZSYp
OwogICAgIH5PdXRwdXQoKSB7IENSQVNIKCk7IH0KIAorICAgIHZvaWQgaW5pdGlhbGl6ZShBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5Jik7CisKICAgICBMQmFzaWNCbG9jayBuZXdCbG9jayhjb25zdCBj
aGFyKiBuYW1lID0gIiIpCiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obmFtZSk7Ci0gICAg
ICAgIHJldHVybiBtX3Byb2NlZHVyZS5hZGRCbG9jaygpOworICAgICAgICByZXR1cm4gbV9wcm9j
LmFkZEJsb2NrKCk7CiAgICAgfQogCiAgICAgTEJhc2ljQmxvY2sgaW5zZXJ0TmV3QmxvY2tzQmVm
b3JlKExCYXNpY0Jsb2NrIG5leHRCbG9jaykKQEAgLTczLDE3ICs5MCwyMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsYXN0TmV4dEJsb2NrOwogICAgIH0KIAotICAgIExCYXNpY0Jsb2NrIGFw
cGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNCbG9jayBuZXh0QmxvY2spIHsgQ1JBU0goKTsgfQot
ICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spIHsgQ1JBU0goKTsgfQorICAgIExCYXNpY0Js
b2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNCbG9jayBuZXh0QmxvY2spOworICAgIHZv
aWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spOworCisgICAgdm9pZCBzZXRPcmlnaW4oREZHOjpOb2Rl
KiBub2RlKSB7IG1fb3JpZ2luID0gbm9kZTsgfQorICAgIEIzOjpPcmlnaW4gb3JpZ2luKCkgeyBy
ZXR1cm4gQjM6Ok9yaWdpbihtX29yaWdpbik7IH0KKworICAgIExWYWx1ZSBmcmFtZVBvaW50ZXIo
KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFt
ZVBvaW50ZXIsIG9yaWdpbigpKTsgfQogCi0gICAgTFZhbHVlIHBhcmFtKHVuc2lnbmVkIGluZGV4
KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgY29uc3RCb29sKGJvb2wgdmFsdWUpIHsgQ1JBU0go
KTsgfQotICAgIExWYWx1ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUpIHsgQ1JBU0goKTsgfQor
ICAgIExWYWx1ZSBsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90IGJ5dGVzKTsKKworICAgIExWYWx1ZSBj
b25zdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb25z
dDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBjb25zdElu
dDMyKGludDMyX3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3Qz
MlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIExWYWx1ZSBjb25zdEludFB0cihUKiB2YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAg
TFZhbHVlIGNvbnN0SW50UHRyKFQqIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OkNvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci0gICAgTFZhbHVlIGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgQ1JBU0go
KTsgfQotICAgIExWYWx1ZSBjb25zdEludDY0KGludDY0X3QgdmFsdWUpIHsgQ1JBU0goKTsgfQor
ICAgIExWYWx1ZSBjb25zdEludFB0cihUIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OkNvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExW
YWx1ZSBjb25zdEludDY0KGludDY0X3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICBMVmFs
dWUgY29uc3REb3VibGUoZG91YmxlIHZhbHVlKSB7IENSQVNIKCk7IH0KIAogICAgIExWYWx1ZSBw
aGkoTFR5cGUgdHlwZSkgeyBDUkFTSCgpOyB9CkBAIC05Myw3ICsxMTYsNyBAQCBwdWJsaWM6CiAg
ICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlLCBjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgQ1JB
U0goKTsgfQogICAgIHZvaWQgYWRkSW5jb21pbmdUb1BoaShMVmFsdWUgcGhpLCBWYWx1ZUZyb21C
bG9jayB2YWx1ZSkgeyBDUkFTSCgpOyB9CiAKLSAgICBMVmFsdWUgYWRkKExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBhZGQoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6QWRkLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIHN1YihMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbXVsKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBkaXYoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CkBAIC0xMDcsOSArMTMwLDkgQEAgcHVi
bGljOgogICAgIExWYWx1ZSBkb3VibGVSZW0oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBD
UkFTSCgpOyB9CiAgICAgTFZhbHVlIGRvdWJsZU5lZyhMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsg
fQogCi0gICAgTFZhbHVlIGJpdEFuZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgYml0T3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFT
SCgpOyB9Ci0gICAgTFZhbHVlIGJpdFhvcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENS
QVNIKCk7IH0KKyAgICBMVmFsdWUgYml0QW5kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdEFuZCwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBiaXRPcihMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpCaXRPciwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBiaXRY
b3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0WG9yLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9
CiAgICAgTFZhbHVlIHNobChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0K
ICAgICBMVmFsdWUgYVNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0K
ICAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0K
QEAgLTE3NSwzMyArMTk4LDQzIEBAIHB1YmxpYzoKICAgICAvLyBTaW1pbGFyIHRvIGdldCgpIGJ1
dCBmb3Igc3RvcmluZyB0byB0aGUgdmFsdWUgaW4gYW4gYWxsb2NhLgogICAgIExWYWx1ZSBzZXQo
TFZhbHVlIHZhbHVlLCBMVmFsdWUgcmVmZXJlbmNlKSB7IENSQVNIKCk7IH0KIAotICAgIExWYWx1
ZSBsb2FkKFR5cGVkUG9pbnRlciwgTFR5cGUgcmVmVHlwZSkgeyBDUkFTSCgpOyB9Ci0gICAgdm9p
ZCBzdG9yZShMVmFsdWUsIFR5cGVkUG9pbnRlciwgTFR5cGUgcmVmVHlwZSkgeyBDUkFTSCgpOyB9
CisgICAgTFZhbHVlIGxvYWQoVHlwZWRQb2ludGVyLCBMVHlwZSB0eXBlKTsKKyAgICB2b2lkIHN0
b3JlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpOwogCiAgICAgTFZhbHVlIGxv
YWQ4U2lnbkV4dDMyKFR5cGVkUG9pbnRlcikgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIGxvYWQ4
WmVyb0V4dDMyKFR5cGVkUG9pbnRlcikgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIGxvYWQxNlNp
Z25FeHQzMihUeXBlZFBvaW50ZXIpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBsb2FkMTZaZXJv
RXh0MzIoVHlwZWRQb2ludGVyKSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbG9hZDMyKFR5cGVk
UG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgbG9hZDY0KFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgbG9hZDY0KFR5cGVkUG9pbnRl
ciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIEIzOjpJbnQ2NCk7IH0KICAgICBMVmFs
dWUgbG9hZFB0cihUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVl
IGxvYWRGbG9hdFRvRG91YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KICAg
ICBMVmFsdWUgbG9hZERvdWJsZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBDUkFTSCgpOyB9Ci0g
ICAgdm9pZCBzdG9yZTE2KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JB
U0goKTsgfQotICAgIHZvaWQgc3RvcmUzMihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2lu
dGVyKSB7IENSQVNIKCk7IH0KLSAgICB2b2lkIHN0b3JlNjQoTFZhbHVlIHZhbHVlLCBUeXBlZFBv
aW50ZXIgcG9pbnRlcikgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBzdG9yZVB0cihMVmFsdWUgdmFs
dWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAgICB2b2lkIHN0b3JlRG91
YmxlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JBU0goKTsgfQotCi0g
ICAgTFZhbHVlIGFkZFB0cihMVmFsdWUgdmFsdWUsIHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAwKSB7
IENSQVNIKCk7IH0KKyAgICB2b2lkIHN0b3JlMzIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIg
cG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlcik7IH0KKyAgICB2b2lkIHN0b3JlNjQoTFZh
bHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlcik7
IH0KKyAgICB2b2lkIHN0b3JlUHRyKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIp
IHsgc3RvcmUodmFsdWUsIHBvaW50ZXIpOyB9CisgICAgdm9pZCBzdG9yZURvdWJsZShMVmFsdWUg
dmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHN0b3JlKHZhbHVlLCBwb2ludGVyKTsgfQog
CisgICAgTFZhbHVlIGFkZFB0cihMVmFsdWUgdmFsdWUsIHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAw
KQorICAgIHsKKyAgICAgICAgaWYgKCFpbW1lZGlhdGUpCisgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CisgICAgICAgIHJldHVybiBhZGQodmFsdWUsIGNvbnN0SW50UHRyKGltbWVkaWF0ZSkpOwor
ICAgIH0KKyAgICAKICAgICAvLyBDb25zdHJ1Y3QgYW4gYWRkcmVzcyBieSBvZmZzZXR0aW5nIGJh
c2UgYnkgdGhlIHJlcXVlc3RlZCBhbW91bnQgYW5kIGFzY3JpYmluZwogICAgIC8vIHRoZSByZXF1
ZXN0ZWQgYWJzdHJhY3QgaGVhcCB0byBpdC4KLSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzcyhjb25z
dCBBYnN0cmFjdEhlYXAmIGhlYXAsIExWYWx1ZSBiYXNlLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkg
eyBDUkFTSCgpOyB9CisgICAgVHlwZWRQb2ludGVyIGFkZHJlc3MoY29uc3QgQWJzdHJhY3RIZWFw
JiBoZWFwLCBMVmFsdWUgYmFzZSwgcHRyZGlmZl90IG9mZnNldCA9IDApCisgICAgeworICAgICAg
ICByZXR1cm4gVHlwZWRQb2ludGVyKGhlYXAsIGFkZFB0cihiYXNlLCBvZmZzZXQpKTsKKyAgICB9
CiAgICAgLy8gQ29uc3RydWN0IGFuIGFkZHJlc3MgYnkgb2Zmc2V0dGluZyBiYXNlIGJ5IHRoZSBh
bW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBmaWVsZCwKICAgICAvLyBhbmQgb3B0aW9uYWxseSBhbiBh
ZGRpdGlvbmFsIGFtb3VudCAodXNlIHRoaXMgd2l0aCBjYXJlKSwgYW5kIHRoZW4gY3JlYXRpbmcK
ICAgICAvLyBhIFR5cGVkUG9pbnRlciB3aXRoIHRoZSBnaXZlbiBmaWVsZCBhcyB0aGUgaGVhcC4K
LSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzcyhMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVs
ZCYgZmllbGQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKSB7IENSQVNIKCk7IH0KKyAgICBUeXBlZFBv
aW50ZXIgYWRkcmVzcyhMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYgZmllbGQsIHB0
cmRpZmZfdCBvZmZzZXQgPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MoZmllbGQs
IGJhc2UsIG9mZnNldCArIGZpZWxkLm9mZnNldCgpKTsKKyAgICB9CiAKICAgICBMVmFsdWUgYmFz
ZUluZGV4KExWYWx1ZSBiYXNlLCBMVmFsdWUgaW5kZXgsIFNjYWxlLCBwdHJkaWZmX3Qgb2Zmc2V0
ID0gMCkgeyBDUkFTSCgpOyB9CiAKQEAgLTIzNSw3ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgTFZh
bHVlIG5vdEVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAg
IExWYWx1ZSBhYm92ZShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAg
ICBMVmFsdWUgYWJvdmVPckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0go
KTsgfQotICAgIExWYWx1ZSBiZWxvdyhMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNI
KCk7IH0KKyAgICBMVmFsdWUgYmVsb3coTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3csIG9yaWdp
bigpLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgYmVsb3dPckVxdWFsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBncmVhdGVyVGhhbihMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgZ3JlYXRlclRo
YW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQpAQCAtMjU2
LDE5ICsyODksMTkgQEAgcHVibGljOgogICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbk9yVW5v
cmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1
ZSBkb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IENSQVNIKCk7IH0KIAotICAgIExWYWx1ZSBpc1plcm8zMihMVmFsdWUgdmFsdWUp
IHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBub3RaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgaXNaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IENSQVNIKCk7IH0KLSAg
ICBMVmFsdWUgbm90WmVybzY0KExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVl
IGlzTnVsbChMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBub3ROdWxsKExW
YWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Ci0KLSAgICBMVmFsdWUgdGVzdElzWmVybzMyKExWYWx1
ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSB0ZXN0Tm9uWmVy
bzMyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSB0
ZXN0SXNaZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyBDUkFTSCgpOyB9Ci0gICAg
TFZhbHVlIHRlc3ROb25aZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyBDUkFTSCgp
OyB9Ci0gICAgTFZhbHVlIHRlc3RJc1plcm9QdHIoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykg
eyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIHRlc3ROb25aZXJvUHRyKExWYWx1ZSB2YWx1ZSwgTFZh
bHVlIG1hc2spIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBpc1plcm8zMihMVmFsdWUgdmFsdWUp
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFs
LCBvcmlnaW4oKSwgdmFsdWUsIGludDMyWmVybyk7IH0KKyAgICBMVmFsdWUgbm90WmVybzMyKExW
YWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsgfQorICAgIExWYWx1
ZSBpc1plcm82NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDY0WmVybyk7IH0K
KyAgICBMVmFsdWUgbm90WmVybzY0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwg
aW50NjRaZXJvKTsgfQorICAgIExWYWx1ZSBpc051bGwoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBp
c1plcm82NCh2YWx1ZSk7IH0KKyAgICBMVmFsdWUgbm90TnVsbChMVmFsdWUgdmFsdWUpIHsgcmV0
dXJuIG5vdFplcm82NCh2YWx1ZSk7IH0KKworICAgIExWYWx1ZSB0ZXN0SXNaZXJvMzIoTFZhbHVl
IHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gaXNaZXJvMzIoYml0QW5kKHZhbHVlLCBtYXNr
KSk7IH0KKyAgICBMVmFsdWUgdGVzdE5vblplcm8zMihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNr
KSB7IHJldHVybiBub3RaZXJvMzIoYml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KKyAgICBMVmFsdWUg
dGVzdElzWmVybzY0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIGlzWmVybzY0
KGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CisgICAgTFZhbHVlIHRlc3ROb25aZXJvNjQoTFZhbHVl
IHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gbm90WmVybzY0KGJpdEFuZCh2YWx1ZSwgbWFz
aykpOyB9CisgICAgTFZhbHVlIHRlc3RJc1plcm9QdHIoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFz
aykgeyByZXR1cm4gaXNOdWxsKGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CisgICAgTFZhbHVlIHRl
c3ROb25aZXJvUHRyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIG5vdE51bGwo
Yml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KIAogICAgIExWYWx1ZSBzZWxlY3QoTFZhbHVlIHZhbHVl
LCBMVmFsdWUgdGFrZW4sIExWYWx1ZSBub3RUYWtlbikgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVl
IGV4dHJhY3RWYWx1ZShMVmFsdWUgYWdnVmFsLCB1bnNpZ25lZCBpbmRleCkgeyBDUkFTSCgpOyB9
CkBAIC0yNzcsMTggKzMxMCwyMSBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGZlbmNlQWNxUmVsKCkg
eyBDUkFTSCgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgotICAgIExW
YWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKSB7IENS
QVNIKCk7IH0KLSAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24pIHsgQ1JBU0goKTsgfQot
ICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEpIHsgQ1JBU0goKTsg
fQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwgY29uc3QgVmVj
dG9yVHlwZSYgdmVjdG9yKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNDYWxsVmFs
dWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIEIzOjpWYWx1ZTo6QWRqYWNlbmN5TGlzdCh2ZWN0
b3IpKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbikgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDQ2FsbFZhbHVlPihtX3Byb2MsIHR5cGUsIG9y
aWdpbigpKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwg
TFZhbHVlIGFyZzEpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q0NhbGxWYWx1ZT4o
bV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwgYXJnMSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmdzPgotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIEFy
Z3MuLi4gYXJncykgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGNhbGwoTFR5cGUgdHlwZSwgTFZh
bHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSwgQXJncy4uLiBhcmdzKSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OkNDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIGFyZzEs
IGFyZ3MuLi4pOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+Ci0gICAg
TFZhbHVlIG9wZXJhdGlvbihGdW5jdGlvblR5cGUgZnVuY3Rpb24pIHsgQ1JBU0goKTsgfQorICAg
IExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9uKSB7IHJldHVybiBjb25zdElu
dFB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSk7IH0KIAotICAgIHZvaWQganVtcChM
QmFzaWNCbG9jayBkZXN0aW5hdGlvbikgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBicmFuY2goTFZh
bHVlIGNvbmRpdGlvbiwgTEJhc2ljQmxvY2sgdGFrZW4sIFdlaWdodCB0YWtlbldlaWdodCwgTEJh
c2ljQmxvY2sgbm90VGFrZW4sIFdlaWdodCBub3RUYWtlbldlaWdodCkgeyBDUkFTSCgpOyB9Ci0g
ICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgV2VpZ2h0ZWRUYXJnZXQgdGFrZW4sIFdl
aWdodGVkVGFyZ2V0IG5vdFRha2VuKSB7IENSQVNIKCk7IH0KKyAgICB2b2lkIGp1bXAoTEJhc2lj
QmxvY2sgZGVzdGluYXRpb24pIHsgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+
KG1fcHJvYywgQjM6Okp1bXAsIG9yaWdpbigpLCBCMzo6RnJlcXVlbnRlZEJsb2NrKGRlc3RpbmF0
aW9uKSk7IH0KKyAgICB2b2lkIGJyYW5jaChMVmFsdWUgY29uZGl0aW9uLCBMQmFzaWNCbG9jayB0
YWtlbiwgV2VpZ2h0IHRha2VuV2VpZ2h0LCBMQmFzaWNCbG9jayBub3RUYWtlbiwgV2VpZ2h0IG5v
dFRha2VuV2VpZ2h0KTsKKyAgICB2b2lkIGJyYW5jaChMVmFsdWUgY29uZGl0aW9uLCBXZWlnaHRl
ZFRhcmdldCB0YWtlbiwgV2VpZ2h0ZWRUYXJnZXQgbm90VGFrZW4pCisgICAgeworICAgICAgICBi
cmFuY2goY29uZGl0aW9uLCB0YWtlbi50YXJnZXQoKSwgdGFrZW4ud2VpZ2h0KCksIG5vdFRha2Vu
LnRhcmdldCgpLCBub3RUYWtlbi53ZWlnaHQoKSk7CisgICAgfQogCiAgICAgLy8gQnJhbmNoZXMg
dG8gYW4gYWxyZWFkeS1jcmVhdGVkIGhhbmRsZXIgaWYgdHJ1ZSwgImZhbGxzIHRocm91Z2giIGlm
IGZhbHNlLiBGYWxsLXRocm91Z2ggaXMKICAgICAvLyBzaW11bGF0ZWQgYnkgY3JlYXRpbmcgYSBj
b250aW51YXRpb24gZm9yIHlvdS4KQEAgLTMwMCw5ICszMzYsMTggQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+CiAgICAgdm9pZCBzd2l0Y2hJbnN0cnVjdGlvbihM
VmFsdWUgdmFsdWUsIGNvbnN0IFZlY3RvclR5cGUmIGNhc2VzLCBMQmFzaWNCbG9jayBmYWxsVGhy
b3VnaCwgV2VpZ2h0IGZhbGxUaHJvdWdoV2VpZ2h0KSB7IENSQVNIKCk7IH0KIAotICAgIHZvaWQg
cmV0KExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgdm9pZCByZXQoTFZhbHVlIHZhbHVl
KSB7IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPihtX3Byb2MsIEIzOjpSZXR1
cm4sIG9yaWdpbigpLCB2YWx1ZSk7IH0KKworICAgIHZvaWQgdW5yZWFjaGFibGUoKSB7IG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPihtX3Byb2MsIEIzOjpPb3BzLCBvcmlnaW4o
KSk7IH0KIAotICAgIHZvaWQgdW5yZWFjaGFibGUoKSB7IENSQVNIKCk7IH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY2hlY2soTFZhbHVlIHZhbHVlLCBjb25zdCBT
dGFja21hcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
ICAgIHsKKyAgICAgICAgQjM6OkNoZWNrVmFsdWUqIGNoZWNrID0gbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpDaGVja1ZhbHVlPihtX3Byb2MsIEIzOjpDaGVjaywgb3JpZ2luKCksIHZhbHVlKTsKKyAg
ICAgICAgZm9yIChMVmFsdWUgdmFsdWUgOiBhcmd1bWVudHMpCisgICAgICAgICAgICBjaGVjay0+
YXBwZW5kKEIzOjpDb25zdHJhaW5lZFZhbHVlKHZhbHVlKSk7CisgICAgICAgIGNoZWNrLT5zZXRH
ZW5lcmF0b3IoZnVuY3Rvcik7CisgICAgfQogCiAgICAgdm9pZCB0cmFwKCkgeyBDUkFTSCgpOyB9
CiAKQEAgLTMxNiw4ICszNjEsOSBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIHBhdGNocG9pbnRWb2lk
SW50cmluc2ljKCkgeyBDUkFTSCgpOyB9CiAKICNwcmFnbWEgbWFyayAtIFN0YXRlcwotICAgIEIz
OjpQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOworICAgIEIzOjpQcm9jZWR1cmUmIG1fcHJvYzsKIAor
ICAgIERGRzo6Tm9kZSogbV9vcmlnaW4geyBudWxscHRyIH07CiAgICAgTEJhc2ljQmxvY2sgbV9i
bG9jayB7IG51bGxwdHIgfTsKICAgICBMQmFzaWNCbG9jayBtX25leHRCbG9jayB7IG51bGxwdHIg
fTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1
ZXMuY3BwCShyZXZpc2lvbiAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbW1vblZhbHVlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZUTENvbW1vblZhbHVlcy5oIgogCisjaW5jbHVk
ZSAiQjNDb25zdDMyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgorI2luY2x1
ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUg
IkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0aW9ucy5oIgogCiAjaWYg
RU5BQkxFKEZUTF9KSVQpCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAordXNp
bmcgbmFtZXNwYWNlIEIzOworCiBDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyhMQ29udGV4dCBj
b250ZXh0KQogI2lmIEZUTF9VU0VTX0IzCiAgICAgOiB2b2lkVHlwZShCMzo6Vm9pZCkKQEAgLTg3
LDYgKzkzLDE1IEBAIENvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnQKICNl
bmRpZgogfQogCit2b2lkIENvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyhCMzo6UHJv
Y2VkdXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxvY2spCit7CisgICAgYm9vbGVhblRydWUg
PSBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpOworICAg
IGJvb2xlYW5GYWxzZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCk7CisgICAgaW50MzJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKTsKKyAgICBpbnQzMk9uZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgaW50NjRaZXJvID0gYmxvY2stPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKTsKK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkZUTAogCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHJldmlzaW9uIDE5MjU5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDE2ICszMSwyNyBAQAogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlw
ZXMuaCIKICNpbmNsdWRlICJGVExWYWx1ZVJhbmdlLmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQjMgeworY2xhc3MgQmFz
aWNCbG9jazsKK2NsYXNzIFByb2NlZHVyZTsKK30KKworbmFtZXNwYWNlIEZUTCB7CiAKIGNsYXNz
IENvbW1vblZhbHVlcyB7CiBwdWJsaWM6CiAgICAgQ29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnRl
eHQpOwotICAgIAorCisjaWYgRlRMX1VTRVNfQjMKKyAgICB2b2lkIGluaXRpYWxpemVDb25zdGFu
dHMoQjM6OlByb2NlZHVyZSYsIEIzOjpCYXNpY0Jsb2NrKik7CisjZWxzZSAvLyBGVExfVVNFU19C
MwogICAgIHZvaWQgaW5pdGlhbGl6ZShMTW9kdWxlIG1vZHVsZSkKICAgICB7CiAgICAgICAgIG1f
bW9kdWxlID0gbW9kdWxlOwogICAgIH0KKyNlbmRpZiAvLyBGVExfVVNFU19CMwogICAgIAogICAg
IGNvbnN0IExUeXBlIHZvaWRUeXBlOwogICAgIGNvbnN0IExUeXBlIGJvb2xlYW47CkBAIC02MCwy
MCArNzEsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IExUeXBlIHJlZkZsb2F0OwogICAgIGNvbnN0
IExUeXBlIHJlZkRvdWJsZTsKICNlbmRpZgotICAgIGNvbnN0IExWYWx1ZSBib29sZWFuVHJ1ZSB7
IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgYm9vbGVhbkZhbHNlIHsgbnVsbHB0ciB9Owot
ICAgIGNvbnN0IExWYWx1ZSBpbnQ4WmVybyB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUg
aW50MzJaZXJvIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnQzMk9uZSB7IG51bGxw
dHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50NjRaZXJvIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0
IExWYWx1ZSBpbnRQdHJaZXJvIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnRQdHJP
bmUgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGludFB0clR3byB7IG51bGxwdHIgfTsK
LSAgICBjb25zdCBMVmFsdWUgaW50UHRyVGhyZWUgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZh
bHVlIGludFB0ckZvdXIgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGludFB0ckVpZ2h0
IHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnRQdHJQdHIgeyBudWxscHRyIH07Ci0g
ICAgY29uc3QgTFZhbHVlIGRvdWJsZVplcm8geyBudWxscHRyIH07CisgICAgTFZhbHVlIGJvb2xl
YW5UcnVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBib29sZWFuRmFsc2UgeyBudWxscHRyIH07
CisjaWYgIUZUTF9VU0VTX0IzCisgICAgTFZhbHVlIGludDhaZXJvIHsgbnVsbHB0ciB9OworI2Vu
ZGlmCisgICAgTFZhbHVlIGludDMyWmVybyB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50MzJP
bmUgeyBudWxscHRyIH07CisgICAgTFZhbHVlIGludDY0WmVybyB7IG51bGxwdHIgfTsKKyAgICBM
VmFsdWUgaW50UHRyWmVybyB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50UHRyT25lIHsgbnVs
bHB0ciB9OworICAgIExWYWx1ZSBpbnRQdHJUd28geyBudWxscHRyIH07CisgICAgTFZhbHVlIGlu
dFB0clRocmVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBpbnRQdHJGb3VyIHsgbnVsbHB0ciB9
OworICAgIExWYWx1ZSBpbnRQdHJFaWdodCB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50UHRy
UHRyIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9OwogICAg
IAogICAgIGNvbnN0IHVuc2lnbmVkIHJhbmdlS2luZCB7IDAgfTsKICAgICBjb25zdCB1bnNpZ25l
ZCBwcm9mS2luZCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxOTI1OTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQs
NiArNjQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKK3VzaW5nIG5h
bWVzcGFjZSBCMzsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIG5hbWVzcGFjZSB7CkBAIC0xMDUs
NiArMTA2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZnRsU3RhdGUoc3RhdGUpCiAgICAgICAg
ICwgbV9oZWFwcyhzdGF0ZS5jb250ZXh0KQogICAgICAgICAsIG1fb3V0KHN0YXRlKQorICAgICAg
ICAsIG1fcHJvYygqc3RhdGUucHJvYykKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlLmdyYXBoKQog
ICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3RhdGUpCiAgICAgICAgICwg
bV9zdGFja21hcElEcygwKQpAQCAtMTI3LDE0ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgICAgIAog
ICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKIAotI2lmIEZUTF9VU0VTX0IzCi0g
ICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkgfHwgIXZlcmJvc2VDb21waWxh
dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIENSQVNIKCk7Ci0KLSAgICAgICAgbV9wcm9sb2d1
ZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiUHJvbG9ndWUiKSk7Ci0gICAgICAgIExCYXNpY0Js
b2NrIHN0YWNrT3ZlcmZsb3cgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN0YWNrIG92ZXJmbG93
IikpOwotICAgICAgICBMQmFzaWNCbG9jayBjaGVja0FyZ3VtZW50cyA9IEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgiQ2hlY2sgYXJndW1lbnRzIikpOwotI2Vsc2UKKyNpZiAhRlRMX1VTRVNfQjMKICAg
ICAgICAgbV9mdGxTdGF0ZS5tb2R1bGUgPQogICAgICAgICAgICAgbW9kdWxlQ3JlYXRlV2l0aE5h
bWVJbkNvbnRleHQobmFtZS5kYXRhKCksIG1fZnRsU3RhdGUuY29udGV4dCk7CiAgICAgICAgIApA
QCAtMTQ2LDExICsxNDEsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gc2xvd2VyLiBJdCBz
aG91bGQgYmUgZGlzYWJsZWQuCiAgICAgICAgICAgICBhZGRUYXJnZXREZXBlbmRlbnRGdW5jdGlv
bkF0dHIobV9mdGxTdGF0ZS5mdW5jdGlvbiwgInRhcmdldC1mZWF0dXJlcyIsICItYXZ4Iik7CiAg
ICAgICAgIH0KKyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKICAgICAgICAgCiAgICAgICAgIGlmICh2
ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJGdW5jdGlv
biByZWFkeSwgYmVnaW5uaW5nIGxvd2VyaW5nLlxuIik7Ci0gICAgICAgIAorCisjaWYgRlRMX1VT
RVNfQjMKKyAgICAgICAgbV9vdXQuaW5pdGlhbGl6ZShtX2hlYXBzKTsKKyNlbHNlCiAgICAgICAg
IG1fb3V0LmluaXRpYWxpemUobV9mdGxTdGF0ZS5tb2R1bGUsIG1fZnRsU3RhdGUuZnVuY3Rpb24s
IG1faGVhcHMpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX3Byb2xvZ3VlID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJQcm9sb2d1ZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgc3RhY2tP
dmVyZmxvdyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RhY2sgb3ZlcmZsb3ciKSk7CkBAIC0x
NjYsOCArMTY2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8obV9wcm9sb2d1ZSwgc3RhY2tPdmVyZmxvdyk7CisgICAgICAgIG1fb3V0Lmlu
aXRpYWxpemVDb25zdGFudHMobV9wcm9jLCBtX3Byb2xvZ3VlKTsKICAgICAgICAgY3JlYXRlUGhp
VmFyaWFibGVzKCk7CiAKKyNpZiBGVExfVVNFU19CMworICAgICAgICBtX2NhcHR1cmVkID0gbV9v
dXQubG9ja2VkU3RhY2tTbG90KHNpemVvZihKU1ZhbHVlKSAqIG1fZ3JhcGgubV9uZXh0TWFjaGlu
ZUxvY2FsKTsKKyAgICAgICAgbV9mdGxTdGF0ZS5jYXB0dXJlZFZhbHVlID0gbV9jYXB0dXJlZDsK
KyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgICAgIExWYWx1ZSBjYXB0dXJlZEFsbG9jYSA9IG1f
b3V0LmFsbG9jYShhcnJheVR5cGUobV9vdXQuaW50NjQsIG1fZ3JhcGgubV9uZXh0TWFjaGluZUxv
Y2FsKSk7CiAgICAgICAgIAogICAgICAgICBtX2NhcHR1cmVkID0gbV9vdXQuYWRkKApAQCAtMTc2
LDE2ICsxODEsMTYgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5jYXB0
dXJlZFN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIG1fb3V0LmNhbGwoCi0g
ICAgICAgICAgICBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1f
ZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEKSwKKyAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBl
LCBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUu
Y2FwdHVyZWRTdGFja21hcElEKSwKICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywgY2FwdHVy
ZWRBbGxvY2EpOwotI2VuZGlmCisjZW5kaWYgLy8gRlRMX1VTRV9CMwogCiAgICAgICAgIGF1dG8g
cHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAgICAgCiAgICAgICAg
IC8vIElmIHdlIGhhdmUgYW55IENhbGxWYXJhcmdzIHRoZW4gd2UgbmVlZCB0byBoYXZlIGEgc3Bp
bGwgc2xvdCBmb3IgaXQuCiAgICAgICAgIGJvb2wgaGFzVmFyYXJncyA9IGZhbHNlOwogICAgICAg
ICBzaXplX3QgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscyA9IDA7Ci0gICAgICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBwcmVPcmRlcikgeworICAgICAgICBmb3IgKERGRzo6QmFzaWNCbG9jayog
YmxvY2sgOiBwcmVPcmRlcikgewogICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2Nr
KSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAg
ICAgY2FzZSBDYWxsVmFyYXJnczoKQEAgLTI0NCwxNSArMjQ5LDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogCiAjaWYgRlRMX1VTRVNfQjMKLSAgICAgICAgaWYgKGhhc1ZhcmFyZ3MgfHwgIWhhc1Zh
cmFyZ3MpCi0gICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAvLyBGSVhNRQogI2Vsc2UKICAg
ICAgICAgaWYgKGhhc1ZhcmFyZ3MpIHsKICAgICAgICAgICAgIExWYWx1ZSB2YXJhcmdzU3BpbGxT
bG90cyA9IG1fb3V0LmFsbG9jYSgKICAgICAgICAgICAgICAgICBhcnJheVR5cGUobV9vdXQuaW50
NjQsIEpTQ2FsbFZhcmFyZ3M6Om51bVNwaWxsU2xvdHNOZWVkZWQoKSkpOwogICAgICAgICAgICAg
bV9mdGxTdGF0ZS52YXJhcmdzU3BpbGxTbG90c1N0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7
CiAgICAgICAgICAgICBtX291dC5jYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0LnN0YWNrbWFw
SW50cmluc2ljKCksIG1fb3V0LmNvbnN0SW50NjQobV9mdGxTdGF0ZS52YXJhcmdzU3BpbGxTbG90
c1N0YWNrbWFwSUQpLAorICAgICAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBtX291dC5zdGFj
a21hcEludHJpbnNpYygpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQobV9mdGxT
dGF0ZS52YXJhcmdzU3BpbGxTbG90c1N0YWNrbWFwSUQpLAogICAgICAgICAgICAgICAgIG1fb3V0
LmludDMyWmVybywgdmFyYXJnc1NwaWxsU2xvdHMpOwogICAgICAgICB9CiAKQEAgLTI2NCw3ICsy
NjksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXJyYXlUeXBlKG1fb3V0LmludDY0LCBt
YXhOdW1iZXJPZkNhdGNoU3BpbGxzKSk7CiAgICAgICAgICAgICBtX2Z0bFN0YXRlLmV4Y2VwdGlv
bkhhbmRsaW5nU3BpbGxTbG90U3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAgICAgICAg
ICAgIG1fb3V0LmNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMo
KSwgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90
U3RhY2ttYXBJRCksCisgICAgICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0LnN0YWNr
bWFwSW50cmluc2ljKCksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0
YXRlLmV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90U3RhY2ttYXBJRCksCiAgICAgICAgICAgICAg
ICAgbV9vdXQuaW50MzJaZXJvLCBleGNlcHRpb25IYW5kbGluZ1ZvbGF0aWxlUmVnaXN0ZXJzU3Bp
bGxTbG90cyk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMjcyLDggKzI3OCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIFdlIHNob3VsZCBub3QgY3JlYXRlIGFueSBhbGxvY2EncyBhZnRlciB0aGlz
IHBvaW50LCBzaW5jZSB0aGV5IHdpbGwgY2Vhc2UgdG8KICAgICAgICAgLy8gYmUgbWVtMnJlZyBj
YW5kaWRhdGVzLgogICAgICAgICAKKyNpZiBGVExfVVNFU19CMworICAgICAgICBtX2NhbGxGcmFt
ZSA9IG1fb3V0LmZyYW1lUG9pbnRlcigpOworI2Vsc2UKICAgICAgICAgbV9jYWxsRnJhbWUgPSBt
X291dC5wdHJUb0ludCgKLSAgICAgICAgICAgIG1fb3V0LmNhbGwobV9vdXQuZnJhbWVBZGRyZXNz
SW50cmluc2ljKCksIG1fb3V0LmludDMyWmVybyksIG1fb3V0LmludFB0cik7CisgICAgICAgICAg
ICBtX291dC5jYWxsKG1fb3V0LmludFB0ciwgbV9vdXQuZnJhbWVBZGRyZXNzSW50cmluc2ljKCks
IG1fb3V0LmludDMyWmVybyksIG1fb3V0LmludFB0cik7CisjZW5kaWYKICAgICAgICAgbV90YWdU
eXBlTnVtYmVyID0gbV9vdXQuY29uc3RJbnQ2NChUYWdUeXBlTnVtYmVyKTsKICAgICAgICAgbV90
YWdNYXNrID0gbV9vdXQuY29uc3RJbnQ2NChUYWdNYXNrKTsKICAgICAgICAgCkBAIC0yODMsMTgg
KzI5MywyNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkaWRPdmVyZmxvd1N0YWNrKCksIHJhcmVs
eShzdGFja092ZXJmbG93KSwgdXN1YWxseShjaGVja0FyZ3VtZW50cykpOwogICAgICAgICAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc3RhY2tPdmVyZmxvdywgbV9oYW5kbGVFeGNlcHRpb25zKTsK
LSAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092
ZXJmbG93RXJyb3IpLCBtX2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkp
KTsKKyAgICAgICAgbV9vdXQuY2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0
SW50UHRyKGNvZGVCbG9jaygpKSk7CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgLy8gRklYTUUK
KyNlbHNlCiAgICAgICAgIG1fZnRsU3RhdGUuaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0
YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIG1fb3V0LmNhbGwoCi0gICAgICAg
ICAgICBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1fZnRsU3Rh
dGUuaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQpLAorICAgICAgICAgICAg
bV9vdXQudm9pZFR5cGUsIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCksCisgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0
YWNrbWFwSUQpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CisjZW5kaWYKICAgICAgICAgbV9vdXQudW5yZWFj
aGFibGUoKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1faGFuZGxlRXhjZXB0
aW9ucywgY2hlY2tBcmd1bWVudHMpOworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIC8vIEZJWE1F
CisjZWxzZQogICAgICAgICBtX2Z0bFN0YXRlLmhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQgPSBt
X3N0YWNrbWFwSURzKys7CiAgICAgICAgIG1fb3V0LmNhbGwoCi0gICAgICAgICAgICBtX291dC5z
dGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuaGFuZGxlRXhj
ZXB0aW9uU3RhY2ttYXBJRCksCisgICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQuc3Rh
Y2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmhhbmRsZUV4Y2Vw
dGlvblN0YWNrbWFwSUQpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2Vt
Ymxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CisjZW5kaWYKICAgICAgICAgbV9vdXQu
dW5yZWFjaGFibGUoKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrQXJn
dW1lbnRzLCBsb3dCbG9jayhtX2dyYXBoLmJsb2NrKDApKSk7CkBAIC0zNDEsNyArMzYwLDcgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgICAgIG1fb3V0Lmp1bXAobG93QmxvY2sobV9ncmFwaC5i
bG9jaygwKSkpOwogICAgICAgICAKLSAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHBy
ZU9yZGVyKQorICAgICAgICBmb3IgKERGRzo6QmFzaWNCbG9jayogYmxvY2sgOiBwcmVPcmRlcikK
ICAgICAgICAgICAgIGNvbXBpbGVCbG9jayhibG9jayk7CiAKICNpZiAhRlRMX1VTRVNfQjMKQEAg
LTM1OSwxMiArMzc4LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVQaGlWYXJpYWJsZXMo
KQogICAgIHsKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51
bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBERkc6OkJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICgh
YmxvY2spCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIG5vZGVJbmRleCA9IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgewogICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSAhPSBQaGkpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
IT0gREZHOjpQaGkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIExUeXBlIHR5cGU7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5mbGFncygpICYg
Tm9kZVJlc3VsdE1hc2spIHsKQEAgLTM4NywxMiArNDA2LDE2IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIFBoaSBub2RlIHJlc3Vs
dCB0eXBlIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
KyNpZiBGVExfVVNFU19CMworICAgICAgICAgICAgICAgIG1fcGhpcy5hZGQobm9kZSwgbV9wcm9j
LmFkZDxWYWx1ZT4oQjM6OlBoaSwgdHlwZSwgT3JpZ2luKG5vZGUpKSk7CisjZWxzZQogICAgICAg
ICAgICAgICAgIG1fcGhpcy5hZGQobm9kZSwgbV9vdXQuYWxsb2NhKHR5cGUpKTsKKyNlbmRpZgog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUJs
b2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHZvaWQgY29tcGlsZUJsb2NrKERGRzo6QmFzaWNC
bG9jayogYmxvY2spCiAgICAgewogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNDUxLDcgKzQ3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIHRocmVhZC4gRmFp
bGluZyB0byBkbyB0aGlzIHdvdWxkIHJlc3VsdCBpbiB3ZWlyZCBjcmFzaGVzIGR1ZSB0byBhIHZh
bHVlCiAgICAgICAgIC8vIGJlaW5nIHVzZWQgYnV0IG5vdCBkZWZpbmVkLiBSYWNlIGNvbmRpdGlv
bnMgRlRXIQogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVt
QmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIHRhcmdl
dCA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBERkc6OkJhc2ljQmxv
Y2sqIHRhcmdldCA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAo
IXRhcmdldCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CkBAIC00
NzEsNiArNDk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fbm9kZSA9IG1faGln
aEJsb2NrLT5hdChub2RlSW5kZXgpOwogICAgICAgICBtX29yaWdpbiA9IG1fbm9kZS0+b3JpZ2lu
OworICAgICAgICBtX291dC5zZXRPcmlnaW4obV9ub2RlKTsKICAgICAgICAgCiAgICAgICAgIGlm
ICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJMb3dl
cmluZyAiLCBtX25vZGUsICJcbiIpOwpAQCAtNDgwLDEwICs1MDQsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV9pbnRlcnByZXRlci5zdGFydEV4ZWN1dGluZygpOwogICAgICAgICAKICAgICAgICAg
c3dpdGNoIChtX25vZGUtPm9wKCkpIHsKLSAgICAgICAgY2FzZSBVcHNpbG9uOgorICAgICAgICBj
YXNlIERGRzo6VXBzaWxvbjoKICAgICAgICAgICAgIGNvbXBpbGVVcHNpbG9uKCk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQaGk6CisgICAgICAgIGNhc2UgREZHOjpQaGk6CiAg
ICAgICAgICAgICBjb21waWxlUGhpKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBKU0NvbnN0YW50OgpAQCAtNTAwLDcgKzUyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
RG91YmxlQXNJbnQzMjoKICAgICAgICAgICAgIGNvbXBpbGVEb3VibGVBc0ludDMyKCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWYWx1ZVJlcDoKKyAgICAgICAgY2FzZSBERkc6
OlZhbHVlUmVwOgogICAgICAgICAgICAgY29tcGlsZVZhbHVlUmVwKCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTUyMSw3ICs1NDUsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIFB1dFN0YWNrOgogICAgICAgICAgICAgY29tcGlsZVB1dFN0YWNrKCk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGVjazoKKyAgICAgICAgY2FzZSBE
Rkc6OkNoZWNrOgogICAgICAgICAgICAgY29tcGlsZU5vT3AoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFRvVGhpczoKQEAgLTU4MCwxMyArNjA0LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6CiAgICAgICAgICAgICBjb21waWxlQXJpdGhOZWdhdGUo
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJpdEFuZDoKKyAgICAgICAgY2Fz
ZSBERkc6OkJpdEFuZDoKICAgICAgICAgICAgIGNvbXBpbGVCaXRBbmQoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEJpdE9yOgorICAgICAgICBjYXNlIERGRzo6Qml0T3I6CiAg
ICAgICAgICAgICBjb21waWxlQml0T3IoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEJpdFhvcjoKKyAgICAgICAgY2FzZSBERkc6OkJpdFhvcjoKICAgICAgICAgICAgIGNvbXBp
bGVCaXRYb3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJpdFJTaGlmdDoK
QEAgLTg0MCwxNiArODY0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRm9yd2FyZFZhcmFy
Z3M6CiAgICAgICAgICAgICBjb21waWxlRm9yd2FyZFZhcmFyZ3MoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEp1bXA6CisgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAgICAg
ICAgICAgY29tcGlsZUp1bXAoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJy
YW5jaDoKKyAgICAgICAgY2FzZSBERkc6OkJyYW5jaDoKICAgICAgICAgICAgIGNvbXBpbGVCcmFu
Y2goKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAg
Y2FzZSBERkc6OlN3aXRjaDoKICAgICAgICAgICAgIGNvbXBpbGVTd2l0Y2goKTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJldHVybjoKKyAgICAgICAgY2FzZSBERkc6OlJldHVy
bjoKICAgICAgICAgICAgIGNvbXBpbGVSZXR1cm4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKQEAgLTE0MDMsNyArMTQyNyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzOwogICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAg
ICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihmdW5jdGlvbiksIG1fY2FsbEZyYW1lLCB2YWx1ZSkp
OworICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24oZnVuY3Rp
b24pLCBtX2NhbGxGcmFtZSwgdmFsdWUpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CkBAIC0xNDE5LDcgKzE0NDMsNyBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25WYWx1ZUFkZDsKICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxs
RnJhbWUsCisgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
biksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgIH0KICAgICAKQEAgLTE0Mjgs
MTMgKzE0NTIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAg
aWYgKG1fbm9kZS0+Y2hpbGQzKCkpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbCgKLSAg
ICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MyksIG1fY2FsbEZy
YW1lLAorICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uU3RyQ2F0MyksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSwKICAgICAgICAgICAgICAg
ICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiks
CiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3VsdCA9
IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0
MiksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uU3RyQ2F0MiksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSwKICAg
ICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbikpOwogICAgICAgICB9CkBAIC0xNTc3LDcgKzE2MDEsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICBhcHBlbmRPU1JFeGl0QXJndW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENh
dGNoRXhjZXB0aW9uKGFyZ3VtZW50cywgRXhjZXB0aW9uVHlwZTo6U3ViR2VuZXJhdG9yLCAzKTsg
Ly8gbGVmdCwgcmlnaHQsIGFuZCByZXN1bHQgc2hvdyB1cCBpbiB0aGUgc3RhY2ttYXAgbG9jYXRp
b25zLgogCi0gICAgICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQucGF0Y2hw
b2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7CisgICAgICAgICAgICBMVmFsdWUgY2Fs
bCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNp
YygpLCBhcmd1bWVudHMpOwogICAgICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVu
dGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwogCiAgICAgICAgICAgICBtX2Z0bFN0YXRl
LmFyaXRoU3Vicy5hcHBlbmQoQXJpdGhTdWJEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljLApAQCAtMjI5MiwxNyArMjMxNiwxNyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAg
ICBjYXNlIEFycmF5OjpJbnQzMjoKLSAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uRW5zdXJlSW50MzIpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CisgICAgICAgICAgICB2
bUNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVJbnQz
MiksIG1fY2FsbEZyYW1lLCBjZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkVuc3VyZURvdWJsZSksIG1fY2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2Fs
bChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZURvdWJsZSks
IG1fY2FsbEZyYW1lLCBjZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25FbnN1cmVDb250aWd1b3VzKSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAg
dm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQ29u
dGlndW91cyksIG1fY2FsbEZyYW1lLCBjZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRB
cnJheVN0b3JhZ2U6Ci0gICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkVuc3VyZUFycmF5U3RvcmFnZSksIG1fY2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZt
Q2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUFycmF5
U3RvcmFnZSksIG1fY2FsbEZyYW1lLCBjZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBh
cnJheSB0eXBlIik7CkBAIC0yMzYxLDcgKzIzODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlk
R2VuZXJpYyksCisgICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeUlkR2VuZXJpYyksCiAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIHZh
bHVlLAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV0pKSk7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CkBAIC0yNDA3LDcgKzI0MzEsNyBAQCBwcml2YXRlOgogICAgICAg
ICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mUHV0QnlJZCgpKSk7
CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElE
KSk7CiAKLSAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRW
b2lkSW50cmluc2ljKCksIGFyZ3VtZW50cyk7CisgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQu
Y2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQucGF0Y2hwb2ludFZvaWRJbnRyaW5zaWMoKSwgYXJn
dW1lbnRzKTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBM
TFZNQW55UmVnQ2FsbENvbnYpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5wdXRCeUlk
cy5hcHBlbmQoUHV0QnlJZERlc2NyaXB0b3IoCkBAIC0yNDQ5LDcgKzI0NzMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93
UGF0aCwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwo
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVSb3BlKSwgbV9jYWxsRnJhbWUsIGNlbGwp
KTsKKyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgY2VsbCkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKQEAg
LTI2MDcsNyArMjYzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNh
bGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KSwgbV9jYWxsRnJhbWUsIGJh
c2UsIGluZGV4KSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwpAQCAtMjY1OSw3ICsyNjgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAg
ICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxBcnJheUludCksIG1f
Y2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpOworICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5p
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgaW5kZXgpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CkBAIC0yNzQ5LDcgKzI3NzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bCksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uR2V0QnlWYWwpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI4OTgsNyArMjkyMiw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICB2
bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbiksIG1fY2Fs
bEZyYW1lLAorICAgICAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShjaGls
ZDEpLCBsb3dKU1ZhbHVlKGNoaWxkMiksIGxvd0pTVmFsdWUoY2hpbGQzKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMxMzcsNiArMzE2MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIExWYWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJl
cigpXTsKICAgICAgICAgdm1DYWxsKAorICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsCiAgICAg
ICAgICAgICBtX291dC5vcGVyYXRpb24obV9ub2RlLT5vcCgpID09IFB1dEdldHRlckJ5SWQgPyBv
cGVyYXRpb25QdXRHZXR0ZXJCeUlkIDogb3BlcmF0aW9uUHV0U2V0dGVyQnlJZCksCiAgICAgICAg
ICAgICBtX2NhbGxGcmFtZSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29u
c3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpKSwgYWNjZXNzb3IpOwogICAgIH0K
QEAgLTMxNDgsNyArMzE3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzZXR0ZXIgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CiAgICAgICAgIHZtQ2Fs
bCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIp
LAorICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Q
dXRHZXR0ZXJTZXR0ZXIpLAogICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIG1fb3V0LmNv
bnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0
ZXMoKSksIGdldHRlciwgc2V0dGVyKTsKIAogICAgIH0KQEAgLTMxNTksNiArMzE4NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIExWYWx1ZSBzdWJzY3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICBMVmFsdWUgYWNjZXNzb3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICB2bUNhbGwoCisgICAgICAgICAgICBtX291dC52b2lkVHlwZSwKICAgICAg
ICAgICAgIG1fb3V0Lm9wZXJhdGlvbihtX25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlWYWwgPyBv
cGVyYXRpb25QdXRHZXR0ZXJCeVZhbCA6IG9wZXJhdGlvblB1dFNldHRlckJ5VmFsKSwKICAgICAg
ICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCBzdWJzY3JpcHQsIG1fb3V0LmNvbnN0SW50MzIobV9u
b2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAgICB9CkBAIC0zMjIzLDcg
KzMyNDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbiA9IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BcnJheVB1c2hEb3VibGUpOwogICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAg
ICAgICAgICAgICB2bUNhbGwob3BlcmF0aW9uLCBtX2NhbGxGcmFtZSwgdmFsdWUsIGJhc2UpKTsK
KyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJh
bWUsIHZhbHVlLCBiYXNlKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwpAQCAtMzI4MSw3ICszMzA3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAg
ICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgpLCBt
X2NhbGxGcmFtZSwgYmFzZSkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCksIG1fY2FsbEZyYW1l
LCBiYXNlKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKQEAgLTMzMDQsNiArMzMzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChpbml0aWFs
aXphdGlvblZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgaW5pdGlhbGl6YXRpb25WYWx1ZSA9PSBqc1RE
WlZhbHVlKCkpOwogICAgICAgICBpZiAodGFibGUtPnNpbmdsZXRvblNjb3BlKCktPmlzU3RpbGxW
YWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgKKyAgICAg
ICAgICAgICAgICBtX291dC5pbnQ2NCwKICAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRl
cihzdHJ1Y3R1cmUpLAogICAgICAgICAgICAgICAgIHNjb3BlLCB3ZWFrUG9pbnRlcih0YWJsZSks
IG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxpemF0aW9uVmFsdWUpKSk7
CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwpAQCAtMzM2MSw4ICszMzg4LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9u
b2RlLT5jYXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpOwogICAgICAgICBpZiAoZXhl
Y3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+aXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAg
ICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gaXNBcnJvd0Z1bmN0aW9uCi0gICAgICAgICAgICAgICAg
PyB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24pLCBtX2Nh
bGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCB0aGlzVmFsdWUpCi0gICAg
ICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9u
KSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSk7CisgICAgICAg
ICAgICAgICAgPyB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25O
ZXdBcnJvd0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRh
YmxlKSwgdGhpc1ZhbHVlKQorICAgICAgICAgICAgICAgIDogdm1DYWxsKG1fb3V0LmludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUs
IHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoY2FsbFJl
c3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM1MjcsNyArMzU1NCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAg
ICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyksIG1f
Y2FsbEZyYW1lLAorICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25DcmVhdGVTY29wZWRBcmd1bWVudHMpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgIHdl
YWtQb2ludGVyKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAg
ICAgICAgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVuZ3RoKCkudmFsdWUsIGdl
dEN1cnJlbnRDYWxsZWUoKSwgc2NvcGUpOwpAQCAtMzUzOCw3ICszNTY1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoKQogICAgIHsKICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgIG1f
b3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
KSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcigKICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm91dE9m
QmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKICAgICAgICAgICAgIGdldEFyZ3VtZW50c1N0YXJ0
KCksIGdldEFyZ3VtZW50c0xlbmd0aCgpLnZhbHVlLCBnZXRDdXJyZW50Q2FsbGVlKCkpOwpAQCAt
MzYwNyw3ICszNjM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIGlmICghbV9ub2Rl
LT5udW1DaGlsZHJlbigpKSB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCgKLSAgICAg
ICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSksIG1fY2Fs
bEZyYW1lLAorICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTmV3RW1wdHlBcnJheSksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMzYyOCw3ICszNjU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50UHRyKHNjcmF0Y2hTaXplKSwgbV9vdXQuYWJzb2x1dGUoc2NyYXRjaEJ1ZmZlci0+YWN0aXZl
TGVuZ3RoUHRyKCkpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwo
Ci0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXkpLCBtX2NhbGxG
cmFtZSwKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
TmV3QXJyYXkpLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0
cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCiAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cihtX25vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICAgICAgCkBAIC0zNjY5LDcg
KzM2OTYsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJh
eUJ1ZmZlciksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLAogICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2Rl
LT5zdGFydENvbnN0YW50KCkpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2Rl
LT5udW1Db25zdGFudHMoKSkpKTsKICAgICB9CkBAIC0zNzgxLDcgKzM4MDgsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoCiAgICAgICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1
Y3R1cmUpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1Ymxp
Y0xlbmd0aCkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0
dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCkBAIC0zODcyLDcgKzM4OTksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG1fb3V0Lm9wZXJhdGlvbihtX25vZGUtPm9wKCkg
PT0gVG9TdHJpbmcgPyBvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCA6IG9wZXJhdGlvbkNhbGxTdHJp
bmdDb25zdHJ1Y3Rvck9uQ2VsbCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG1fbm9kZS0+b3AoKSA9PSBUb1N0cmluZyA/IG9w
ZXJhdGlvblRvU3RyaW5nIDogb3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvbnZlcnRlZFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNh
bGwob3BlcmF0aW9uLCBtX2NhbGxGcmFtZSwgdmFsdWUpKTsKKyAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGNvbnZlcnRlZFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwobV9vdXQuaW50NjQs
IG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CiAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMzkwOCw3ICszOTM1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzT2JqZWN0Q2FzZSwgY29udGludWF0
aW9uKTsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAg
ICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSksIG1fY2FsbEZyYW1l
LCB2YWx1ZSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uVG9QcmltaXRpdmUpLCBtX2NhbGxGcmFtZSwgdmFsdWUpKSk7CiAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNDA0Niw3ICs0MDczLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDQ+IHJlc3VsdHM7CiAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKSwKKyAgICAgICAg
ICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBjaGFyMTZCaXQudmFsdWUoKSkpKTsK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCkBAIC00MDg4
LDcgKzQxMTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAgICAg
ICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQpLCBtX2Nh
bGxGcmFtZSwgYmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCksIG1fY2FsbEZyYW1lLCBi
YXNlLCBpbmRleCkpKTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKQEAgLTQ2MzMsNyArNDY2MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZDYWxsKCkpKTsKICAg
ICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsK
ICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5wYXRjaHBv
aW50SW50NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBt
X291dC5jYWxsKG1fb3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwg
YXJndW1lbnRzKTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxs
LCBMTFZNV2ViS2l0SlNDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmpz
Q2FsbHMuYXBwZW5kKEpTQ2FsbChzdGFja21hcElELCBtX25vZGUsIGNvZGVPcmlnaW5EZXNjcmlw
dGlvbk9mQ2FsbFNpdGUoKSkpOwpAQCAtNDY3Myw4ICs0NzAwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgZXhpdEFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMih0YWlsQ2FsbC5lc3Rp
bWF0ZWRTaXplKCkpKTsKICAgICAgICAgZXhpdEFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29u
c3RJbnQ2NChzdGFja21hcElEKSk7CiAKLSAgICAgICAgTFZhbHVlIGNhbGwgPQotICAgICAgICAg
ICAgbV9vdXQuY2FsbChtX291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLCBleGl0QXJndW1l
bnRzKTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnZvaWRUeXBlLCBt
X291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLCBleGl0QXJndW1lbnRzKTsKICAgICAgICAg
c2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYp
OwogICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwogCkBAIC00NzI2LDcgKzQ3NTIsNyBAQCBw
cml2YXRlOgogICAgICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIoc2l6
ZU9mSUNGb3IobV9ub2RlKSkpOwogICAgICAgICBhcmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNv
bnN0SW50NjQoc3RhY2ttYXBJRCkpOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIGNhbGwgPSBt
X291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwor
ICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNo
cG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlv
bkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1DQ2FsbENvbnYpOwogICAgICAgICAKICAgICAg
ICAgbV9mdGxTdGF0ZS5qc0NhbGxWYXJhcmdzZXMuYXBwZW5kKEpTQ2FsbFZhcmFyZ3Moc3RhY2tt
YXBJRCwgbV9ub2RlLCBjb2RlT3JpZ2luRGVzY3JpcHRpb25PZkNhbGxTaXRlKCkpKTsKQEAgLTQ3
NDksNyArNDc3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGVu
Z3RoID0gdm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblNpemVP
ZlZhcmFyZ3MpLCBtX2NhbGxGcmFtZSwganNBcmd1bWVudHMsCisgICAgICAgICAgICBtX291dC5p
bnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MpLCBtX2NhbGxGcmFt
ZSwganNBcmd1bWVudHMsCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKGRhdGEtPm9mZnNl
dCkpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IFRoZXJlIGlzIGEgY2hhbmNlIHRoYXQg
d2Ugd2lsbCBjYWxsIGFuIGVmZmVjdGZ1bCBsZW5ndGggcHJvcGVydHkgdHdpY2UuIFRoaXMgaXMg
c2FmZQpAQCAtNDc3Myw3ICs0Nzk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKDMpKTsKICAgICAgICAgCiAgICAgICAgIHZtQ2FsbCgKLSAgICAgICAgICAgIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncyksIG1fY2FsbEZyYW1lLAorICAgICAg
ICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJn
cyksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgbV9vdXQuY2FzdFRvSW50MzIobWFjaGluZVN0
YXJ0KSwganNBcmd1bWVudHMsIG1fb3V0LmNvbnN0SW50MzIoZGF0YS0+b2Zmc2V0KSwKICAgICAg
ICAgICAgIGxlbmd0aCwgbV9vdXQuY29uc3RJbnQzMihkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKSk7
CiAgICAgfQpAQCAtNDk2OSw3ICs0OTk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obmVlZFJlc29sdXRpb24sIHJlc29sdmVkKTsKICAgICAg
ICAgICAgIHZhbHVlcy5hcHBlbmQobV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2Fs
bChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgc3Ry
aW5nVmFsdWUpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludFB0ciwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVSb3BlKSwgbV9jYWxsRnJhbWUsIHN0cmluZ1ZhbHVl
KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChyZXNvbHZlZCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHJlc29sdmVkLCBpczhCaXQpOwpAQCAtNTA5Niw2ICs1
MTIyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbnZhbGlkYXRpb25Qb2lu
dCgpCiAgICAgeworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxh
dGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBJbnZhbGlkYXRpb24gcG9p
bnQgd2l0aCBhdmFpbGFiaWxpdHk6ICIsIGF2YWlsYWJpbGl0eU1hcCgpLCAiXG4iKTsKIApAQCAt
NTExMiw2ICs1MTQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FsbFN0YWNrbWFwKGV4aXREZXNj
cmlwdG9yLCBhcmd1bWVudHMpOwogICAgICAgICAKICAgICAgICAgZXhpdERlc2NyaXB0b3IubV9p
c0ludmFsaWRhdGlvblBvaW50ID0gdHJ1ZTsKKyNlbmRpZiAvLyBGVExfVVNFU19CMwogICAgIH0K
ICAgICAKICAgICB2b2lkIGNvbXBpbGVJc1VuZGVmaW5lZCgpCkBAIC01MzA0LDcgKzUzMzQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YWNrbWFwSUQgPSBtX3N0YWNr
bWFwSURzKys7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUgY2FsbCA9IG1f
b3V0LmNhbGwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJp
bnNpYygpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQucGF0Y2hwb2lu
dEludDY0SW50cmluc2ljKCksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQo
c3RhY2ttYXBJRCksIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mSW4oKSksCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0TnVsbChtX291dC5yZWY4KSwgbV9vdXQuY29uc3RJbnQzMigxKSwgY2VsbCk7
CiAKQEAgLTUzMTYsNyArNTM0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gCiAKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkdlbmVyaWNJbiksIG1fY2FsbEZyYW1lLCBjZWxsLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQx
KCkpKSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uR2VuZXJpY0luKSwgbV9jYWxsRnJhbWUsIGNlbGwsIGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDEoKSkpKTsKICNlbmRpZgogICAgIH0KIApAQCAtNTQyMyw3ICs1NDUzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFu
Y2hvcihtX291dC5lcXVhbCgKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwg
YmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJh
c2UsIGluZGV4KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTU0
NTcsNyArNTQ4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93
Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1
bHQgPSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIAotICAgICAgICAgICAg
ICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwg
bV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSkpOworICAgICAgICAgICAgICAgIHZtQ2FsbChtX291
dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1f
Y2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC01NDc1LDcgKzU1MDUsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1By
b3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5KSk7CisgICAgICAgIHNldEpTVmFs
dWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJp
Y1Byb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5KSk7CiAgICAgfQogCiAgICAg
dm9pZCBjb21waWxlSGFzU3RydWN0dXJlUHJvcGVydHkoKQpAQCAtNTUwMSw3ICs1NTMxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgd3JvbmdTdHJ1Y3R1cmVSZXN1bHQgPSBt
X291dC5hbmNob3IoCiAgICAgICAgICAgICBtX291dC5lcXVhbCgKICAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgCi0gICAg
ICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJv
cGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKSk7CisgICAgICAgICAgICAgICAg
dm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzR2VuZXJpY1By
b3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5KSkpOwogICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CkBAIC01NTQ4LDcgKzU1NzgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93Q2FzZVJlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgIHZtQ2FsbCht
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJv
cGVydHkpKTsKKyAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkdldEJ5VmFsKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5KSk7CiAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTU1NjQsNyArNTU5NCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKCkKICAgICB7CiAgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciks
IG1fY2FsbEZyYW1lLCBiYXNlKSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0Lmlu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKSwgbV9j
YWxsRnJhbWUsIGJhc2UpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXRFbnVtZXJhdG9y
U3RydWN0dXJlUG5hbWUoKQpAQCAtNTYyMiw3ICs1NjUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbXBpbGVUb0luZGV4U3RyaW5nKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBpbmRleCA9IGxv
d0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9JbmRleFN0cmluZyksIG1fY2FsbEZyYW1lLCBpbmRleCkp
OworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvblRvSW5kZXhTdHJpbmcpLCBtX2NhbGxGcmFtZSwgaW5kZXgpKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUoKQpAQCAtNTg0NCw3
ICs1ODc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gZG8gYW55IHN0YWNrIGNoZWNrcy4KICAg
ICAgICAgCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRl
eCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAg
REZHOjpCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAg
ICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCkBAIC02MTk2LDYgKzYyMjYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKHBy
ZXZpb3VzU3RydWN0dXJlLT5jb3VsZEhhdmVJbmRleGluZ0hlYWRlcigpKSB7CiAgICAgICAgICAg
ICByZXR1cm4gdm1DYWxsKAorICAgICAgICAgICAgICAgIG1fb3V0LmludFB0ciwKICAgICAgICAg
ICAgICAgICBtX291dC5vcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblJl
YWxsb2NhdGVCdXR0ZXJmbHlUb0hhdmVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5
KSwKICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgb2JqZWN0KTsKQEAgLTYyMTYsNyArNjI0
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAocHJldmlvdXMtPmNvdWxkSGF2
ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBuZXdBbGxvY1NpemUgPSBt
X291dC5jb25zdEludFB0cihuZXdTaXplKTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgcmV0dXJuIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRl
cmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSksIG1fY2FsbEZyYW1lLCBvYmplY3QsIG5ld0FsbG9j
U2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gdm1DYWxsKG1fb3V0LmludFB0ciwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvblJlYWxsb2NhdGVCdXR0ZXJmbHlUb0dyb3dQcm9wZXJ0eVN0b3JhZ2Up
LCBtX2NhbGxGcmFtZSwgb2JqZWN0LCBuZXdBbGxvY1NpemUpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VXaXRoU2l6
ZUltcGwobmV3U2l6ZSk7CkBAIC02MzA0LDcgKzYzMzUsNyBAQCBwcml2YXRlOgogICAgICAgICBh
cmd1bWVudHMuaW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50MzIoc2l6ZU9mR2V0QnlJZCgpKSk7CiAg
ICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSk7
IAogCi0gICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5wYXRjaHBvaW50SW50
NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5j
YWxsKG1fb3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJndW1l
bnRzKTsKICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZN
QW55UmVnQ2FsbENvbnYpOwogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5nZXRCeUlkcy5h
cHBlbmQoR2V0QnlJZERlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgbV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMsIHVpZCkpOwpAQCAtNjUzMSw3ICs2NTYyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1
ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwodm1DYWxs
KAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uKSwgbV9jYWxsRnJh
bWUsIGxlZnQsIHJpZ2h0KSkpOworICAgICAgICAgICAgbV9vdXQuYm9vbGVhbiwgbV9vdXQub3Bl
cmF0aW9uKGhlbHBlckZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIGxlZnQsIHJpZ2h0KSkpOwogICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTcwMzIsNyArNzA2Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5uZXJMYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKG91dE9mQm91bmRzQ2FzZSwgaG9sZUNhc2UpOwogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICB2bUNhbGwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0Lm9w
ZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQudm9p
ZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAg
ICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTczMDgs
NyArNzMzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQzNjkKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBicmFuY2hP
ZmZzZXQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3dp
dGNoU3RyaW5nQW5kR2V0QnJhbmNoT2Zmc2V0KSwKKyAgICAgICAgICAgIG1fb3V0LmludDMyLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nQW5kR2V0QnJhbmNoT2Zmc2V0KSwK
ICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBtX291dC5jb25zdEludFB0cihkYXRhLT5zd2l0Y2hU
YWJsZUluZGV4KSwgc3RyaW5nKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZ0p1bXBUYWJsZSYg
dGFibGUgPSBjb2RlQmxvY2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGRhdGEtPnN3aXRjaFRh
YmxlSW5kZXgpOwpAQCAtNzUzMyw3ICs3NTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xv
d1BhdGgsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hv
cihtX291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbih0b0ludDMyKSwgZG91YmxlVmFsdWUpKSk7Cisg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5jYWxsKG1fb3V0LmludDMy
LCBtX291dC5vcGVyYXRpb24odG9JbnQzMiksIGRvdWJsZVZhbHVlKSkpOwogICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTc1NjIsNyArNzU5Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNs
b3dQYXRoLCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5vcGVyYXRpb24o
dG9JbnQzMiksIGRvdWJsZVZhbHVlKSk7CisgICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0Lmlu
dDMyLCBtX291dC5vcGVyYXRpb24odG9JbnQzMiksIGRvdWJsZVZhbHVlKSk7CiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNzY3OCw3ICs3NzA5LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICBhcHBlbmRPU1JFeGl0QXJndW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENhdGNo
RXhjZXB0aW9uKGFyZ3VtZW50cywgRXhjZXB0aW9uVHlwZTo6TGF6eVNsb3dQYXRoLCB1c2VyQXJn
dW1lbnRzLnNpemUoKSArIDEpOyAvLyBBbGwgdGhlIGFyZ3VtZW50cyBwbHVzIHRoZSByZXN1bHQg
c2hvdyB1cCBpbiB0aGUgc3RhY2ttYXAgbG9jYXRpb25zLgogCi0gICAgICAgIExWYWx1ZSBjYWxs
ID0gbV9vdXQuY2FsbChtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRz
KTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LmludDY0LCBtX291dC5w
YXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKICAgICAgICAgc2V0SW5zdHJ1
Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwogICAgICAg
ICAKICAgICAgICAgUmVmUHRyPExhenlTbG93UGF0aExpbmtlclRhc2s+IGxpbmtlciA9CkBAIC04
MTE3LDcgKzgxNDgsNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhkb3VibGVD
YXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIHBvc3NpYmxlUmVz
dWx0ID0gbV9vdXQuY2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25D
b252ZXJ0Qm94ZWREb3VibGVUb0ludDUyKSwgYm94ZWRWYWx1ZSk7CisgICAgICAgICAgICBtX291
dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50
NTIpLCBib3hlZFZhbHVlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBq
c1ZhbHVlVmFsdWUoYm94ZWRWYWx1ZSksIGVkZ2UsIFNwZWNJbnQzMiB8IFNwZWNJbnQ1MkFzRG91
YmxlLAogICAgICAgICAgICAgbV9vdXQuZXF1YWwocG9zc2libGVSZXN1bHQsIG1fb3V0LmNvbnN0
SW50NjQoSlNWYWx1ZTo6bm90SW50NTIpKSk7CkBAIC04MTMzLDcgKzgxNjQsNyBAQCBwcml2YXRl
OgogICAgIExWYWx1ZSBkb3VibGVUb1N0cmljdEludDUyKEVkZ2UgZWRnZSwgTFZhbHVlIHZhbHVl
KQogICAgIHsKICAgICAgICAgTFZhbHVlIHBvc3NpYmxlUmVzdWx0ID0gbV9vdXQuY2FsbCgKLSAg
ICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9JbnQ1Miks
IHZhbHVlKTsKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uQ29udmVydERvdWJsZVRvSW50NTIpLCB2YWx1ZSk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNL
KAogICAgICAgICAgICAgZG91YmxlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjSW50NTJBc0RvdWJs
ZSwKICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHBvc3NpYmxlUmVzdWx0LCBtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6Om5vdEludDUyKSkpOwpAQCAtODg2MCwyMiArODg5MSwxNCBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgTFZhbHVlIHZt
Q2FsbChMVmFsdWUgZnVuY3Rpb24sIEFyZ3MuLi4gYXJncykKKyAgICBMVmFsdWUgdm1DYWxsKExU
eXBlIHR5cGUsIExWYWx1ZSBmdW5jdGlvbiwgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAg
Y2FsbFByZWZsaWdodCgpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuY2FsbChmdW5j
dGlvbiwgYXJncy4uLik7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5jYWxsKHR5cGUs
IGZ1bmN0aW9uLCBhcmdzLi4uKTsKICAgICAgICAgY2FsbENoZWNrKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0g
ICAgTFZhbHVlIHZtQ2FsbE5vRXhjZXB0aW9ucyhMVmFsdWUgZnVuY3Rpb24sIEFyZ3MuLi4gYXJn
cykKLSAgICB7Ci0gICAgICAgIGNhbGxQcmVmbGlnaHQoKTsKLSAgICAgICAgTFZhbHVlIHJlc3Vs
dCA9IG1fb3V0LmNhbGwoZnVuY3Rpb24sIGFyZ3MuLi4pOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQogICAgIHZvaWQgY2FsbFByZWZsaWdodChDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiAgICAgewogICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRl
LmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKGNvZGVPcmlnaW4pOwpAQCAtODkwOSw3ICs4
OTMyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbGxDaGVjaygpCiAgICAgewogICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKQotICAgICAgICAgICAgbV9vdXQuY2FsbCht
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eiksIG1fY2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIG1fb3V0LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25FeGNlcHRpb25GdXp6KSwgbV9jYWxsRnJhbWUpOwogICAgICAgICAKICAgICAgICAgTFZh
bHVlIGV4Y2VwdGlvbiA9IG1fb3V0LmxvYWQ2NChtX291dC5hYnNvbHV0ZSh2bSgpLmFkZHJlc3NP
ZkV4Y2VwdGlvbigpKSk7CiAgICAgICAgIExWYWx1ZSBoYWRFeGNlcHRpb24gPSBtX291dC5ub3Ra
ZXJvNjQoZXhjZXB0aW9uKTsKQEAgLTg5NTcsNyArODk4MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBMQmFzaWNCbG9jayBsb3dCbG9jayhCYXNp
Y0Jsb2NrKiBibG9jaykKKyAgICBMQmFzaWNCbG9jayBsb3dCbG9jayhERkc6OkJhc2ljQmxvY2sq
IGJsb2NrKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYmxvY2tzLmdldChibG9jayk7CiAgICAg
fQpAQCAtOTAwOCw2ICs5MDMxLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIGFwcGVuZE9TUkV4aXRE
ZXNjcmlwdG9yKGtpbmQsIGlzRXhjZXB0aW9uSGFuZGxlciA/IEV4Y2VwdGlvblR5cGU6OkNDYWxs
RXhjZXB0aW9uIDogRXhjZXB0aW9uVHlwZTo6Tm9uZSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSwgb3Jp
Z2luKTsKICAgICAgICAgT1NSRXhpdERlc2NyaXB0b3ImIGV4aXREZXNjcmlwdG9yID0gbV9mdGxT
dGF0ZS5qaXRDb2RlLT5vc3JFeGl0RGVzY3JpcHRvcnMubGFzdCgpOwogCisjaWYgRlRMX1VTRVNf
QjMKKyAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QgYXJndW1lbnRzOworICAgICAgICAKKyAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdERlc2NyaXB0b3IubV9jb2RlT3JpZ2lu
OworICAgICAgICAKKyAgICAgICAgYnVpbGRFeGl0QXJndW1lbnRzKGV4aXREZXNjcmlwdG9yLCBh
cmd1bWVudHMsIGxvd1ZhbHVlLCBjb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0
LmNoZWNrKAorICAgICAgICAgICAgZmFpbENvbmRpdGlvbiwgYXJndW1lbnRzLAorICAgICAgICAg
ICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKKyAgICAgICAgICAgICAgICBqaXQub29wcygpOworICAgICAgICAgICAgfSk7Cisj
ZWxzZSAvLyBGVExfVVNFU19CMwogICAgICAgICBpZiAoZmFpbENvbmRpdGlvbiA9PSBtX291dC5i
b29sZWFuVHJ1ZSkgewogICAgICAgICAgICAgZW1pdE9TUkV4aXRDYWxsKGV4aXREZXNjcmlwdG9y
LCBsb3dWYWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05MDI4LDggKzkwNjQsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworI2VuZGlmIC8vIEZUTF9V
U0VTX0IzCiAgICAgfQotICAgIAorCisjaWYgIUZUTF9VU0VTX0IzCiAgICAgdm9pZCBlbWl0T1NS
RXhpdENhbGwoT1NSRXhpdERlc2NyaXB0b3ImIGV4aXREZXNjcmlwdG9yLCBGb3JtYXR0ZWRWYWx1
ZSBsb3dWYWx1ZSkKICAgICB7CiAgICAgICAgIFN0YWNrbWFwQXJndW1lbnRMaXN0IGFyZ3VtZW50
czsKQEAgLTkwNDAsNiArOTA3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBjYWxs
U3RhY2ttYXAoZXhpdERlc2NyaXB0b3IsIGFyZ3VtZW50cyk7CiAgICAgfQorI2VuZGlmCiAgICAg
CiAgICAgdm9pZCBidWlsZEV4aXRBcmd1bWVudHMoCiAgICAgICAgIE9TUkV4aXREZXNjcmlwdG9y
JiBleGl0RGVzY3JpcHRvciwgU3RhY2ttYXBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgRm9ybWF0
dGVkVmFsdWUgbG93VmFsdWUsCkBAIC05MTA0LDE1ICs5MTQzLDE3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyNpZiAhRlRMX1VTRVNfQjMKICAg
ICB2b2lkIGNhbGxTdGFja21hcChPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3IsIFN0
YWNrbWFwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBleGl0RGVzY3Jp
cHRvci5tX3N0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIGFyZ3VtZW50cy5p
bnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpKSk7CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2
NChleGl0RGVzY3JpcHRvci5tX3N0YWNrbWFwSUQpKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0
LmNhbGwobV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKKyAgICAgICAgbV9v
dXQuY2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgYXJndW1l
bnRzKTsKICAgICB9CisjZW5kaWYgLy8gIUZUTF9VU0VTX0IzCiAgICAgCiAgICAgRXhpdFZhbHVl
IGV4aXRWYWx1ZUZvckF2YWlsYWJpbGl0eSgKICAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgY29uc3QgSGFzaE1hcDxOb2RlKiwgRXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6
YXRpb24qPiYgbWFwLApAQCAtOTQ3NSw3ICs5NTE2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IHN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgIG1fZnRs
U3RhdGUucHJvYmVzLmFwcGVuZChQcm9iZURlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgcHJvYmVGdW5j
KSk7Ci0gICAgICAgIG1fb3V0LmNhbGwobV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQu
Y29uc3RJbnQ2NChzdGFja21hcElEKSwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZQcm9iZSgpKSk7
CisgICAgICAgIG1fb3V0LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0LnN0YWNrbWFwSW50cmlu
c2ljKCksIG1fb3V0LmNvbnN0SW50NjQoc3RhY2ttYXBJRCksIG1fb3V0LmNvbnN0SW50MzIoc2l6
ZU9mUHJvYmUoKSkpOwogICAgIH0KICNlbmRpZgogCkBAIC05NDg2LDcgKzk1MjcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY3Jhc2goQmxvY2tJbmRleCBibG9ja0luZGV4LCB1bnNpZ25lZCBub2Rl
SW5kZXgpCiAgICAgewogI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgICAgICBtX291dC5jYWxsKG1f
b3V0Lm9wZXJhdGlvbihmdGxVbnJlYWNoYWJsZSkpOworICAgICAgICBtX291dC5jYWxsKG1fb3V0
LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24oZnRsVW5yZWFjaGFibGUpKTsKICAgICAgICAgVU5V
U0VEX1BBUkFNKGJsb2NrSW5kZXgpOwogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsK
ICNlbHNlCkBAIC05NDk3LDYgKzk1MzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ1JBU0go
KTsKICNlbHNlCiAgICAgICAgIG1fb3V0LmNhbGwoCisgICAgICAgICAgICBtX291dC52b2lkVHlw
ZSwKICAgICAgICAgICAgIG1fb3V0LmludFRvUHRyKAogICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKGZ0bFVucmVhY2hhYmxlKSwKICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSgK
QEAgLTk1MTgsMTAgKzk1NjAsMTEgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSYgbV9mdGxTdGF0ZTsK
ICAgICBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5IG1faGVhcHM7CiAgICAgT3V0cHV0IG1fb3V0Owor
ICAgIFByb2NlZHVyZSYgbV9wcm9jOwogICAgIAogICAgIExCYXNpY0Jsb2NrIG1fcHJvbG9ndWU7
CiAgICAgTEJhc2ljQmxvY2sgbV9oYW5kbGVFeGNlcHRpb25zOwotICAgIEhhc2hNYXA8QmFzaWNC
bG9jayosIExCYXNpY0Jsb2NrPiBtX2Jsb2NrczsKKyAgICBIYXNoTWFwPERGRzo6QmFzaWNCbG9j
ayosIExCYXNpY0Jsb2NrPiBtX2Jsb2NrczsKICAgICAKICAgICBMVmFsdWUgbV9jYWxsRnJhbWU7
CiAgICAgTFZhbHVlIG1fY2FwdHVyZWQ7CkBAIC05NTQ5LDggKzk1OTIsOCBAQCBwcml2YXRlOgog
ICAgIAogICAgIEluUGxhY2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAgQWJzdHJhY3RJbnRl
cnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsKLSAgICBCYXNpY0Js
b2NrKiBtX2hpZ2hCbG9jazsKLSAgICBCYXNpY0Jsb2NrKiBtX25leHRIaWdoQmxvY2s7CisgICAg
REZHOjpCYXNpY0Jsb2NrKiBtX2hpZ2hCbG9jazsKKyAgICBERkc6OkJhc2ljQmxvY2sqIG1fbmV4
dEhpZ2hCbG9jazsKICAgICBMQmFzaWNCbG9jayBtX25leHRMb3dCbG9jazsKIAogICAgIE5vZGVP
cmlnaW4gbV9vcmlnaW47CkBAIC05NTY4LDYgKzk2MTEsMTAgQEAgcHJpdmF0ZToKIAogdm9pZCBs
b3dlckRGR1RvTExWTShTdGF0ZSYgc3RhdGUpCiB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICBzdGF0
ZS5wcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisjZW5kaWYKKyAgICAKICAg
ICBMb3dlckRGR1RvTExWTSBsb3dlcmluZyhzdGF0ZSk7CiAgICAgbG93ZXJpbmcubG93ZXIoKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTky
NTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzc1LDExICszNzUsMTEgQEAgcHVibGljOgogICAgIExWYWx1ZSBmZW5jZUFjcVJl
bCgpIHsgcmV0dXJuIGZlbmNlKExMVk1BdG9taWNPcmRlcmluZ0FjcXVpcmVSZWxlYXNlKTsgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+Ci0gICAgTFZhbHVlIGNhbGwo
TFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgcmV0dXJuIGJ1aWxk
Q2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCB2ZWN0b3IpOyB9Ci0gICAgTFZhbHVlIGNhbGwoTFZh
bHVlIGZ1bmN0aW9uKSB7IHJldHVybiBidWlsZENhbGwobV9idWlsZGVyLCBmdW5jdGlvbik7IH0K
LSAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxKSB7IHJldHVybiBi
dWlsZENhbGwobV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSk7IH0KKyAgICBMVmFsdWUgY2FsbChM
VHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgcmV0dXJu
IGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCB2ZWN0b3IpOyB9CisgICAgTFZhbHVlIGNh
bGwoTFR5cGUsIExWYWx1ZSBmdW5jdGlvbikgeyByZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwg
ZnVuY3Rpb24pOyB9CisgICAgTFZhbHVlIGNhbGwoTFR5cGUsIExWYWx1ZSBmdW5jdGlvbiwgTFZh
bHVlIGFyZzEpIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxKTsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgTFZhbHVlIGNhbGwoTFZhbHVl
IGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSwgQXJncy4uLiBhcmdzKSB7IHJldHVybiBidWlsZENhbGwo
bV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSwgYXJncy4uLik7IH0KKyAgICBMVmFsdWUgY2FsbChM
VHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSwgQXJncy4uLiBhcmdzKSB7IHJldHVy
biBidWlsZENhbGwobV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSwgYXJncy4uLik7IH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CiAgICAgTFZhbHVlIG9wZXJhdGlv
bihGdW5jdGlvblR5cGUgZnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcAkocmV2aXNpb24gMTkyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0Niw2IEBAIFN0YXRlOjpT
dGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgLCBtb2R1bGUoMCkKICAgICAsIGZ1bmN0aW9uKDApCiAg
ICAgLCBnZW5lcmF0ZWRGdW5jdGlvbigwKQotICAgICwgaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2Vw
dGlvblN0YWNrbWFwSUQoVUlOVF9NQVgpCi0gICAgLCBoYW5kbGVFeGNlcHRpb25TdGFja21hcElE
KFVJTlRfTUFYKQotICAgICwgY2FwdHVyZWRTdGFja21hcElEKFVJTlRfTUFYKQotICAgICwgdmFy
YXJnc1NwaWxsU2xvdHNTdGFja21hcElEKFVJTlRfTUFYKQotICAgICwgZXhjZXB0aW9uSGFuZGxp
bmdTcGlsbFNsb3RTdGFja21hcElEKFVJTlRfTUFYKQogICAgICwgdW53aW5kRGF0YVNlY3Rpb24o
MCkKICAgICAsIHVud2luZERhdGFTZWN0aW9uU2l6ZSgwKQogewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU3RhdGUuaAkocmV2aXNpb24gMTkyNTkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMSArNzUsMTkgQEAg
cHVibGljOgogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlOwogICAgIEdlbmVyYXRlZEZ1bmN0
aW9uIGdlbmVyYXRlZEZ1bmN0aW9uOwogICAgIEpJVEZpbmFsaXplciogZmluYWxpemVyOwotICAg
IHVuc2lnbmVkIGhhbmRsZVN0YWNrT3ZlcmZsb3dFeGNlcHRpb25TdGFja21hcElEOwotICAgIHVu
c2lnbmVkIGhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQ7Ci0gICAgdW5zaWduZWQgY2FwdHVyZWRT
dGFja21hcElEOwotICAgIHVuc2lnbmVkIHZhcmFyZ3NTcGlsbFNsb3RzU3RhY2ttYXBJRDsKLSAg
ICB1bnNpZ25lZCBleGNlcHRpb25IYW5kbGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQ7CisjaWYgRlRM
X1VTRVNfQjMKKyAgICBMVmFsdWUgaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblZhbHVlIHsg
bnVsbHB0ciB9OworICAgIExWYWx1ZSBoYW5kbGVFeGNlcHRpb25WYWx1ZSB7IG51bGxwdHIgfTsK
KyAgICBMVmFsdWUgY2FwdHVyZWRWYWx1ZSB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgdmFyYXJn
c1NwaWxsU2xvdHNWYWx1ZSB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgZXhjZXB0aW9uSGFuZGxp
bmdTcGlsbFNsb3RWYWx1ZSB7IG51bGxwdHIgfTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCisgICAg
dW5zaWduZWQgaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQgeyBVSU5UX01B
WCB9OworICAgIHVuc2lnbmVkIGhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQgeyBVSU5UX01BWCB9
OworICAgIHVuc2lnbmVkIGNhcHR1cmVkU3RhY2ttYXBJRCB7IFVJTlRfTUFYIH07CisgICAgdW5z
aWduZWQgdmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEIHsgVUlOVF9NQVggfTsKKyAgICB1bnNp
Z25lZCBleGNlcHRpb25IYW5kbGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQgeyBVSU5UX01BWCB9Owor
I2VuZGlmIC8vIEZUTF9VU0VfQjMKICAgICBTZWdtZW50ZWRWZWN0b3I8R2V0QnlJZERlc2NyaXB0
b3I+IGdldEJ5SWRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxQdXRCeUlkRGVzY3JpcHRvcj4gcHV0
QnlJZHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPENoZWNrSW5EZXNjcmlwdG9yPiBjaGVja0luczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMV2VpZ2h0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaAkocmV2aXNpb24gMTkyNTkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJC
M0ZyZXF1ZW5jeUNsYXNzLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTQ5LDYgKzUwLDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgZmxv
YXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyNpZiBGVExfVVNFU19CMwor
ICAgIEIzOjpGcmVxdWVuY3lDbGFzcyBmcmVxdWVuY3lDbGFzcygpIGNvbnN0IHsgcmV0dXJuIHZh
bHVlKCkgPyBCMzo6RnJlcXVlbmN5Q2xhc3M6Ok5vcm1hbCA6IEIzOjpGcmVxdWVuY3lDbGFzczo6
UmFyZTsgfQorI2VuZGlmCiAgICAgCiAgICAgdW5zaWduZWQgc2NhbGVUb1RvdGFsKGRvdWJsZSB0
b3RhbCkgY29uc3QKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265821</attachid>
            <date>2015-11-18 18:22:52 -0800</date>
            <delta_ts>2015-11-18 18:41:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151423-20151118182241.patch</filename>
            <type>text/plain</type>
            <size>89727</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzlhYjY2NWM1M2I1OTEwZGU1ZTUxN2U2MjBhOGE2MWMxY2I3MTM2Li5hZWE5NjNiZmNlMWI0YTIx
YWU1ZGQ4OWJhMGFiN2FlYWZjYTFiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODggQEAKKzIwMTUtMTEtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4g
YW5kIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRlRM
IHNob3VsZCBiZSBhYmxlIHRvIGNvbXBpbGUgYSBzbWFsbCBmdW5jdGlvbiB3aXRoIEIzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGIzL0IzTG93ZXJU
b0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAg
ICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGls
ZUluVGhyZWFkSW1wbCk6CisgICAgICAgICogZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaDoKKyAg
ICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
T3V0cHV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6On5PdXRwdXQpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjphcHBlbmRUbyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2NrZWRTdGFja1Nsb3Qp
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjpzdG9yZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpicmFuY2gpOgorICAg
ICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bmV3
QmxvY2spOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c2V0T3JpZ2luKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6Om9yaWdpbik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpm
cmFtZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RCb29sKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6Y29uc3RJbnRQdHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJ
bnQ2NCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdERvdWJsZSk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojp1cHNpbG9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OnBoaSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGQpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6c3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bCk6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjpuZWcpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZG91YmxlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVN1Yik6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5lZyk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6Yml0T3IpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0WG9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNobCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjphU2hyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxTaHIpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6bG9hZDY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3Jl
MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmU2NCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpzdG9yZVB0cik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9y
ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRQdHIpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6YWRkcmVzcyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpi
ZWxvdyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojppc1plcm8zMik6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpub3RaZXJvMzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
aXNaZXJvNjQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90WmVybzY0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpub3ROdWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRlc3RJc1plcm8zMik6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp0ZXN0Tm9uWmVybzMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OnRlc3RJc1plcm82NCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp0
ZXN0Tm9uWmVybzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRlc3RJc1plcm9QdHIp
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dGVzdE5vblplcm9QdHIpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpvcGVy
YXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6anVtcCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cmV0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnVucmVhY2hhYmxlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmNoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFuY2hvcik6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRJbmNvbWluZ1RvUGhpKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6On5PdXRwdXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6YXBwZW5kVG8pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
cGFyYW0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZTE2KTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRM
Q29tbW9uVmFsdWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1v
blZhbHVlcyk6CisgICAgICAgIChKU0M6OkZUTDo6Q29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29u
c3RhbnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmg6CisgICAgICAgICogZnRs
L0ZUTEpJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklURmluYWxpemVyOjpm
aW5hbGl6ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpMb3dlckRGR1RvTExWTSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6bG93ZXIpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNyZWF0ZVBoaVZhcmlhYmxlcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpzYWZlbHlJbnZhbGlkYXRlQWZ0ZXJU
ZXJtaW5hdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVVcHNpbG9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlUGhpKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
VG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
VmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVTdHJDYXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVBcml0aEFkZE9yU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRBY2Nlc3Nv
ckJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQ
dXRHZXR0ZXJTZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlUHV0QWNjZXNzb3JCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUFycmF5UHVzaCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFycmF5UG9wKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
Q3JlYXRlQ2xvbmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlTmV3QXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVOZXdBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlVG9QcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVMb2FkVmFyYXJncyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVN3aXRjaCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludmFsaWRhdGlv
blBvaW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
SW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVIYXNJ
bmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVIYXNHZW5lcmljUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldERpcmVjdFBuYW1lKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0UHJvcGVydHlFbnVt
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
VG9JbmRleFN0cmluZyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
ZGlkT3ZlcmZsb3dTdGFjayk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExW
TTo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0xMVk06OnJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0xMVk06Om5vblNwZWN1bGF0aXZlQ29tcGFyZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnN3aXRjaFN0cmluZ1Ns
b3cpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmRvdWJsZVRvSW50
MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnNlbnNpYmxlRG91
YmxlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6bGF6
eVNsb3dQYXRoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpqc1Zh
bHVlVG9TdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExW
TTo6ZG91YmxlVG9TdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6dm1DYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZN
OjpjYWxsQ2hlY2spOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06Omxv
d0Jsb2NrKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjphcHBlbmRP
U1JFeGl0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjYWxsU3Rh
Y2ttYXApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnByb2JlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjcmFzaCk6CisgICAgICAg
IChKU0M6OkZUTDo6bG93ZXJERkdUb0xMVk0pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0xMVk06OnZtQ2FsbE5vRXhjZXB0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogZnRs
L0ZUTE91dHB1dC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzZW5zaWJsZURvdWJs
ZVRvSW50KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjpjZWlsNjQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y3RsejMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdpdGhPdmVyZmxvdzMyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVyZmxvdzMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6Om11bFdpdGhPdmVyZmxvdzMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFk
ZFdpdGhPdmVyZmxvdzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVy
ZmxvdzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bFdpdGhPdmVyZmxvdzY0KToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUFicyk6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0Ojpkb3VibGVTaW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91Ymxl
Q29zKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVBvdyk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVQb3dpKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OmRvdWJsZVNxcnQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTG9nKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNhbGwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6dHJhcCk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpTdGF0ZTo6U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5oOgorICAg
ICAgICAqIGZ0bC9GVExXZWlnaHQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpXZWlnaHQ6OmZyZXF1
ZW5jeUNsYXNzKToKKwogMjAxNS0xMS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkganVtcHMgaW4gc25pcHBldCBjb2Rl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBhZjZjZWQ5
YjU0MjlhZjliNDA0NzNkZWQ3MTE4YmEyMzIwNmZhYTEzLi4xNjRkNzY2YTQ2ODg2ZmJlMTU5NDFl
ZTg1ZTQ0NjdiODI0MjY2ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcApAQCAtMTcxNCw2ICsxNzE0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEIzOjpPb3BzOiB7CisgICAgICAgICAgICBh
cHBlbmQoQWlyOjpPb3BzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggZDMyOGQ0YmZlNzgwZWZhNGYwMmMzOTQyZmQyZDcz
ZjM0MjMwOTlhOC4uNTEyZjQ0N2Q1ZmYxZTY1MzQwMTRmOWVmZWZjMWI3MjhjNThjZWM2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC00OTgsMTAgKzQ5OCwxMiBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbChMb25nTGl2ZWRT
dGF0ZSYgbG9uZ0xpdmVkU3RhdGUpCiAgICAgICAgICAgICByZXR1cm4gRlRMUGF0aDsKICAgICAg
ICAgfQogCisjaWYgIUZUTF9VU0VTX0IzCiAgICAgICAgIGlmIChzdGF0ZS5qaXRDb2RlLT5zdGFj
a21hcHMuc3RhY2tTaXplKCkgPiBPcHRpb25zOjpsbHZtTWF4U3RhY2tTaXplKCkpIHsKICAgICAg
ICAgICAgIEZUTDo6ZmFpbChzdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gRlRMUGF0aDsKICAg
ICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgRlRMOjpsaW5rKHN0YXRlKTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCmluZGV4
IDUxNzA1YzA3NDE2NWQ4Mjg5YWE3YmY2YTU1YjZiNmYzNGY0M2JmNDYuLjliYTQ2YjJkMWY0ZDBl
MTI0MDNjMWQyYzkwMTIxNTEzZDE3NmM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogY2xhc3MgQmFzaWNCbG9jazsKK2NsYXNzIFZhbHVlOwogZW51
bSBUeXBlIDogaW50OF90OwogfSB9CiAKQEAgLTQxLDkgKzQyLDExIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKICNpZiBGVExfVVNFU19CMwogdHlwZWRlZiBCMzo6QmFzaWNCbG9j
ayogTEJhc2ljQmxvY2s7CiB0eXBlZGVmIEIzOjpUeXBlIExUeXBlOwordHlwZWRlZiBCMzo6VmFs
dWUqIExWYWx1ZTsKICNlbHNlCiB0eXBlZGVmIExMVk1CYXNpY0Jsb2NrUmVmIExCYXNpY0Jsb2Nr
OwogdHlwZWRlZiBMTFZNVHlwZVJlZiBMVHlwZTsKK3R5cGVkZWYgTExWTVZhbHVlUmVmIExWYWx1
ZTsKICNlbmRpZgogCiB0eXBlZGVmIExMVk1BdG9taWNPcmRlcmluZyBMQXRvbWljT3JkZXJpbmc7
CkBAIC01NCw3ICs1Nyw2IEBAIHR5cGVkZWYgTExWTUludFByZWRpY2F0ZSBMSW50UHJlZGljYXRl
OwogdHlwZWRlZiBMTFZNTGlua2FnZSBMTGlua2FnZTsKIHR5cGVkZWYgTExWTU1vZHVsZVJlZiBM
TW9kdWxlOwogdHlwZWRlZiBMTFZNUmVhbFByZWRpY2F0ZSBMUmVhbFByZWRpY2F0ZTsKLXR5cGVk
ZWYgTExWTVZhbHVlUmVmIExWYWx1ZTsKIHR5cGVkZWYgTExWTU1lbW9yeUJ1ZmZlclJlZiBMTWVt
b3J5QnVmZmVyOwogCiBlbnVtIFN5bmNocm9uaXphdGlvblNjb3BlIHsgU2luZ2xlVGhyZWFkLCBD
cm9zc1RocmVhZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExC
M091dHB1dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcApp
bmRleCBjNjk3YmQ4MTJmYTkyM2YxODc5YWFhNjQyNmMzN2I4YjRlN2Q0Y2ExLi5kZjllOWUyNDFk
M2MwY2UwZTlhNmQ2OTFkOTIxNGUyMWYwOGExMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEIzT3V0cHV0LmNwcApAQCAtMzMsMTAgKzMzLDU2IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKIAogT3V0cHV0OjpPdXRwdXQoU3RhdGUmIHN0YXRlKQogICAgIDogQ29t
bW9uVmFsdWVzKHN0YXRlLmNvbnRleHQpCi0gICAgLCBtX3Byb2NlZHVyZSgqc3RhdGUucHJvYykK
KyAgICAsIG1fcHJvYygqc3RhdGUucHJvYykKIHsKIH0KIAorT3V0cHV0Ojp+T3V0cHV0KCkKK3sK
K30KKwordm9pZCBPdXRwdXQ6OmluaXRpYWxpemUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaGVh
cHMpCit7CisgICAgbV9oZWFwcyA9ICZoZWFwczsKK30KKworTEJhc2ljQmxvY2sgT3V0cHV0Ojph
cHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaywgTEJhc2ljQmxvY2sgbmV4dEJsb2NrKQoreworICAg
IGFwcGVuZFRvKGJsb2NrKTsKKyAgICByZXR1cm4gaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKG5leHRC
bG9jayk7Cit9CisKK3ZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaykKK3sK
KyAgICBtX2Jsb2NrID0gYmxvY2s7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmxvY2tlZFN0YWNrU2xv
dChzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6U3Rh
Y2tTbG90VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGJ5dGVzLCBCMzo6U3RhY2tTbG90S2luZDo6
TG9ja2VkKTsKK30KKworTFZhbHVlIE91dHB1dDo6bG9hZChUeXBlZFBvaW50ZXIgcG9pbnRlciwg
TFR5cGUgdHlwZSkKK3sKKyAgICBMVmFsdWUgbG9hZCA9IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
TWVtb3J5VmFsdWU+KG1fcHJvYywgQjM6OkxvYWQsIHR5cGUsIG9yaWdpbigpLCBwb2ludGVyLnZh
bHVlKCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rpb24obG9hZCwgKm1f
aGVhcHMpOworICAgIHJldHVybiBsb2FkOworfQorCit2b2lkIE91dHB1dDo6c3RvcmUoTFZhbHVl
IHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKK3sKKyAgICBMVmFsdWUgc3RvcmUgPSBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihtX3Byb2MsIEIzOjpTdG9yZSwgb3JpZ2lu
KCksIHZhbHVlLCBwb2ludGVyLnZhbHVlKCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRl
SW5zdHJ1Y3Rpb24oc3RvcmUsICptX2hlYXBzKTsKK30KKwordm9pZCBPdXRwdXQ6OmJyYW5jaChM
VmFsdWUgY29uZGl0aW9uLCBMQmFzaWNCbG9jayB0YWtlbiwgV2VpZ2h0IHRha2VuV2VpZ2h0LCBM
QmFzaWNCbG9jayBub3RUYWtlbiwgV2VpZ2h0IG5vdFRha2VuV2VpZ2h0KQoreworICAgIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPigKKyAgICAgICAgbV9wcm9jLCBCMzo6QnJh
bmNoLCBvcmlnaW4oKSwgY29uZGl0aW9uLAorICAgICAgICBCMzo6RnJlcXVlbnRlZEJsb2NrKHRh
a2VuLCB0YWtlbldlaWdodC5mcmVxdWVuY3lDbGFzcygpKSwKKyAgICAgICAgQjM6OkZyZXF1ZW50
ZWRCbG9jayhub3RUYWtlbiwgbm90VGFrZW5XZWlnaHQuZnJlcXVlbmN5Q2xhc3MoKSkpOworfQor
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBGVExfVVNFU19CMwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCmluZGV4IDJiYWJjY2FiZWNlMDNmNTNm
ZGRhZjI3OGJlMDJiNGYzMzY5NzQxNzMuLjI1ZmFhOTY3OWVmZDc2MjA2ZmM5NzZmYTA1MmZmNWI2
NWFhZjQ0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRw
dXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKQEAgLTMx
LDggKzMxLDE5IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAjaWYgRlRMX1VTRVNfQjMKIAotI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgor
I2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM0NDYWxsVmFsdWUu
aCIKKyNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiQjNDb25zdDMyVmFsdWUu
aCIKKyNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnRyb2xWYWx1
ZS5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5o
IgorI2luY2x1ZGUgIkIzU3RhY2tTbG90VmFsdWUuaCIKKyNpbmNsdWRlICJCM1N3aXRjaFZhbHVl
LmgiCisjaW5jbHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlwZXMuaCIKICNpbmNsdWRlICJGVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRlRMQ29tbW9uVmFsdWVzLmgiCkBAIC01
MSwxOSArNjIsMjUgQEAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNl
ZC1wYXJhbWV0ZXIiCiAjZW5kaWYgLy8gQ09NUElMRVIoQ0xBTkcpCiAKLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgREZHIHsgc3Ry
dWN0IE5vZGU7IH0KKworbmFtZXNwYWNlIEZUTCB7CiAKIGVudW0gU2NhbGUgeyBTY2FsZU9uZSwg
U2NhbGVUd28sIFNjYWxlRm91ciwgU2NhbGVFaWdodCwgU2NhbGVQdHIgfTsKIAogY2xhc3MgT3V0
cHV0IDogcHVibGljIENvbW1vblZhbHVlcyB7CiBwdWJsaWM6CiAgICAgT3V0cHV0KFN0YXRlJik7
Ci0gICAgfk91dHB1dCgpIHsgQ1JBU0goKTsgfQorICAgIH5PdXRwdXQoKTsKKworICAgIHZvaWQg
aW5pdGlhbGl6ZShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Jik7CiAKICAgICBMQmFzaWNCbG9jayBu
ZXdCbG9jayhjb25zdCBjaGFyKiBuYW1lID0gIiIpCiAgICAgewogICAgICAgICBVTlVTRURfUEFS
QU0obmFtZSk7Ci0gICAgICAgIHJldHVybiBtX3Byb2NlZHVyZS5hZGRCbG9jaygpOworICAgICAg
ICByZXR1cm4gbV9wcm9jLmFkZEJsb2NrKCk7CiAgICAgfQogCiAgICAgTEJhc2ljQmxvY2sgaW5z
ZXJ0TmV3QmxvY2tzQmVmb3JlKExCYXNpY0Jsb2NrIG5leHRCbG9jaykKQEAgLTczLDQ2ICs5MCw2
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYXN0TmV4dEJsb2NrOwogICAgIH0KIAotICAg
IExCYXNpY0Jsb2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNCbG9jayBuZXh0QmxvY2sp
IHsgQ1JBU0goKTsgfQotICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spIHsgQ1JBU0goKTsg
fQorICAgIExCYXNpY0Jsb2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNCbG9jayBuZXh0
QmxvY2spOworICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spOworCisgICAgdm9pZCBzZXRP
cmlnaW4oREZHOjpOb2RlKiBub2RlKSB7IG1fb3JpZ2luID0gbm9kZTsgfQorICAgIEIzOjpPcmln
aW4gb3JpZ2luKCkgeyByZXR1cm4gQjM6Ok9yaWdpbihtX29yaWdpbik7IH0KIAotICAgIExWYWx1
ZSBwYXJhbSh1bnNpZ25lZCBpbmRleCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGNvbnN0Qm9v
bChib29sIHZhbHVlKSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgY29uc3RJbnQzMihpbnQzMl90
IHZhbHVlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCkgeyByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBv
cmlnaW4oKSk7IH0KKworICAgIExWYWx1ZSBsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90IGJ5dGVzKTsK
KworICAgIExWYWx1ZSBjb25zdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQorICAg
IExWYWx1ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIExWYWx1ZSBjb25zdEludFB0cihUKiB2YWx1ZSkgeyBD
UkFTSCgpOyB9CisgICAgTFZhbHVlIGNvbnN0SW50UHRyKFQqIHZhbHVlKSB7IHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVl
KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgTFZhbHVlIGNvbnN0SW50UHRyKFQg
dmFsdWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBjb25zdEludDY0KGludDY0X3QgdmFsdWUp
IHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBjb25zdERvdWJsZShkb3VibGUgdmFsdWUpIHsgQ1JB
U0goKTsgfQorICAgIExWYWx1ZSBjb25zdEludFB0cihUIHZhbHVlKSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OkNvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsg
fQorICAgIExWYWx1ZSBjb25zdEludDY0KGludDY0X3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0K
KyAgICBMVmFsdWUgY29uc3REb3VibGUoZG91YmxlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OkNvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsg
fQogCi0gICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUg
dXBzaWxvbihMVHlwZSB0eXBlLCBMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VXBzaWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KKworICAg
IExWYWx1ZSBwaGkoTFR5cGUgdHlwZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6UGhpLCB0eXBlLCBvcmlnaW4oKSk7IH0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBQYXJhbXM+Ci0gICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlLCBWYWx1ZUZyb21C
bG9jayB2YWx1ZSwgUGFyYW1zLi4uIHRoZVJlc3QpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBw
aGkoTFR5cGUsIFZhbHVlRnJvbUJsb2NrLCBQYXJhbXMuLi4gdGhlUmVzdCk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICBMVmFsdWUgcGhpKExUeXBlIHR5cGUsIGNvbnN0
IFZlY3RvclR5cGUmIHZlY3RvcikgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBhZGRJbmNvbWluZ1Rv
UGhpKExWYWx1ZSBwaGksIFZhbHVlRnJvbUJsb2NrIHZhbHVlKSB7IENSQVNIKCk7IH0KKyAgICBM
VmFsdWUgcGhpKExUeXBlLCBjb25zdCBWZWN0b3JUeXBlJik7CisgICAgdm9pZCBhZGRJbmNvbWlu
Z1RvUGhpKExWYWx1ZSBwaGksIFZhbHVlRnJvbUJsb2NrKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBQYXJhbXM+CisgICAgdm9pZCBhZGRJbmNvbWluZ1RvUGhpKExWYWx1ZSBwaGksIFZhbHVl
RnJvbUJsb2NrLCBQYXJhbXMuLi4gdGhlUmVzdCk7CiAKLSAgICBMVmFsdWUgYWRkKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBzdWIoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIG11bChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgYWRkKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkFkZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBzdWIo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6U3ViLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CisgICAg
TFZhbHVlIG11bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpNdWwsIG9yaWdpbigpLCBsZWZ0LCByaWdo
dCk7IH0KICAgICBMVmFsdWUgZGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0go
KTsgfQogICAgIExWYWx1ZSByZW0oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgp
OyB9Ci0gICAgTFZhbHVlIG5lZyhMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1
ZSBuZWcoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHplcm8gPSBtX2Jsb2Nr
LT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZS0+dHlwZSgpLCAwKTsK
KyAgICAgICAgcmV0dXJuIHN1Yih6ZXJvLCB2YWx1ZSk7CisgICAgfQogCi0gICAgTFZhbHVlIGRv
dWJsZUFkZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFs
dWUgZG91YmxlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQotICAg
IExWYWx1ZSBkb3VibGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9
Ci0gICAgTFZhbHVlIGRvdWJsZURpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNI
KCk7IH0KKyAgICBMVmFsdWUgZG91YmxlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFkZCwgb3Jp
Z2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBkb3VibGVTdWIoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6U3ViLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJs
ZU11bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpNdWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0K
KyAgICBMVmFsdWUgZG91YmxlRGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkRpdiwgb3JpZ2luKCks
IGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBkb3VibGVSZW0oTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZU5lZyhMVmFsdWUgdmFsdWUp
IHsgQ1JBU0goKTsgfQotCi0gICAgTFZhbHVlIGJpdEFuZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgYml0T3IoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGJpdFhvcihMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgc2hsKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBhU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBsU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBkb3VibGVOZWcoTFZhbHVlIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN1Yihkb3VibGVaZXJvLCB2YWx1ZSk7CisgICAgfQorCisg
ICAgTFZhbHVlIGJpdEFuZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRBbmQsIG9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgYml0T3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0
T3IsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgYml0WG9yKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkJpdFhvciwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1
ZSBzaGwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U2hsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9
CisgICAgTFZhbHVlIGFTaHIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U1Nociwgb3JpZ2luKCksIGxl
ZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBsU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlpTaHIs
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgYml0Tm90KExWYWx1ZSB2YWx1
ZSkgeyBDUkFTSCgpOyB9CiAKICAgICBMVmFsdWUgaW5zZXJ0RWxlbWVudChMVmFsdWUgdmVjdG9y
LCBMVmFsdWUgZWxlbWVudCwgTFZhbHVlIGluZGV4KSB7IENSQVNIKCk7IH0KQEAgLTE3NSwzMyAr
MjA5LDQzIEBAIHB1YmxpYzoKICAgICAvLyBTaW1pbGFyIHRvIGdldCgpIGJ1dCBmb3Igc3Rvcmlu
ZyB0byB0aGUgdmFsdWUgaW4gYW4gYWxsb2NhLgogICAgIExWYWx1ZSBzZXQoTFZhbHVlIHZhbHVl
LCBMVmFsdWUgcmVmZXJlbmNlKSB7IENSQVNIKCk7IH0KIAotICAgIExWYWx1ZSBsb2FkKFR5cGVk
UG9pbnRlciwgTFR5cGUgcmVmVHlwZSkgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBzdG9yZShMVmFs
dWUsIFR5cGVkUG9pbnRlciwgTFR5cGUgcmVmVHlwZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVl
IGxvYWQoVHlwZWRQb2ludGVyLCBMVHlwZSk7CisgICAgdm9pZCBzdG9yZShMVmFsdWUsIFR5cGVk
UG9pbnRlcik7CiAKICAgICBMVmFsdWUgbG9hZDhTaWduRXh0MzIoVHlwZWRQb2ludGVyKSB7IENS
QVNIKCk7IH0KICAgICBMVmFsdWUgbG9hZDhaZXJvRXh0MzIoVHlwZWRQb2ludGVyKSB7IENSQVNI
KCk7IH0KICAgICBMVmFsdWUgbG9hZDE2U2lnbkV4dDMyKFR5cGVkUG9pbnRlcikgeyBDUkFTSCgp
OyB9CiAgICAgTFZhbHVlIGxvYWQxNlplcm9FeHQzMihUeXBlZFBvaW50ZXIpIHsgQ1JBU0goKTsg
fQogICAgIExWYWx1ZSBsb2FkMzIoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JBU0goKTsgfQot
ICAgIExWYWx1ZSBsb2FkNjQoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JBU0goKTsgfQorICAg
IExWYWx1ZSBsb2FkNjQoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRl
ciwgQjM6OkludDY0KTsgfQogICAgIExWYWx1ZSBsb2FkUHRyKFR5cGVkUG9pbnRlciBwb2ludGVy
KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbG9hZEZsb2F0VG9Eb3VibGUoVHlwZWRQb2ludGVy
IHBvaW50ZXIpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBsb2FkRG91YmxlKFR5cGVkUG9pbnRl
ciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAgICB2b2lkIHN0b3JlMTYoTFZhbHVlIHZhbHVlLCBU
eXBlZFBvaW50ZXIgcG9pbnRlcikgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBzdG9yZTMyKExWYWx1
ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JBU0goKTsgfQotICAgIHZvaWQgc3Rv
cmU2NChMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAg
ICB2b2lkIHN0b3JlUHRyKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgQ1JB
U0goKTsgfQotICAgIHZvaWQgc3RvcmVEb3VibGUoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIg
cG9pbnRlcikgeyBDUkFTSCgpOyB9CisgICAgdm9pZCBzdG9yZTMyKExWYWx1ZSB2YWx1ZSwgVHlw
ZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIpOyB9CisgICAgdm9pZCBz
dG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUs
IHBvaW50ZXIpOyB9CisgICAgdm9pZCBzdG9yZVB0cihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRl
ciBwb2ludGVyKSB7IHN0b3JlKHZhbHVlLCBwb2ludGVyKTsgfQorICAgIHZvaWQgc3RvcmVEb3Vi
bGUoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9p
bnRlcik7IH0KIAotICAgIExWYWx1ZSBhZGRQdHIoTFZhbHVlIHZhbHVlLCBwdHJkaWZmX3QgaW1t
ZWRpYXRlID0gMCkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGFkZFB0cihMVmFsdWUgdmFsdWUs
IHB0cmRpZmZfdCBpbW1lZGlhdGUgPSAwKQorICAgIHsKKyAgICAgICAgaWYgKCFpbW1lZGlhdGUp
CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIHJldHVybiBhZGQodmFsdWUsIGNv
bnN0SW50UHRyKGltbWVkaWF0ZSkpOworICAgIH0KIAogICAgIC8vIENvbnN0cnVjdCBhbiBhZGRy
ZXNzIGJ5IG9mZnNldHRpbmcgYmFzZSBieSB0aGUgcmVxdWVzdGVkIGFtb3VudCBhbmQgYXNjcmli
aW5nCiAgICAgLy8gdGhlIHJlcXVlc3RlZCBhYnN0cmFjdCBoZWFwIHRvIGl0LgotICAgIFR5cGVk
UG9pbnRlciBhZGRyZXNzKGNvbnN0IEFic3RyYWN0SGVhcCYgaGVhcCwgTFZhbHVlIGJhc2UsIHB0
cmRpZmZfdCBvZmZzZXQgPSAwKSB7IENSQVNIKCk7IH0KKyAgICBUeXBlZFBvaW50ZXIgYWRkcmVz
cyhjb25zdCBBYnN0cmFjdEhlYXAmIGhlYXAsIExWYWx1ZSBiYXNlLCBwdHJkaWZmX3Qgb2Zmc2V0
ID0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBUeXBlZFBvaW50ZXIoaGVhcCwgYWRkUHRyKGJh
c2UsIG9mZnNldCkpOworICAgIH0KICAgICAvLyBDb25zdHJ1Y3QgYW4gYWRkcmVzcyBieSBvZmZz
ZXR0aW5nIGJhc2UgYnkgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnkgdGhlIGZpZWxkLAogICAgIC8v
IGFuZCBvcHRpb25hbGx5IGFuIGFkZGl0aW9uYWwgYW1vdW50ICh1c2UgdGhpcyB3aXRoIGNhcmUp
LCBhbmQgdGhlbiBjcmVhdGluZwogICAgIC8vIGEgVHlwZWRQb2ludGVyIHdpdGggdGhlIGdpdmVu
IGZpZWxkIGFzIHRoZSBoZWFwLgotICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzKExWYWx1ZSBiYXNl
LCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCwgcHRyZGlmZl90IG9mZnNldCA9IDApIHsgQ1JB
U0goKTsgfQorICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0
cmFjdEZpZWxkJiBmaWVsZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRkcmVzcyhmaWVsZCwgYmFzZSwgb2Zmc2V0ICsgZmllbGQub2Zmc2V0KCkpOworICAg
IH0KIAogICAgIExWYWx1ZSBiYXNlSW5kZXgoTFZhbHVlIGJhc2UsIExWYWx1ZSBpbmRleCwgU2Nh
bGUsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKSB7IENSQVNIKCk7IH0KIApAQCAtMjM1LDcgKzI3OSw3
IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIGFib3ZlKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBhYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGJlbG93KExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBiZWxvdyhMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpCZWxvdywgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQogICAgIExWYWx1ZSBiZWxv
d09yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CiAgICAgTFZh
bHVlIGdyZWF0ZXJUaGFuKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQog
ICAgIExWYWx1ZSBncmVhdGVyVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkg
eyBDUkFTSCgpOyB9CkBAIC0yNTYsMTkgKzMwMCwxOSBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGRv
dWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBD
UkFTSCgpOyB9CiAgICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVk
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogCi0gICAgTFZhbHVlIGlz
WmVybzMyKExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIG5vdFplcm8zMihM
VmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBpc1plcm82NChMVmFsdWUgdmFs
dWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBub3RaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IENS
QVNIKCk7IH0KLSAgICBMVmFsdWUgaXNOdWxsKExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Ci0g
ICAgTFZhbHVlIG5vdE51bGwoTFZhbHVlIHZhbHVlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUg
aXNaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQzMlplcm8pOyB9Cisg
ICAgTFZhbHVlIG5vdFplcm8zMihMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGlu
dDMyWmVybyk7IH0KKyAgICBMVmFsdWUgaXNaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCks
IHZhbHVlLCBpbnQ2NFplcm8pOyB9CisgICAgTFZhbHVlIG5vdFplcm82NChMVmFsdWUgdmFsdWUp
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVx
dWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDY0WmVybyk7IH0KKyAgICBMVmFsdWUgaXNOdWxsKExW
YWx1ZSB2YWx1ZSkgeyByZXR1cm4gaXNaZXJvNjQodmFsdWUpOyB9CisgICAgTFZhbHVlIG5vdE51
bGwoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBub3RaZXJvNjQodmFsdWUpOyB9CiAKLSAgICBMVmFs
dWUgdGVzdElzWmVybzMyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JBU0goKTsgfQot
ICAgIExWYWx1ZSB0ZXN0Tm9uWmVybzMyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JB
U0goKTsgfQotICAgIExWYWx1ZSB0ZXN0SXNaZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFz
aykgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIHRlc3ROb25aZXJvNjQoTFZhbHVlIHZhbHVlLCBM
VmFsdWUgbWFzaykgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIHRlc3RJc1plcm9QdHIoTFZhbHVl
IHZhbHVlLCBMVmFsdWUgbWFzaykgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIHRlc3ROb25aZXJv
UHRyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSB0
ZXN0SXNaZXJvMzIoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gaXNaZXJvMzIo
Yml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KKyAgICBMVmFsdWUgdGVzdE5vblplcm8zMihMVmFsdWUg
dmFsdWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBub3RaZXJvMzIoYml0QW5kKHZhbHVlLCBtYXNr
KSk7IH0KKyAgICBMVmFsdWUgdGVzdElzWmVybzY0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2sp
IHsgcmV0dXJuIGlzWmVybzY0KGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CisgICAgTFZhbHVlIHRl
c3ROb25aZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gbm90WmVybzY0
KGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CisgICAgTFZhbHVlIHRlc3RJc1plcm9QdHIoTFZhbHVl
IHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gaXNOdWxsKGJpdEFuZCh2YWx1ZSwgbWFzaykp
OyB9CisgICAgTFZhbHVlIHRlc3ROb25aZXJvUHRyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2sp
IHsgcmV0dXJuIG5vdE51bGwoYml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KIAogICAgIExWYWx1ZSBz
ZWxlY3QoTFZhbHVlIHZhbHVlLCBMVmFsdWUgdGFrZW4sIExWYWx1ZSBub3RUYWtlbikgeyBDUkFT
SCgpOyB9CiAgICAgTFZhbHVlIGV4dHJhY3RWYWx1ZShMVmFsdWUgYWdnVmFsLCB1bnNpZ25lZCBp
bmRleCkgeyBDUkFTSCgpOyB9CkBAIC0yNzcsMTggKzMyMSwyMSBAQCBwdWJsaWM6CiAgICAgTFZh
bHVlIGZlbmNlQWNxUmVsKCkgeyBDUkFTSCgpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBW
ZWN0b3JUeXBlPgotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgY29uc3QgVmVjdG9y
VHlwZSYgdmVjdG9yKSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rp
b24pIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVl
IGFyZzEpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExWYWx1ZSBm
dW5jdGlvbiwgY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OkNDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIEIzOjpWYWx1ZTo6
QWRqYWNlbmN5TGlzdCh2ZWN0b3IpKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUsIExW
YWx1ZSBmdW5jdGlvbikgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDQ2FsbFZhbHVl
PihtX3Byb2MsIHR5cGUsIG9yaWdpbigpKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5cGUs
IExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6Q0NhbGxWYWx1ZT4obV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwgYXJnMSk7IH0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlv
biwgTFZhbHVlIGFyZzEsIEFyZ3MuLi4gYXJncykgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGNh
bGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBMVmFsdWUgYXJnMSwgQXJncy4uLiBhcmdz
KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNDYWxsVmFsdWU+KG1fcHJvYywgdHlw
ZSwgb3JpZ2luKCksIGFyZzEsIGFyZ3MuLi4pOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGU+Ci0gICAgTFZhbHVlIG9wZXJhdGlvbihGdW5jdGlvblR5cGUgZnVuY3Rpb24p
IHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9u
KSB7IHJldHVybiBjb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSk7IH0K
IAotICAgIHZvaWQganVtcChMQmFzaWNCbG9jayBkZXN0aW5hdGlvbikgeyBDUkFTSCgpOyB9Ci0g
ICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgTEJhc2ljQmxvY2sgdGFrZW4sIFdlaWdo
dCB0YWtlbldlaWdodCwgTEJhc2ljQmxvY2sgbm90VGFrZW4sIFdlaWdodCBub3RUYWtlbldlaWdo
dCkgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgV2VpZ2h0
ZWRUYXJnZXQgdGFrZW4sIFdlaWdodGVkVGFyZ2V0IG5vdFRha2VuKSB7IENSQVNIKCk7IH0KKyAg
ICB2b2lkIGp1bXAoTEJhc2ljQmxvY2sgZGVzdGluYXRpb24pIHsgbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpDb250cm9sVmFsdWU+KG1fcHJvYywgQjM6Okp1bXAsIG9yaWdpbigpLCBCMzo6RnJlcXVl
bnRlZEJsb2NrKGRlc3RpbmF0aW9uKSk7IH0KKyAgICB2b2lkIGJyYW5jaChMVmFsdWUgY29uZGl0
aW9uLCBMQmFzaWNCbG9jayB0YWtlbiwgV2VpZ2h0IHRha2VuV2VpZ2h0LCBMQmFzaWNCbG9jayBu
b3RUYWtlbiwgV2VpZ2h0IG5vdFRha2VuV2VpZ2h0KTsKKyAgICB2b2lkIGJyYW5jaChMVmFsdWUg
Y29uZGl0aW9uLCBXZWlnaHRlZFRhcmdldCB0YWtlbiwgV2VpZ2h0ZWRUYXJnZXQgbm90VGFrZW4p
CisgICAgeworICAgICAgICBicmFuY2goY29uZGl0aW9uLCB0YWtlbi50YXJnZXQoKSwgdGFrZW4u
d2VpZ2h0KCksIG5vdFRha2VuLnRhcmdldCgpLCBub3RUYWtlbi53ZWlnaHQoKSk7CisgICAgfQog
CiAgICAgLy8gQnJhbmNoZXMgdG8gYW4gYWxyZWFkeS1jcmVhdGVkIGhhbmRsZXIgaWYgdHJ1ZSwg
ImZhbGxzIHRocm91Z2giIGlmIGZhbHNlLiBGYWxsLXRocm91Z2ggaXMKICAgICAvLyBzaW11bGF0
ZWQgYnkgY3JlYXRpbmcgYSBjb250aW51YXRpb24gZm9yIHlvdS4KQEAgLTMwMCwxMyArMzQ3LDI1
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgogICAgIHZvaWQg
c3dpdGNoSW5zdHJ1Y3Rpb24oTFZhbHVlIHZhbHVlLCBjb25zdCBWZWN0b3JUeXBlJiBjYXNlcywg
TEJhc2ljQmxvY2sgZmFsbFRocm91Z2gsIFdlaWdodCBmYWxsVGhyb3VnaFdlaWdodCkgeyBDUkFT
SCgpOyB9CiAKLSAgICB2b2lkIHJldChMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQorICAgIHZv
aWQgcmV0KExWYWx1ZSB2YWx1ZSkgeyBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1
ZT4obV9wcm9jLCBCMzo6UmV0dXJuLCBvcmlnaW4oKSwgdmFsdWUpOyB9CisKKyAgICB2b2lkIHVu
cmVhY2hhYmxlKCkgeyBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9j
LCBCMzo6T29wcywgb3JpZ2luKCkpOyB9CiAKLSAgICB2b2lkIHVucmVhY2hhYmxlKCkgeyBDUkFT
SCgpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNoZWNrKExW
YWx1ZSB2YWx1ZSwgY29uc3QgU3RhY2ttYXBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEIzOjpDaGVja1ZhbHVlKiBjaGVjayA9
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q2hlY2tWYWx1ZT4obV9wcm9jLCBCMzo6Q2hlY2ssIG9y
aWdpbigpLCB2YWx1ZSk7CisgICAgICAgIGZvciAoTFZhbHVlIHZhbHVlIDogYXJndW1lbnRzKQor
ICAgICAgICAgICAgY2hlY2stPmFwcGVuZChCMzo6Q29uc3RyYWluZWRWYWx1ZSh2YWx1ZSkpOwor
ICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKGZ1bmN0b3IpOworICAgIH0KIAogICAgIHZvaWQg
dHJhcCgpIHsgQ1JBU0goKTsgfQogCi0gICAgVmFsdWVGcm9tQmxvY2sgYW5jaG9yKExWYWx1ZSB2
YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgVmFsdWVGcm9tQmxvY2sgYW5jaG9yKExWYWx1ZSB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBWYWx1ZUZyb21CbG9jayh2YWx1ZSwgbV9ibG9jayk7
CisgICAgfQogCiAjcHJhZ21hIG1hcmsgLSBJbnRyaW5zaWNzCiAKQEAgLTMxNiwxMiArMzc1LDQ1
IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgcGF0Y2hwb2ludFZvaWRJbnRyaW5zaWMoKSB7IENSQVNI
KCk7IH0KIAogI3ByYWdtYSBtYXJrIC0gU3RhdGVzCi0gICAgQjM6OlByb2NlZHVyZSYgbV9wcm9j
ZWR1cmU7CisgICAgQjM6OlByb2NlZHVyZSYgbV9wcm9jOwogCisgICAgREZHOjpOb2RlKiBtX29y
aWdpbiB7IG51bGxwdHIgfTsKICAgICBMQmFzaWNCbG9jayBtX2Jsb2NrIHsgbnVsbHB0ciB9Owog
ICAgIExCYXNpY0Jsb2NrIG1fbmV4dEJsb2NrIHsgbnVsbHB0ciB9OworCisgICAgQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeSogbV9oZWFwczsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFt
cz4KK2lubGluZSBMVmFsdWUgT3V0cHV0OjpwaGkoTFR5cGUgdHlwZSwgVmFsdWVGcm9tQmxvY2sg
dmFsdWUsIFBhcmFtcy4uLiB0aGVSZXN0KQoreworICAgIExWYWx1ZSBwaGlOb2RlID0gcGhpKHR5
cGUpOworICAgIGFkZEluY29taW5nVG9QaGkocGhpTm9kZSwgdmFsdWUsIHRoZVJlc3QuLi4pOwor
ICAgIHJldHVybiBwaGlOb2RlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgor
aW5saW5lIExWYWx1ZSBPdXRwdXQ6OnBoaShMVHlwZSB0eXBlLCBjb25zdCBWZWN0b3JUeXBlJiB2
ZWN0b3IpCit7CisgICAgTFZhbHVlIHBoaU5vZGUgPSBwaGkodHlwZSk7CisgICAgZm9yIChjb25z
dCBWYWx1ZUZyb21CbG9jayYgdmFsdWVGcm9tQmxvY2sgOiB2ZWN0b3IpCisgICAgICAgIGFkZElu
Y29taW5nVG9QaGkocGhpTm9kZSwgdmFsdWVGcm9tQmxvY2spOworICAgIHJldHVybiBwaGlOb2Rl
OworfQorCitpbmxpbmUgdm9pZCBPdXRwdXQ6OmFkZEluY29taW5nVG9QaGkoTFZhbHVlIHBoaSwg
VmFsdWVGcm9tQmxvY2sgdmFsdWUpCit7CisgICAgdmFsdWUudmFsdWUoKS0+YXM8QjM6OlVwc2ls
b25WYWx1ZT4oKS0+c2V0UGhpKHBoaSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFt
cz4KK2lubGluZSB2b2lkIE91dHB1dDo6YWRkSW5jb21pbmdUb1BoaShMVmFsdWUgcGhpLCBWYWx1
ZUZyb21CbG9jayB2YWx1ZSwgUGFyYW1zLi4uIHRoZVJlc3QpCit7CisgICAgYWRkSW5jb21pbmdU
b1BoaShwaGksIHZhbHVlKTsKKyAgICBhZGRJbmNvbWluZ1RvUGhpKHBoaSwgdGhlUmVzdC4uLik7
Cit9CisKKwogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAogI2VuZGlmIC8vIENPTVBJTEVSKENMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21tb25WYWx1ZXMuY3BwCmluZGV4IDBmYmE5NGY2ZTRlYmFhYjJiMDc3NDVjOTc0YmE4
NzZlMjc2ODQxYTguLjg2MjViOGRlNDA4MDRlYmQ4MGM0ZGZkMWU1NjY3NDZhMTAzMjJiMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKQEAgLTI2
LDEzICsyNiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZUTENvbW1vblZh
bHVlcy5oIgogCisjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIz
Q29uc3QzMlZhbHVlLmgiCisjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJC
M0NvbnN0RG91YmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKKyNpbmNs
dWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGlvbnMuaCIKIAogI2lm
IEVOQUJMRShGVExfSklUKQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKK3Vz
aW5nIG5hbWVzcGFjZSBCMzsKKwogQ29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMoTENvbnRleHQg
Y29udGV4dCkKICNpZiBGVExfVVNFU19CMwogICAgIDogdm9pZFR5cGUoQjM6OlZvaWQpCkBAIC02
OCw5ICs3Nyw3IEBAIENvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnRleHQp
CiAgICAgLCBpbnRQdHJPbmUoY29uc3RJbnQoaW50UHRyLCAxLCBTaWduRXh0ZW5kKSkKICAgICAs
IGludFB0clR3byhjb25zdEludChpbnRQdHIsIDIsIFNpZ25FeHRlbmQpKQogICAgICwgaW50UHRy
VGhyZWUoY29uc3RJbnQoaW50UHRyLCAzLCBTaWduRXh0ZW5kKSkKLSAgICAsIGludFB0ckZvdXIo
Y29uc3RJbnQoaW50UHRyLCA0LCBTaWduRXh0ZW5kKSkKICAgICAsIGludFB0ckVpZ2h0KGNvbnN0
SW50KGludFB0ciwgOCwgU2lnbkV4dGVuZCkpCi0gICAgLCBpbnRQdHJQdHIoY29uc3RJbnQoaW50
UHRyLCBzaXplb2Yodm9pZCopLCBTaWduRXh0ZW5kKSkKICAgICAsIGRvdWJsZVplcm8oY29uc3RS
ZWFsKGRvdWJsZVR5cGUsIDApKQogICAgICwgcmFuZ2VLaW5kKG1kS2luZElEKGNvbnRleHQsICJy
YW5nZSIpKQogICAgICwgcHJvZktpbmQobWRLaW5kSUQoY29udGV4dCwgInByb2YiKSkKQEAgLTgw
LDEyICs4NywyNCBAQCBDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyhMQ29udGV4dCBjb250ZXh0
KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21vZHVsZSgwKQogeworfQorCiAj
aWYgRlRMX1VTRVNfQjMKLSAgICAvLyBQbGVudHkgb2YgdmFsdWVzIGFyZSB1bmluaXRpYWxpemVk
LiBUaGUgYnJhbmNoIGlzIGp1c3QgdGhlcmUgZm9yIE5PUkVUVVJOLgotICAgIGlmICghbV9tb2R1
bGUpCi0gICAgICAgIENSQVNIKCk7Ci0jZW5kaWYKK3ZvaWQgQ29tbW9uVmFsdWVzOjppbml0aWFs
aXplQ29uc3RhbnRzKEIzOjpQcm9jZWR1cmUmIHByb2MsIEIzOjpCYXNpY0Jsb2NrKiBibG9jaykK
K3sKKyAgICBpbnQzMlplcm8gPSBibG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIDApOworICAgIGludDMyT25lID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAxKTsKKyAgICBib29sZWFuVHJ1ZSA9IGludDMyT25lOworICAg
IGJvb2xlYW5GYWxzZSA9IGludDMyWmVybzsKKyAgICBpbnQ2NFplcm8gPSBibG9jay0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOworICAgIGludFB0clplcm8gPSBi
bG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKTsKKyAgICBp
bnRQdHJPbmUgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAxKTsKKyAgICBpbnRQdHJUd28gPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAyKTsKKyAgICBpbnRQdHJUaHJlZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMpOworICAgIGludFB0ckVpZ2h0ID0gYmxvY2st
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgOCk7CisgICAgZG91Ymxl
WmVybyA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDAuKTsKIH0KKyNlbmRpZgogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCmluZGV4IDZhZjk1ODk3YTY5NWI1
NGY2NDExOTU4NmQ1NTRhOTI2OTVhYWZjOTkuLjYxNjE5MTFkN2JjNjcwYzVmMWVlYmFjOGViMjUy
YTdjNjg4YjcwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
bW9uVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1
ZXMuaApAQCAtMzEsMTYgKzMxLDI3IEBACiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0ZWRUeXBlcy5o
IgogI2luY2x1ZGUgIkZUTFZhbHVlUmFuZ2UuaCIKIAotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBGVEwgeworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBCMyB7CitjbGFzcyBCYXNpY0Js
b2NrOworY2xhc3MgUHJvY2VkdXJlOworfQorCituYW1lc3BhY2UgRlRMIHsKIAogY2xhc3MgQ29t
bW9uVmFsdWVzIHsKIHB1YmxpYzoKICAgICBDb21tb25WYWx1ZXMoTENvbnRleHQgY29udGV4dCk7
Ci0gICAgCisKKyNpZiBGVExfVVNFU19CMworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnN0YW50cyhC
Mzo6UHJvY2VkdXJlJiwgQjM6OkJhc2ljQmxvY2sqKTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAg
ICAgdm9pZCBpbml0aWFsaXplKExNb2R1bGUgbW9kdWxlKQogICAgIHsKICAgICAgICAgbV9tb2R1
bGUgPSBtb2R1bGU7CiAgICAgfQorI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiAgICAgCiAgICAgY29u
c3QgTFR5cGUgdm9pZFR5cGU7CiAgICAgY29uc3QgTFR5cGUgYm9vbGVhbjsKQEAgLTYwLDIwICs3
MSwyMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTFR5cGUgcmVmRmxvYXQ7CiAgICAgY29uc3QgTFR5
cGUgcmVmRG91YmxlOwogI2VuZGlmCi0gICAgY29uc3QgTFZhbHVlIGJvb2xlYW5UcnVlIHsgbnVs
bHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBib29sZWFuRmFsc2UgeyBudWxscHRyIH07Ci0gICAg
Y29uc3QgTFZhbHVlIGludDhaZXJvIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnQz
Mlplcm8geyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGludDMyT25lIHsgbnVsbHB0ciB9
OwotICAgIGNvbnN0IExWYWx1ZSBpbnQ2NFplcm8geyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZh
bHVlIGludFB0clplcm8geyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGludFB0ck9uZSB7
IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50UHRyVHdvIHsgbnVsbHB0ciB9OwotICAg
IGNvbnN0IExWYWx1ZSBpbnRQdHJUaHJlZSB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUg
aW50UHRyRm91ciB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50UHRyRWlnaHQgeyBu
dWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGludFB0clB0ciB7IG51bGxwdHIgfTsKLSAgICBj
b25zdCBMVmFsdWUgZG91YmxlWmVybyB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgYm9vbGVhblRy
dWUgeyBudWxscHRyIH07CisgICAgTFZhbHVlIGJvb2xlYW5GYWxzZSB7IG51bGxwdHIgfTsKKyNp
ZiAhRlRMX1VTRVNfQjMKKyAgICBMVmFsdWUgaW50OFplcm8geyBudWxscHRyIH07CisjZW5kaWYK
KyAgICBMVmFsdWUgaW50MzJaZXJvIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBpbnQzMk9uZSB7
IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50NjRaZXJvIHsgbnVsbHB0ciB9OworICAgIExWYWx1
ZSBpbnRQdHJaZXJvIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBpbnRQdHJPbmUgeyBudWxscHRy
IH07CisgICAgTFZhbHVlIGludFB0clR3byB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50UHRy
VGhyZWUgeyBudWxscHRyIH07CisgICAgTFZhbHVlIGludFB0ckVpZ2h0IHsgbnVsbHB0ciB9Owor
ICAgIExWYWx1ZSBkb3VibGVaZXJvIHsgbnVsbHB0ciB9OwogICAgIAogICAgIGNvbnN0IHVuc2ln
bmVkIHJhbmdlS2luZCB7IDAgfTsKICAgICBjb25zdCB1bnNpZ25lZCBwcm9mS2luZCB7IDAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAppbmRleCA5
M2IwODRmNTNhZTBiOTc0NTEzYjkxYmM4Y2Q0MTlmNThkZDAyY2FjLi4wYjc4MzIwMjBjZTU4OTJl
ZjkzZWU3NGI5ZGVlNTRjNzdkNDAwYmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExKSVRGaW5hbGl6ZXIuY3BwCkBAIC0xNTEsOCArMTUxLDkgQEAgYm9vbCBKSVRGaW5hbGl6
ZXI6OmZpbmFsaXplRnVuY3Rpb24oKQogICAgICAgICAgICAgKCJGVEwgZW50cnlwb2ludCB0aHVu
ayBmb3IgJXMgd2l0aCBMTFZNIGdlbmVyYXRlZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5nKENvZGVC
bG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEo
KSwgZnVuY3Rpb24pKSk7CiAgICAgCiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShq
aXRDb2RlKTsKLQorI2lmICFGVExfVVNFU19CMwogICAgIG1fcGxhbi52bS51cGRhdGVGVExMYXJn
ZXN0U3RhY2tTaXplKGppdENvZGUtPnN0YWNrbWFwcy5zdGFja1NpemUoKSk7CisjZW5kaWYKIAog
ICAgIGlmIChtX3BsYW4uY29tcGlsYXRpb24pCiAgICAgICAgIG1fcGxhbi52bS5tX3BlckJ5dGVj
b2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fcGxhbi5jb21waWxhdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAzZGFiMzkzMTAwZDlmMDg4NjI5YTZhYzdj
ZTZjOGM5NDcxMmYyYWEzLi44MWI2ZDU3MDczOGFjZTgyZTE1ZjcxMzljNTFhOTE5YmZiMGEyM2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTUyLDYgKzUyLDcgQEAg
dm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAvLyBMTFZNIHdpbGwgY3JlYXRlIGl0cyBvd24g
anVtcCB0YWJsZXMgYXMgbmVlZGVkLgogICAgIGNvZGVCbG9jay0+Y2xlYXJTd2l0Y2hKdW1wVGFi
bGVzKCk7CiAKKyNpZiAhRlRMX1VTRVNfQjMKICAgICAvLyBXaGF0IExMVk0ncyBzdGFja21hcHMg
Y2FsbCBzdGFja1NpemVGb3JMb2NhbHMgYW5kIHdoYXQgd2UgY2FsbCBmcmFtZVJlZ2lzdGVyQ291
bnQgaGF2ZSBhIHNpbXBsZQogICAgIC8vIHJlbGF0aW9uc2hpcCwgdGhvdWdoIGl0J3Mgbm90IG9i
dmlvdXMgZnJvbSByZWFkaW5nIHRoZSBjb2RlLiBUaGUgZWFzaWVzdCB3YXkgdG8gdW5kZXJzdGFu
ZCB0aGVtCiAgICAgLy8gaXMgdG8gbG9vayBhdCBzdGFja09mZnNldCwgaS5lLiB3aGF0IHlvdSBo
YXZlIHRvIGFkZCB0byBGUCB0byBnZXQgU1AuIEZvciBMTFZNIHRoYXQgaXMganVzdDoKQEAgLTc3
LDYgKzc4LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAvLyAgICAgZnJhbWVSZWdp
c3RlckNvdW50ID09IC0oLXN0YXRlLmppdENvZGUtPnN0YWNrbWFwcy5zdGFja1NpemVGb3JMb2Nh
bHMoKSkgLyBzaXplb2YoUmVnaXN0ZXIpCiAgICAgLy8gICAgIGZyYW1lUmVnaXN0ZXJDb3VudCA9
PSBzdGF0ZS5qaXRDb2RlLT5zdGFja21hcHMuc3RhY2tTaXplRm9yTG9jYWxzKCkgLyBzaXplb2Yo
UmVnaXN0ZXIpCiAgICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudCA9
IHN0YXRlLmppdENvZGUtPnN0YWNrbWFwcy5zdGFja1NpemVGb3JMb2NhbHMoKSAvIHNpemVvZih2
b2lkKik7CisjZW5kaWYKICAgICAKICAgICBzdGF0ZS5qaXRDb2RlLT5jb21tb24ucmVxdWlyZWRS
ZWdpc3RlckNvdW50Rm9yRXhpdCA9IGdyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQo
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAKaW5kZXggOWQ0MjBhZmZmMGFhM2FlOWM5ZmEyZDZlYjljNDE2MTMxZTRjZDY4My4uM2M5
ZjRjYmQ4YzU0OGI2MmFkMDAzY2VlNWNhNTY0OWY2NWIwYjRkNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCit1c2luZyBuYW1lc3BhY2UgQjM7
CiB1c2luZyBuYW1lc3BhY2UgREZHOwogCiBuYW1lc3BhY2UgewpAQCAtMTA1LDYgKzEwNiw5IEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX2Z0bFN0YXRlKHN0YXRlKQogICAgICAgICAsIG1faGVhcHMo
c3RhdGUuY29udGV4dCkKICAgICAgICAgLCBtX291dChzdGF0ZSkKKyNpZiBGVExfVVNFU19CMwor
ICAgICAgICAsIG1fcHJvYygqc3RhdGUucHJvYykKKyNlbmRpZgogICAgICAgICAsIG1fc3RhdGUo
c3RhdGUuZ3JhcGgpCiAgICAgICAgICwgbV9pbnRlcnByZXRlcihzdGF0ZS5ncmFwaCwgbV9zdGF0
ZSkKICAgICAgICAgLCBtX3N0YWNrbWFwSURzKDApCkBAIC0xMjcsMTQgKzEzMSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwogCi0jaWYg
RlRMX1VTRVNfQjMKLSAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSB8fCAh
dmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgQ1JBU0goKTsKLQotICAg
ICAgICBtX3Byb2xvZ3VlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJQcm9sb2d1ZSIpKTsKLSAg
ICAgICAgTEJhc2ljQmxvY2sgc3RhY2tPdmVyZmxvdyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
U3RhY2sgb3ZlcmZsb3ciKSk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIGNoZWNrQXJndW1lbnRzID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJDaGVjayBhcmd1bWVudHMiKSk7Ci0jZWxzZQorI2lmICFG
VExfVVNFU19CMwogICAgICAgICBtX2Z0bFN0YXRlLm1vZHVsZSA9CiAgICAgICAgICAgICBtb2R1
bGVDcmVhdGVXaXRoTmFtZUluQ29udGV4dChuYW1lLmRhdGEoKSwgbV9mdGxTdGF0ZS5jb250ZXh0
KTsKICAgICAgICAgCkBAIC0xNDYsMTEgKzE0MywxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAv
LyBzbG93ZXIuIEl0IHNob3VsZCBiZSBkaXNhYmxlZC4KICAgICAgICAgICAgIGFkZFRhcmdldERl
cGVuZGVudEZ1bmN0aW9uQXR0cihtX2Z0bFN0YXRlLmZ1bmN0aW9uLCAidGFyZ2V0LWZlYXR1cmVz
IiwgIi1hdngiKTsKICAgICAgICAgfQorI2VuZGlmIC8vICFGVExfVVNFU19CMwogICAgICAgICAK
ICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRh
dGFMb2coIkZ1bmN0aW9uIHJlYWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKLSAgICAgICAg
CisKKyNpZiBGVExfVVNFU19CMworICAgICAgICBtX291dC5pbml0aWFsaXplKG1faGVhcHMpOwor
I2Vsc2UKICAgICAgICAgbV9vdXQuaW5pdGlhbGl6ZShtX2Z0bFN0YXRlLm1vZHVsZSwgbV9mdGxT
dGF0ZS5mdW5jdGlvbiwgbV9oZWFwcyk7CisjZW5kaWYKICAgICAgICAgCiAgICAgICAgIG1fcHJv
bG9ndWUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlByb2xvZ3VlIikpOwogICAgICAgICBMQmFz
aWNCbG9jayBzdGFja092ZXJmbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdGFjayBvdmVy
ZmxvdyIpKTsKQEAgLTE2Niw4ICsxNjgsMTUgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhtX3Byb2xvZ3VlLCBzdGFja092ZXJmbG93KTsKKyNp
ZiBGVExfVVNFU19CMworICAgICAgICBtX291dC5pbml0aWFsaXplQ29uc3RhbnRzKG1fcHJvYywg
bV9wcm9sb2d1ZSk7CisjZW5kaWYKICAgICAgICAgY3JlYXRlUGhpVmFyaWFibGVzKCk7CiAKKyNp
ZiBGVExfVVNFU19CMworICAgICAgICBtX2NhcHR1cmVkID0gbV9vdXQubG9ja2VkU3RhY2tTbG90
KHNpemVvZihKU1ZhbHVlKSAqIG1fZ3JhcGgubV9uZXh0TWFjaGluZUxvY2FsKTsKKyAgICAgICAg
bV9mdGxTdGF0ZS5jYXB0dXJlZFZhbHVlID0gbV9jYXB0dXJlZDsKKyNlbHNlIC8vIEZUTF9VU0VT
X0IzCiAgICAgICAgIExWYWx1ZSBjYXB0dXJlZEFsbG9jYSA9IG1fb3V0LmFsbG9jYShhcnJheVR5
cGUobV9vdXQuaW50NjQsIG1fZ3JhcGgubV9uZXh0TWFjaGluZUxvY2FsKSk7CiAgICAgICAgIAog
ICAgICAgICBtX2NhcHR1cmVkID0gbV9vdXQuYWRkKApAQCAtMTc2LDE2ICsxODUsMTYgQEAgcHVi
bGljOgogICAgICAgICAKICAgICAgICAgbV9mdGxTdGF0ZS5jYXB0dXJlZFN0YWNrbWFwSUQgPSBt
X3N0YWNrbWFwSURzKys7CiAgICAgICAgIG1fb3V0LmNhbGwoCi0gICAgICAgICAgICBtX291dC5z
dGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuY2FwdHVyZWRT
dGFja21hcElEKSwKKyAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBtX291dC5zdGFja21hcElu
dHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElE
KSwKICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywgY2FwdHVyZWRBbGxvY2EpOwotI2VuZGlm
CisjZW5kaWYgLy8gRlRMX1VTRV9CMwogCiAgICAgICAgIGF1dG8gcHJlT3JkZXIgPSBtX2dyYXBo
LmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHdlIGhhdmUgYW55
IENhbGxWYXJhcmdzIHRoZW4gd2UgbmVlZCB0byBoYXZlIGEgc3BpbGwgc2xvdCBmb3IgaXQuCiAg
ICAgICAgIGJvb2wgaGFzVmFyYXJncyA9IGZhbHNlOwogICAgICAgICBzaXplX3QgbWF4TnVtYmVy
T2ZDYXRjaFNwaWxscyA9IDA7Ci0gICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBwcmVP
cmRlcikgeworICAgICAgICBmb3IgKERGRzo6QmFzaWNCbG9jayogYmxvY2sgOiBwcmVPcmRlcikg
ewogICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7CiAgICAgICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDYWxsVmFyYXJn
czoKQEAgLTI0NCwxNSArMjUzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAjaWYgRlRMX1VT
RVNfQjMKLSAgICAgICAgaWYgKGhhc1ZhcmFyZ3MgfHwgIWhhc1ZhcmFyZ3MpCi0gICAgICAgICAg
ICBDUkFTSCgpOworICAgICAgICAvLyBGSVhNRQogI2Vsc2UKICAgICAgICAgaWYgKGhhc1ZhcmFy
Z3MpIHsKICAgICAgICAgICAgIExWYWx1ZSB2YXJhcmdzU3BpbGxTbG90cyA9IG1fb3V0LmFsbG9j
YSgKICAgICAgICAgICAgICAgICBhcnJheVR5cGUobV9vdXQuaW50NjQsIEpTQ2FsbFZhcmFyZ3M6
Om51bVNwaWxsU2xvdHNOZWVkZWQoKSkpOwogICAgICAgICAgICAgbV9mdGxTdGF0ZS52YXJhcmdz
U3BpbGxTbG90c1N0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAgICAgICAgICAgICBtX291
dC5jYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCksIG1fb3V0
LmNvbnN0SW50NjQobV9mdGxTdGF0ZS52YXJhcmdzU3BpbGxTbG90c1N0YWNrbWFwSUQpLAorICAg
ICAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBtX291dC5zdGFja21hcEludHJpbnNpYygpLAor
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQobV9mdGxTdGF0ZS52YXJhcmdzU3BpbGxT
bG90c1N0YWNrbWFwSUQpLAogICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywgdmFyYXJn
c1NwaWxsU2xvdHMpOwogICAgICAgICB9CiAKQEAgLTI2NCw3ICsyNzMsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgYXJyYXlUeXBlKG1fb3V0LmludDY0LCBtYXhOdW1iZXJPZkNhdGNoU3Bp
bGxzKSk7CiAgICAgICAgICAgICBtX2Z0bFN0YXRlLmV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90
U3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAgICAgICAgICAgIG1fb3V0LmNhbGwoCi0g
ICAgICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJbnQ2
NChtX2Z0bFN0YXRlLmV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90U3RhY2ttYXBJRCksCisgICAg
ICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCksCisg
ICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmV4Y2VwdGlvbkhhbmRs
aW5nU3BpbGxTbG90U3RhY2ttYXBJRCksCiAgICAgICAgICAgICAgICAgbV9vdXQuaW50MzJaZXJv
LCBleGNlcHRpb25IYW5kbGluZ1ZvbGF0aWxlUmVnaXN0ZXJzU3BpbGxTbG90cyk7CiAgICAgICAg
IH0KICNlbmRpZgpAQCAtMjcyLDggKzI4MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFdlIHNo
b3VsZCBub3QgY3JlYXRlIGFueSBhbGxvY2EncyBhZnRlciB0aGlzIHBvaW50LCBzaW5jZSB0aGV5
IHdpbGwgY2Vhc2UgdG8KICAgICAgICAgLy8gYmUgbWVtMnJlZyBjYW5kaWRhdGVzLgogICAgICAg
ICAKKyNpZiBGVExfVVNFU19CMworICAgICAgICBtX2NhbGxGcmFtZSA9IG1fb3V0LmZyYW1lUG9p
bnRlcigpOworI2Vsc2UKICAgICAgICAgbV9jYWxsRnJhbWUgPSBtX291dC5wdHJUb0ludCgKLSAg
ICAgICAgICAgIG1fb3V0LmNhbGwobV9vdXQuZnJhbWVBZGRyZXNzSW50cmluc2ljKCksIG1fb3V0
LmludDMyWmVybyksIG1fb3V0LmludFB0cik7CisgICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0
LmludFB0ciwgbV9vdXQuZnJhbWVBZGRyZXNzSW50cmluc2ljKCksIG1fb3V0LmludDMyWmVybyks
IG1fb3V0LmludFB0cik7CisjZW5kaWYKICAgICAgICAgbV90YWdUeXBlTnVtYmVyID0gbV9vdXQu
Y29uc3RJbnQ2NChUYWdUeXBlTnVtYmVyKTsKICAgICAgICAgbV90YWdNYXNrID0gbV9vdXQuY29u
c3RJbnQ2NChUYWdNYXNrKTsKICAgICAgICAgCkBAIC0yODMsMTggKzI5NywyNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBkaWRPdmVyZmxvd1N0YWNrKCksIHJhcmVseShzdGFja092ZXJmbG93KSwg
dXN1YWxseShjaGVja0FyZ3VtZW50cykpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc3RhY2tPdmVyZmxvdywgbV9oYW5kbGVFeGNlcHRpb25zKTsKLSAgICAgICAgbV9vdXQuY2Fs
bChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IpLCBtX2Nh
bGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpKTsKKyAgICAgICAgbV9vdXQu
Y2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygp
KSk7CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgLy8gRklYTUUKKyNlbHNlCiAgICAgICAgIG1f
ZnRsU3RhdGUuaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQgPSBtX3N0YWNr
bWFwSURzKys7CiAgICAgICAgIG1fb3V0LmNhbGwoCi0gICAgICAgICAgICBtX291dC5zdGFja21h
cEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuaGFuZGxlU3RhY2tPdmVy
Zmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQpLAorICAgICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1f
b3V0LnN0YWNrbWFwSW50cmluc2ljKCksCisgICAgICAgICAgICBtX291dC5jb25zdEludDY0KG1f
ZnRsU3RhdGUuaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQpLAogICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpKSk7CisjZW5kaWYKICAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1faGFuZGxlRXhjZXB0aW9ucywgY2hlY2tBcmd1bWVu
dHMpOworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIC8vIEZJWE1FCisjZWxzZQogICAgICAgICBt
X2Z0bFN0YXRlLmhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7CiAg
ICAgICAgIG1fb3V0LmNhbGwoCi0gICAgICAgICAgICBtX291dC5zdGFja21hcEludHJpbnNpYygp
LCBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUuaGFuZGxlRXhjZXB0aW9uU3RhY2ttYXBJRCks
CisgICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwg
bV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQpLAog
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxh
Y2VtZW50U2l6ZSgpKSk7CisjZW5kaWYKICAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKICAg
ICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNoZWNrQXJndW1lbnRzLCBsb3dCbG9jayht
X2dyYXBoLmJsb2NrKDApKSk7CkBAIC0zNDEsNyArMzY0LDcgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIG1fb3V0Lmp1bXAobG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpOwogICAgICAg
ICAKLSAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByZU9yZGVyKQorICAgICAgICBm
b3IgKERGRzo6QmFzaWNCbG9jayogYmxvY2sgOiBwcmVPcmRlcikKICAgICAgICAgICAgIGNvbXBp
bGVCbG9jayhibG9jayk7CiAKICNpZiAhRlRMX1VTRVNfQjMKQEAgLTM1OSwxMiArMzgyLDEyIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVQaGlWYXJpYWJsZXMoKQogICAgIHsKICAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0lu
ZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CisgICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IGJs
b2NrLT5zaXplKCk7IG5vZGVJbmRleC0tOykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBibG9jay0+YXQobm9kZUluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAh
PSBQaGkpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gREZHOjpQaGkpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIExUeXBlIHR5cGU7CiAg
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5mbGFncygpICYgTm9kZVJlc3VsdE1hc2spIHsK
QEAgLTM4NywxMiArNDEwLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIERGR19D
UkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIFBoaSBub2RlIHJlc3VsdCB0eXBlIik7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyNpZiBGVExfVVNFU19CMwor
ICAgICAgICAgICAgICAgIG1fcGhpcy5hZGQobm9kZSwgbV9wcm9jLmFkZDxWYWx1ZT4oQjM6OlBo
aSwgdHlwZSwgT3JpZ2luKG5vZGUpKSk7CisjZWxzZQogICAgICAgICAgICAgICAgIG1fcGhpcy5h
ZGQobm9kZSwgbV9vdXQuYWxsb2NhKHR5cGUpKTsKKyNlbmRpZgogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY29tcGlsZUJsb2NrKEJhc2ljQmxvY2sqIGJs
b2NrKQorICAgIHZvaWQgY29tcGlsZUJsb2NrKERGRzo6QmFzaWNCbG9jayogYmxvY2spCiAgICAg
ewogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDUxLDcgKzQ3
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIHRocmVhZC4gRmFpbGluZyB0byBkbyB0aGlzIHdv
dWxkIHJlc3VsdCBpbiB3ZWlyZCBjcmFzaGVzIGR1ZSB0byBhIHZhbHVlCiAgICAgICAgIC8vIGJl
aW5nIHVzZWQgYnV0IG5vdCBkZWZpbmVkLiBSYWNlIGNvbmRpdGlvbnMgRlRXIQogICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5k
ZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIHRhcmdldCA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CisgICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIHRhcmdldCA9IG1fZ3Jh
cGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+
ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CkBAIC00NzEsNiArNDk4LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fbm9kZSA9IG1faGlnaEJsb2NrLT5hdChub2RlSW5k
ZXgpOwogICAgICAgICBtX29yaWdpbiA9IG1fbm9kZS0+b3JpZ2luOworI2lmIEZUTF9VU0VTX0Iz
CisgICAgICAgIG1fb3V0LnNldE9yaWdpbihtX25vZGUpOworI2VuZGlmCiAgICAgICAgIAogICAg
ICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgZGF0YUxv
ZygiTG93ZXJpbmcgIiwgbV9ub2RlLCAiXG4iKTsKQEAgLTQ4MCwxMCArNTEwLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuc3RhcnRFeGVjdXRpbmcoKTsKICAgICAgICAgCiAg
ICAgICAgIHN3aXRjaCAobV9ub2RlLT5vcCgpKSB7Ci0gICAgICAgIGNhc2UgVXBzaWxvbjoKKyAg
ICAgICAgY2FzZSBERkc6OlVwc2lsb246CiAgICAgICAgICAgICBjb21waWxlVXBzaWxvbigpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGhpOgorICAgICAgICBjYXNlIERGRzo6
UGhpOgogICAgICAgICAgICAgY29tcGlsZVBoaSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSlNDb25zdGFudDoKQEAgLTUwMCw3ICs1MzAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgICAgICBjb21waWxlRG91YmxlQXNJbnQzMigp
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmFsdWVSZXA6CisgICAgICAgIGNh
c2UgREZHOjpWYWx1ZVJlcDoKICAgICAgICAgICAgIGNvbXBpbGVWYWx1ZVJlcCgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW50NTJSZXA6CkBAIC01MjEsNyArNTUxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRTdGFjazoKICAgICAgICAgICAgIGNvbXBpbGVQdXRT
dGFjaygpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hlY2s6CisgICAgICAg
IGNhc2UgREZHOjpDaGVjazoKICAgICAgICAgICAgIGNvbXBpbGVOb09wKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBUb1RoaXM6CkBAIC01ODAsMTMgKzYxMCwxMyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEFyaXRoTmVnYXRlOgogICAgICAgICAgICAgY29tcGlsZUFyaXRo
TmVnYXRlKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaXRBbmQ6CisgICAg
ICAgIGNhc2UgREZHOjpCaXRBbmQ6CiAgICAgICAgICAgICBjb21waWxlQml0QW5kKCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCaXRPcjoKKyAgICAgICAgY2FzZSBERkc6OkJp
dE9yOgogICAgICAgICAgICAgY29tcGlsZUJpdE9yKCk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBCaXRYb3I6CisgICAgICAgIGNhc2UgREZHOjpCaXRYb3I6CiAgICAgICAgICAg
ICBjb21waWxlQml0WG9yKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCaXRS
U2hpZnQ6CkBAIC04NDAsMTYgKzg3MCwxNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZvcndh
cmRWYXJhcmdzOgogICAgICAgICAgICAgY29tcGlsZUZvcndhcmRWYXJhcmdzKCk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBKdW1wOgorICAgICAgICBjYXNlIERGRzo6SnVtcDoK
ICAgICAgICAgICAgIGNvbXBpbGVKdW1wKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgREZHOjpCcmFuY2g6CiAgICAgICAgICAgICBjb21w
aWxlQnJhbmNoKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTd2l0Y2g6Cisg
ICAgICAgIGNhc2UgREZHOjpTd2l0Y2g6CiAgICAgICAgICAgICBjb21waWxlU3dpdGNoKCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZXR1cm46CisgICAgICAgIGNhc2UgREZH
OjpSZXR1cm46CiAgICAgICAgICAgICBjb21waWxlUmV0dXJuKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CkBAIC05NzMsMzggKzEwMDMsNDkgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY29tcGlsZVVwc2lsb24oKQogICAgIHsKLSAgICAgICAgTFZhbHVl
IGRlc3RpbmF0aW9uID0gbV9waGlzLmdldChtX25vZGUtPnBoaSgpKTsKLSAgICAgICAgCisgICAg
ICAgIExWYWx1ZSB1cHNpbG9uVmFsdWUgPSBudWxscHRyOwogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAg
ICAgICAgICAgbV9vdXQuc2V0KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRp
b24pOworICAgICAgICAgICAgdXBzaWxvblZhbHVlID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAg
IGNhc2UgS25vd25JbnQzMlVzZToKLSAgICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOworICAgICAgICAgICAgdXBzaWxvblZhbHVlID0g
bG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBJbnQ1MlJlcFVzZToKLSAgICAgICAgICAgIG1fb3V0LnNldChsb3dJbnQ1MihtX25vZGUt
PmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOworICAgICAgICAgICAgdXBzaWxvblZhbHVlID0gbG93
SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBCb29sZWFuVXNlOgogICAgICAgICBjYXNlIEtub3duQm9vbGVhblVzZToKLSAgICAgICAgICAg
IG1fb3V0LnNldChsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpLCBkZXN0aW5hdGlvbik7Cisg
ICAgICAgICAgICB1cHNpbG9uVmFsdWUgPSBsb3dCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2VsbFVzZToKICAgICAgICAgY2FzZSBL
bm93bkNlbGxVc2U6Ci0gICAgICAgICAgICBtX291dC5zZXQobG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwgZGVzdGluYXRpb24pOworICAgICAgICAgICAgdXBzaWxvblZhbHVlID0gbG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVudHlw
ZWRVc2U6Ci0gICAgICAgICAgICBtX291dC5zZXQobG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KSwgZGVzdGluYXRpb24pOworICAgICAgICAgICAgdXBzaWxvblZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyNpZiBGVExfVVNFU19CMworICAgICAgICBM
VmFsdWUgdXBzaWxvbk5vZGUgPSBtX291dC51cHNpbG9uKHVwc2lsb25WYWx1ZS0+dHlwZSgpLCB1
cHNpbG9uVmFsdWUpOworICAgICAgICBMVmFsdWUgcGhpTm9kZSA9IG1fcGhpcy5nZXQobV9ub2Rl
LT5waGkoKSk7CisgICAgICAgIHVwc2lsb25Ob2RlLT5hczxCMzo6VXBzaWxvblZhbHVlPigpLT5z
ZXRQaGkocGhpTm9kZSk7CisjZWxzZQorICAgICAgICBMVmFsdWUgZGVzdGluYXRpb24gPSBtX3Bo
aXMuZ2V0KG1fbm9kZS0+cGhpKCkpOworICAgICAgICBtX291dC5zZXQodXBzaWxvblZhbHVlLCBk
ZXN0aW5hdGlvbik7CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUGhpKCkK
ICAgICB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgTFZhbHVlIHBoaU5vZGUgPSBtX3BoaXMu
Z2V0KG1fbm9kZS0+cGhpKCkpOworICAgICAgICBtX291dC5tX2Jsb2NrLT5hcHBlbmQocGhpTm9k
ZSk7CisjZWxzZQogICAgICAgICBMVmFsdWUgc291cmNlID0gbV9waGlzLmdldChtX25vZGUpOwog
ICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFz
aykgewpAQCAtMTAyNyw2ICsxMDY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGR19DUkFT
SChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlRG91YmxlQ29u
c3RhbnQoKQpAQCAtMTQwMyw3ICsxNDQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7CiAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICB2bUNhbGwobV9vdXQu
b3BlcmF0aW9uKGZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAgICAgICAgICB2
bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihmdW5jdGlvbiksIG1fY2FsbEZyYW1l
LCB2YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTE0MTks
NyArMTQ2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9wZXJhdGlv
biA9IG9wZXJhdGlvblZhbHVlQWRkOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCgKLSAgICAg
ICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb24pLCBtX2NhbGxGcmFtZSwKKyAgICAgICAg
ICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUs
CiAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgfQogICAgIApAQCAtMTQyOCwxMyArMTQ3MCwxMyBAQCBw
cml2YXRlOgogICAgICAgICBMVmFsdWUgcmVzdWx0OwogICAgICAgICBpZiAobV9ub2RlLT5jaGls
ZDMoKSkgewogICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAgIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAg
ICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQzKSwgbV9j
YWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSwKICAgICAgICAgICAgICAg
ICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKAotICAgICAg
ICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQyKSwgbV9jYWxsRnJhbWUs
CisgICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25T
dHJDYXQyKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pLAogICAgICAgICAgICAgICAgIGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSk7CiAg
ICAgICAgIH0KQEAgLTE1NzcsNyArMTYxOSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGFw
cGVuZE9TUkV4aXRBcmd1bWVudHNGb3JQYXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRpb24oYXJn
dW1lbnRzLCBFeGNlcHRpb25UeXBlOjpTdWJHZW5lcmF0b3IsIDMpOyAvLyBsZWZ0LCByaWdodCwg
YW5kIHJlc3VsdCBzaG93IHVwIGluIHRoZSBzdGFja21hcCBsb2NhdGlvbnMuCiAKLSAgICAgICAg
ICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5z
aWMoKSwgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbCht
X291dC5pbnQ2NCwgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7
CiAgICAgICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1B
bnlSZWdDYWxsQ29udik7CiAKICAgICAgICAgICAgIG1fZnRsU3RhdGUuYXJpdGhTdWJzLmFwcGVu
ZChBcml0aFN1YkRlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMs
CkBAIC0yMjkyLDE3ICsyMzM0LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzd2l0
Y2ggKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6Oklu
dDMyOgotICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVJ
bnQzMiksIG1fY2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChtX291dC52b2lk
VHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUludDMyKSwgbV9jYWxsRnJhbWUs
IGNlbGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToK
LSAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlRG91Ymxl
KSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBl
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlRG91YmxlKSwgbV9jYWxsRnJhbWUsIGNl
bGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6
Ci0gICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUNvbnRp
Z3VvdXMpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CisgICAgICAgICAgICB2bUNhbGwobV9vdXQudm9p
ZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzKSwgbV9jYWxs
RnJhbWUsIGNlbGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkFy
cmF5U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKLSAg
ICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9y
YWdlKSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRU
eXBlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKSwgbV9jYWxs
RnJhbWUsIGNlbGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIGFycmF5IHR5cGUiKTsKQEAg
LTIzNjEsNyArMjQwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAg
ICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKSwKKyAgICAg
ICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRH
ZW5lcmljKSwKICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgdmFsdWUsCiAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRl
bnRpZmllck51bWJlcigpXSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKQEAgLTI0MDcsNyArMjQ0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFyZ3VtZW50cy5pbnNl
cnQoMCwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZQdXRCeUlkKCkpKTsKICAgICAgICAgYXJndW1l
bnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsKIAotICAgICAgICBM
VmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQucGF0Y2hwb2ludFZvaWRJbnRyaW5zaWMoKSwg
YXJndW1lbnRzKTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnZvaWRU
eXBlLCBtX291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAg
ICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29u
dik7CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLnB1dEJ5SWRzLmFwcGVuZChQdXRCeUlk
RGVzY3JpcHRvcigKQEAgLTI0NDksNyArMjQ5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgY2VsbCkpOworICAgICAgICAgICAg
ICAgIHZtQ2FsbChtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZl
Um9wZSksIG1fY2FsbEZyYW1lLCBjZWxsKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIApAQCAtMjYwNyw3ICsyNjQ5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xv
d0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uR2V0QnlWYWxBcnJheUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkp
OworICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKICAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yNjU5LDcg
KzI3MDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2Us
IGluZGV4KSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uR2V0QnlWYWxBcnJheUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRl
eCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAg
LTI3NDksNyArMjc5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBB
cnJheTo6R2VuZXJpYzogewogICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCi0gICAgICAg
ICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsKSwgbV9jYWxsRnJhbWUs
CisgICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25H
ZXRCeVZhbCksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMjg5OCw3ICsyOTQwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHZtQ2FsbCgKLSAgICAgICAg
ICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsCisgICAgICAg
ICAgICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb24pLCBtX2Nh
bGxGcmFtZSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKGNoaWxkMSksIGxvd0pTVmFsdWUo
Y2hpbGQyKSwgbG93SlNWYWx1ZShjaGlsZDMpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMzEzNyw2ICszMTc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGFjY2Vz
c29yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgYXV0byB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICB2
bUNhbGwoCisgICAgICAgICAgICBtX291dC52b2lkVHlwZSwKICAgICAgICAgICAgIG1fb3V0Lm9w
ZXJhdGlvbihtX25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1dEdldHRl
ckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1l
LCBiYXNlLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+
YWNjZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQpAQCAtMzE0OCw3ICszMTkx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNldHRlciA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDMoKSk7CiAgICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21f
bm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKICAgICAgICAgdm1DYWxsKAotICAgICAgICAgICAg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciksCisgICAgICAgICAgICBt
X291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciks
CiAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwg
bV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpKSwgZ2V0dGVyLCBz
ZXR0ZXIpOwogCiAgICAgfQpAQCAtMzE1OSw2ICszMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
TFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IExWYWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgIHZt
Q2FsbCgKKyAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLAogICAgICAgICAgICAgbV9vdXQub3Bl
cmF0aW9uKG1fbm9kZS0+b3AoKSA9PSBQdXRHZXR0ZXJCeVZhbCA/IG9wZXJhdGlvblB1dEdldHRl
ckJ5VmFsIDogb3BlcmF0aW9uUHV0U2V0dGVyQnlWYWwpLAogICAgICAgICAgICAgbV9jYWxsRnJh
bWUsIGJhc2UsIHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0
cmlidXRlcygpKSwgYWNjZXNzb3IpOwogICAgIH0KQEAgLTMyMjMsNyArMzI2Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZSk7CiAgICAgICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2Fs
bChvcGVyYXRpb24sIG1fY2FsbEZyYW1lLCB2YWx1ZSwgYmFzZSkpOworICAgICAgICAgICAgICAg
IHZtQ2FsbChtX291dC5pbnQ2NCwgb3BlcmF0aW9uLCBtX2NhbGxGcmFtZSwgdmFsdWUsIGJhc2Up
KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0z
MjgxLDcgKzMzMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCksIG1fY2FsbEZyYW1lLCBiYXNl
KSkpOworICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoKSwgbV9jYWxsRnJhbWUsIGJhc2UpKSk7CiAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMzMwNCw2ICsz
MzQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKGluaXRpYWxpemF0aW9uVmFsdWUuaXNV
bmRlZmluZWQoKSB8fCBpbml0aWFsaXphdGlvblZhbHVlID09IGpzVERaVmFsdWUoKSk7CiAgICAg
ICAgIGlmICh0YWJsZS0+c2luZ2xldG9uU2NvcGUoKS0+aXNTdGlsbFZhbGlkKCkpIHsKICAgICAg
ICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gdm1DYWxsKAorICAgICAgICAgICAgICAgIG1fb3V0
LmludDY0LAogICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVB
Y3RpdmF0aW9uRGlyZWN0KSwgbV9jYWxsRnJhbWUsIHdlYWtQb2ludGVyKHN0cnVjdHVyZSksCiAg
ICAgICAgICAgICAgICAgc2NvcGUsIHdlYWtQb2ludGVyKHRhYmxlKSwgbV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjplbmNvZGUoaW5pdGlhbGl6YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIHNl
dEpTVmFsdWUoY2FsbFJlc3VsdCk7CkBAIC0zMzYxLDggKzM0MDYsOCBAQCBwcml2YXRlOgogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewogICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPSBpc0Fycm93RnVuY3Rpb24KLSAgICAgICAgICAgICAgICA/IHZtQ2FsbChtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwg
d2Vha1BvaW50ZXIoZXhlY3V0YWJsZSksIHRoaXNWYWx1ZSkKLSAgICAgICAgICAgICAgICA6IHZt
Q2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwg
c2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICA/IHZtQ2Fs
bChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24p
LCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCB0aGlzVmFsdWUp
CisgICAgICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhl
Y3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzUyNyw3ICszNTcyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQ3JlYXRlU2NvcGVkQXJndW1lbnRzKSwgbV9jYWxsRnJhbWUsCisgICAg
ICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVNjb3Bl
ZEFyZ3VtZW50cyksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoCiAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSksCiAgICAgICAgICAgICBnZXRBcmd1bWVu
dHNTdGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgZ2V0Q3VycmVudENhbGxlZSgp
LCBzY29wZSk7CkBAIC0zNTM4LDcgKzM1ODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUNsb25lZEFyZ3VtZW50cygpCiAgICAgewogICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUNsb25l
ZEFyZ3VtZW50cyksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMpLCBtX2NhbGxGcmFtZSwK
ICAgICAgICAgICAgIHdlYWtQb2ludGVyKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+b3V0T2ZCYW5kQXJndW1lbnRzU3Ry
dWN0dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRz
TGVuZ3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxsZWUoKSk7CkBAIC0zNjA3LDcgKzM2NTIsNyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKCFtX25vZGUtPm51bUNoaWxkcmVuKCkp
IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdFbXB0eUFycmF5KSwgbV9jYWxsRnJhbWUsCisgICAgICAg
ICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdFbXB0eUFy
cmF5KSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3Ry
dWN0dXJlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNjI4LDcgKzM2
NzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2NyYXRjaFNp
emUpLCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSkpOwog
ICAgICAgICAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheSksIG1fY2FsbEZyYW1lLAorICAgICAgICAg
ICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheSksIG1fY2Fs
bEZyYW1lLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSwgbV9vdXQu
Y29uc3RJbnRQdHIoYnVmZmVyKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9k
ZS0+bnVtQ2hpbGRyZW4oKSkpOwogICAgICAgICAKQEAgLTM2NjksNyArMzcxNCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAg
ICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKSwgbV9jYWxs
RnJhbWUsCisgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQo
KSksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNvbnN0YW50cygp
KSkpOwogICAgIH0KQEAgLTM3ODEsNyArMzgyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBt
X291dC5jb25zdEludFB0cigKICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3Jh
Z2UpKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOwotICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVuZ3RoKSk7CisgICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGlj
TGVuZ3RoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKCkKQEAgLTM4NzIsNyArMzkxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG1fbm9kZS0+b3AoKSA9PSBUb1N0cmluZyA/IG9w
ZXJhdGlvblRvU3RyaW5nT25DZWxsIDogb3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25D
ZWxsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBtX291
dC5vcGVyYXRpb24obV9ub2RlLT5vcCgpID09IFRvU3RyaW5nID8gb3BlcmF0aW9uVG9TdHJpbmcg
OiBvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgY29udmVydGVkUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChvcGVyYXRpb24sIG1f
Y2FsbEZyYW1lLCB2YWx1ZSkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY29udmVydGVk
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChtX291dC5pbnQ2NCwgb3BlcmF0aW9uLCBtX2Nh
bGxGcmFtZSwgdmFsdWUpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CkBAIC0zOTA4LDcgKzM5NTMsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oaXNPYmplY3RDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICBy
ZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvblRvUHJpbWl0aXZlKSwgbV9jYWxsRnJhbWUsIHZhbHVlKSkpOworICAg
ICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2
ZSksIG1fY2FsbEZyYW1lLCB2YWx1ZSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CkBAIC00MDQ2LDcgKzQwOTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAg
ICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgND4gcmVzdWx0czsKICAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcpLAorICAgICAgICAgICAgbV9vdXQuaW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcpLAogICAgICAg
ICAgICAgbV9jYWxsRnJhbWUsIGNoYXIxNkJpdC52YWx1ZSgpKSkpOwogICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKQEAgLTQwODgsNyArNDEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBp
bmRleCkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5VmFsU3RyaW5nSW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSkpOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwpAQCAtNDYzMyw3ICs0Njc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXJndW1lbnRzLmluc2Vy
dCgwLCBtX291dC5jb25zdEludDMyKHNpemVPZkNhbGwoKSkpOwogICAgICAgICBhcmd1bWVudHMu
aW5zZXJ0KDAsIG1fb3V0LmNvbnN0SW50NjQoc3RhY2ttYXBJRCkpOwogICAgICAgICAKLSAgICAg
ICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNp
YygpLCBhcmd1bWVudHMpOworICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQu
aW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAg
ICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1XZWJLaXRKU0Nh
bGxDb252KTsKICAgICAgICAgCiAgICAgICAgIG1fZnRsU3RhdGUuanNDYWxscy5hcHBlbmQoSlND
YWxsKHN0YWNrbWFwSUQsIG1fbm9kZSwgY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgp
KSk7CkBAIC00NjczLDggKzQ3MTgsNyBAQCBwcml2YXRlOgogICAgICAgICBleGl0QXJndW1lbnRz
Lmluc2VydCgwLCBtX291dC5jb25zdEludDMyKHRhaWxDYWxsLmVzdGltYXRlZFNpemUoKSkpOwog
ICAgICAgICBleGl0QXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFw
SUQpKTsKIAotICAgICAgICBMVmFsdWUgY2FsbCA9Ci0gICAgICAgICAgICBtX291dC5jYWxsKG1f
b3V0LnBhdGNocG9pbnRWb2lkSW50cmluc2ljKCksIGV4aXRBcmd1bWVudHMpOworICAgICAgICBM
VmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0LnBhdGNocG9pbnRW
b2lkSW50cmluc2ljKCksIGV4aXRBcmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNh
bGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIG1fb3V0
LnVucmVhY2hhYmxlKCk7CiAKQEAgLTQ3MjYsNyArNDc3MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZJQ0ZvcihtX25vZGUp
KSk7CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21h
cElEKSk7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQu
cGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7CisgICAgICAgIExWYWx1ZSBj
YWxsID0gbV9vdXQuY2FsbChtX291dC5pbnQ2NCwgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmlu
c2ljKCksIGFyZ3VtZW50cyk7CiAgICAgICAgIHNldEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRp
b24oY2FsbCwgTExWTUNDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmpz
Q2FsbFZhcmFyZ3Nlcy5hcHBlbmQoSlNDYWxsVmFyYXJncyhzdGFja21hcElELCBtX25vZGUsIGNv
ZGVPcmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKSkpOwpAQCAtNDc0OSw3ICs0NzkzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGpzQXJndW1lbnRzID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBsZW5ndGggPSB2bUNhbGwoCi0g
ICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncyksIG1fY2Fs
bEZyYW1lLCBqc0FyZ3VtZW50cywKKyAgICAgICAgICAgIG1fb3V0LmludDMyLCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncyksIG1fY2FsbEZyYW1lLCBqc0FyZ3VtZW50cywK
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoZGF0YS0+b2Zmc2V0KSk7CiAgICAgICAgIAog
ICAgICAgICAvLyBGSVhNRTogVGhlcmUgaXMgYSBjaGFuY2UgdGhhdCB3ZSB3aWxsIGNhbGwgYW4g
ZWZmZWN0ZnVsIGxlbmd0aCBwcm9wZXJ0eSB0d2ljZS4gVGhpcyBpcyBzYWZlCkBAIC00NzczLDcg
KzQ4MTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoMykpOwog
ICAgICAgICAKICAgICAgICAgdm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkxvYWRWYXJhcmdzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBtX291dC52b2lk
VHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzKSwgbV9jYWxsRnJhbWUs
CiAgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtYWNoaW5lU3RhcnQpLCBqc0FyZ3VtZW50
cywgbV9vdXQuY29uc3RJbnQzMihkYXRhLT5vZmZzZXQpLAogICAgICAgICAgICAgbGVuZ3RoLCBt
X291dC5jb25zdEludDMyKGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pKTsKICAgICB9CkBAIC00OTY5
LDcgKzUwMTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhuZWVkUmVzb2x1dGlvbiwgcmVzb2x2ZWQpOwogICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25SZXNvbHZlUm9wZSksIG1fY2FsbEZyYW1lLCBzdHJpbmdWYWx1ZSkpKTsKKyAg
ICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgc3RyaW5nVmFsdWUpKSk7CiAgICAgICAgICAg
ICBtX291dC5qdW1wKHJlc29sdmVkKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8ocmVzb2x2ZWQsIGlzOEJpdCk7CkBAIC01MDk2LDYgKzUxNDAsOSBAQCBwcml2YXRl
OgogICAgIAogICAgIHZvaWQgY29tcGlsZUludmFsaWRhdGlvblBvaW50KCkKICAgICB7CisjaWYg
RlRMX1VTRVNfQjMKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZWxzZSAv
LyBGVExfVVNFU19CMwogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgIEludmFsaWRhdGlvbiBwb2ludCB3aXRoIGF2YWlsYWJp
bGl0eTogIiwgYXZhaWxhYmlsaXR5TWFwKCksICJcbiIpOwogCkBAIC01MTEyLDYgKzUxNTksNyBA
QCBwcml2YXRlOgogICAgICAgICBjYWxsU3RhY2ttYXAoZXhpdERlc2NyaXB0b3IsIGFyZ3VtZW50
cyk7CiAgICAgICAgIAogICAgICAgICBleGl0RGVzY3JpcHRvci5tX2lzSW52YWxpZGF0aW9uUG9p
bnQgPSB0cnVlOworI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiAgICAgfQogICAgIAogICAgIHZvaWQg
Y29tcGlsZUlzVW5kZWZpbmVkKCkKQEAgLTUzMDQsNyArNTM1Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksCisgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMo
KSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSwgbV9v
dXQuY29uc3RJbnQzMihzaXplT2ZJbigpKSwKICAgICAgICAgICAgICAgICAgICAgY29uc3ROdWxs
KG1fb3V0LnJlZjgpLCBtX291dC5jb25zdEludDMyKDEpLCBjZWxsKTsKIApAQCAtNTMxNiw3ICs1
MzY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSAKIAotICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2VuZXJpY0luKSwgbV9j
YWxsRnJhbWUsIGNlbGwsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAg
c2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25H
ZW5lcmljSW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC01NDIzLDcgKzU0NzEsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmVxdWFs
KAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsK
KyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKSk7CiAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNTQ1Nyw3ICs1NTA1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRp
b24pOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hv
cihtX291dC5lcXVhbCgKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2Us
IGluZGV4KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKQEAgLTU0NzUsNyArNTUyMyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBwcm9w
ZXJ0eSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQu
aW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2Nh
bGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eSgpCkBAIC01NTAxLDcgKzU1NDksNyBAQCBwcml2YXRlOgogICAgICAg
ICBWYWx1ZUZyb21CbG9jayB3cm9uZ1N0cnVjdHVyZVJlc3VsdCA9IG1fb3V0LmFuY2hvcigKICAg
ICAgICAgICAgIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQo
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNh
bGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSksIG1fY2FsbEZy
YW1lLCBiYXNlLCBwcm9wZXJ0eSkpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAg
LTU1NDgsNyArNTU5Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xv
d0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dDYXNlUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeVZhbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOworICAgICAg
ICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlW
YWwpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwpAQCAtNTU2NCw3ICs1NjEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVH
ZXRQcm9wZXJ0eUVudW1lcmF0b3IoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKSwgbV9jYWxsRnJhbWUsIGJh
c2UpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IpLCBtX2NhbGxGcmFtZSwgYmFzZSkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldEVudW1lcmF0b3JTdHJ1Y3R1cmVQbmFtZSgp
CkBAIC01NjIyLDcgKzU2NzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVRvSW5kZXhT
dHJpbmcoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25Ub0luZGV4U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGluZGV4KSk7CisgICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9JbmRl
eFN0cmluZyksIG1fY2FsbEZyYW1lLCBpbmRleCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNv
bXBpbGVDaGVja1N0cnVjdHVyZUltbWVkaWF0ZSgpCkBAIC01ODQ0LDcgKzU4OTIsNyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBkbyBhbnkgc3RhY2sgY2hlY2tzLgogICAgICAgICAKICAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1C
bG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sq
IGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghYmxv
Y2spCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTYxOTYsNiAr
NjI0NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAocHJldmlvdXNTdHJ1Y3R1cmUt
PmNvdWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgICAgIHJldHVybiB2bUNhbGwo
CisgICAgICAgICAgICAgICAgbV9vdXQuaW50UHRyLAogICAgICAgICAgICAgICAgIG1fb3V0Lm9w
ZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZs
eVRvSGF2ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkpLAogICAgICAgICAgICAg
ICAgIG1fY2FsbEZyYW1lLCBvYmplY3QpOwpAQCAtNjIxNiw3ICs2MjY1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIGlmIChwcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIo
KSkgewogICAgICAgICAgICAgTFZhbHVlIG5ld0FsbG9jU2l6ZSA9IG1fb3V0LmNvbnN0SW50UHRy
KG5ld1NpemUpOyAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gdm1DYWxs
KG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVy
dHlTdG9yYWdlKSwgbV9jYWxsRnJhbWUsIG9iamVjdCwgbmV3QWxsb2NTaXplKTsKKyAgICAgICAg
ICAgIHJldHVybiB2bUNhbGwobV9vdXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
UmVhbGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSksIG1fY2FsbEZyYW1lLCBv
YmplY3QsIG5ld0FsbG9jU2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhTaXplSW1wbChuZXdTaXplKTsK
QEAgLTYzMDQsNyArNjM1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQo
MCwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZHZXRCeUlkKCkpKTsKICAgICAgICAgYXJndW1lbnRz
Lmluc2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsgCiAKLSAgICAgICAgTFZh
bHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBh
cmd1bWVudHMpOworICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQs
IG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBz
ZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7
CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmdldEJ5SWRzLmFwcGVuZChHZXRCeUlkRGVz
Y3JpcHRvcihzdGFja21hcElELCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgdWlkKSk7CkBAIC02
NTMxLDcgKzY1ODAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwoCi0gICAgICAgICAgICBt
X291dC5vcGVyYXRpb24oaGVscGVyRnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQp
KSk7CisgICAgICAgICAgICBtX291dC5ib29sZWFuLCBtX291dC5vcGVyYXRpb24oaGVscGVyRnVu
Y3Rpb24pLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwpAQCAtNzAzMiw3ICs3MDgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8ob3V0T2ZC
b3VuZHNDYXNlLCBob2xlQ2FzZSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIHZtQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKHNsb3dQYXRo
RnVuY3Rpb24pLAorICAgICAgICAgICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQub3Bl
cmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICBtX2NhbGxGcmFt
ZSwgYmFzZSwgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNzMwOCw3ICs3MzU3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NDM2OQogICAgICAgICAKICAgICAgICAgTFZhbHVlIGJyYW5jaE9mZnNldCA9IHZtQ2FsbCgK
LSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRC
cmFuY2hPZmZzZXQpLAorICAgICAgICAgICAgbV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRCcmFuY2hPZmZzZXQpLAogICAgICAgICAgICAgbV9j
YWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpLCBzdHJp
bmcpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9j
aygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CkBAIC03
NTMzLDcgKzc1ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0
aW9uKTsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9v
dXQub3BlcmF0aW9uKHRvSW50MzIpLCBkb3VibGVWYWx1ZSkpKTsKKyAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlv
bih0b0ludDMyKSwgZG91YmxlVmFsdWUpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwpAQCAtNzU2Miw3ICs3NjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVh
dGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
Ci0gICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbih0b0ludDMyKSwgZG91Ymxl
VmFsdWUpKTsKKyAgICAgICAgICAgIG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJh
dGlvbih0b0ludDMyKSwgZG91YmxlVmFsdWUpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CkBAIC03Njc4LDcgKzc3MjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGFwcGVu
ZE9TUkV4aXRBcmd1bWVudHNGb3JQYXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1l
bnRzLCBFeGNlcHRpb25UeXBlOjpMYXp5U2xvd1BhdGgsIHVzZXJBcmd1bWVudHMuc2l6ZSgpICsg
MSk7IC8vIEFsbCB0aGUgYXJndW1lbnRzIHBsdXMgdGhlIHJlc3VsdCBzaG93IHVwIGluIHRoZSBz
dGFja21hcCBsb2NhdGlvbnMuCiAKLSAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1f
b3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOworICAgICAgICBMVmFs
dWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NElu
dHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252
ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBSZWZQ
dHI8TGF6eVNsb3dQYXRoTGlua2VyVGFzaz4gbGlua2VyID0KQEAgLTgxMTcsNyArODE2Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlv
bik7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxs
KAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJs
ZVRvSW50NTIpLCBib3hlZFZhbHVlKTsKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MiksIGJveGVkVmFsdWUp
OwogICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hl
ZFZhbHVlKSwgZWRnZSwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUsCiAgICAgICAgICAg
ICBtX291dC5lcXVhbChwb3NzaWJsZVJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpu
b3RJbnQ1MikpKTsKQEAgLTgxMzMsNyArODE4Miw3IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGRv
dWJsZVRvU3RyaWN0SW50NTIoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAg
ICBMVmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyKSwgdmFsdWUpOworICAgICAg
ICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91Ymxl
VG9JbnQ1MiksIHZhbHVlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBk
b3VibGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNJbnQ1MkFzRG91YmxlLAogICAgICAgICAgICAg
bV9vdXQuZXF1YWwocG9zc2libGVSZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6bm90
SW50NTIpKSk7CkBAIC04ODYwLDIyICs4OTA5LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgdm1DYWxsKExWYWx1ZSBmdW5j
dGlvbiwgQXJncy4uLiBhcmdzKQorICAgIExWYWx1ZSB2bUNhbGwoTFR5cGUgdHlwZSwgTFZhbHVl
IGZ1bmN0aW9uLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBjYWxsUHJlZmxpZ2h0KCk7
Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5jYWxsKGZ1bmN0aW9uLCBhcmdzLi4uKTsK
KyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmNhbGwodHlwZSwgZnVuY3Rpb24sIGFyZ3Mu
Li4pOwogICAgICAgICBjYWxsQ2hlY2soKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgdm1DYWxs
Tm9FeGNlcHRpb25zKExWYWx1ZSBmdW5jdGlvbiwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAg
ICAgY2FsbFByZWZsaWdodCgpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuY2FsbChm
dW5jdGlvbiwgYXJncy4uLik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAgICAg
dm9pZCBjYWxsUHJlZmxpZ2h0KENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7CiAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9u
LmFkZENvZGVPcmlnaW4oY29kZU9yaWdpbik7CkBAIC04OTA5LDcgKzg5NTAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2FsbENoZWNrKCkKICAgICB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VF
eGNlcHRpb25GdXp6KCkpCi0gICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25FeGNlcHRpb25GdXp6KSwgbV9jYWxsRnJhbWUpOworICAgICAgICAgICAgbV9vdXQu
Y2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1
enopLCBtX2NhbGxGcmFtZSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgZXhjZXB0aW9uID0g
bV9vdXQubG9hZDY0KG1fb3V0LmFic29sdXRlKHZtKCkuYWRkcmVzc09mRXhjZXB0aW9uKCkpKTsK
ICAgICAgICAgTFZhbHVlIGhhZEV4Y2VwdGlvbiA9IG1fb3V0Lm5vdFplcm82NChleGNlcHRpb24p
OwpAQCAtODk1Nyw3ICs4OTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIAotICAgIExCYXNpY0Jsb2NrIGxvd0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQor
ICAgIExCYXNpY0Jsb2NrIGxvd0Jsb2NrKERGRzo6QmFzaWNCbG9jayogYmxvY2spCiAgICAgewog
ICAgICAgICByZXR1cm4gbV9ibG9ja3MuZ2V0KGJsb2NrKTsKICAgICB9CkBAIC05MDA4LDYgKzkw
NDksMTkgQEAgcHJpdmF0ZToKICAgICAgICAgYXBwZW5kT1NSRXhpdERlc2NyaXB0b3Ioa2luZCwg
aXNFeGNlcHRpb25IYW5kbGVyID8gRXhjZXB0aW9uVHlwZTo6Q0NhbGxFeGNlcHRpb24gOiBFeGNl
cHRpb25UeXBlOjpOb25lLCBsb3dWYWx1ZSwgaGlnaFZhbHVlLCBvcmlnaW4pOwogICAgICAgICBP
U1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3IgPSBtX2Z0bFN0YXRlLmppdENvZGUtPm9z
ckV4aXREZXNjcmlwdG9ycy5sYXN0KCk7CiAKKyNpZiBGVExfVVNFU19CMworICAgICAgICBTdGFj
a21hcEFyZ3VtZW50TGlzdCBhcmd1bWVudHM7CisKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luID0gZXhpdERlc2NyaXB0b3IubV9jb2RlT3JpZ2luOworCisgICAgICAgIGJ1aWxkRXhpdEFy
Z3VtZW50cyhleGl0RGVzY3JpcHRvciwgYXJndW1lbnRzLCBsb3dWYWx1ZSwgY29kZU9yaWdpbik7
CisKKyAgICAgICAgbV9vdXQuY2hlY2soCisgICAgICAgICAgICBmYWlsQ29uZGl0aW9uLCBhcmd1
bWVudHMsCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgICAgIGppdC5vb3BzKCk7Cisg
ICAgICAgICAgICB9KTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgICAgIGlmIChmYWlsQ29u
ZGl0aW9uID09IG1fb3V0LmJvb2xlYW5UcnVlKSB7CiAgICAgICAgICAgICBlbWl0T1NSRXhpdENh
bGwoZXhpdERlc2NyaXB0b3IsIGxvd1ZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkw
MjgsOCArOTA4MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwog
ICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CisjZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICB9Ci0gICAgCisKKyNpZiAhRlRMX1VTRVNfQjMK
ICAgICB2b2lkIGVtaXRPU1JFeGl0Q2FsbChPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0
b3IsIEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlKQogICAgIHsKICAgICAgICAgU3RhY2ttYXBBcmd1
bWVudExpc3QgYXJndW1lbnRzOwpAQCAtOTA0MCw2ICs5MDk2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIGNhbGxTdGFja21hcChleGl0RGVzY3JpcHRvciwgYXJndW1lbnRzKTsKICAg
ICB9CisjZW5kaWYKICAgICAKICAgICB2b2lkIGJ1aWxkRXhpdEFyZ3VtZW50cygKICAgICAgICAg
T1NSRXhpdERlc2NyaXB0b3ImIGV4aXREZXNjcmlwdG9yLCBTdGFja21hcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwKQEAgLTkxMDQsMTUgKzkxNjEsMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKworI2lm
ICFGVExfVVNFU19CMwogICAgIHZvaWQgY2FsbFN0YWNrbWFwKE9TUkV4aXREZXNjcmlwdG9yJiBl
eGl0RGVzY3JpcHRvciwgU3RhY2ttYXBBcmd1bWVudExpc3QmIGFyZ3VtZW50cykKICAgICB7CiAg
ICAgICAgIGV4aXREZXNjcmlwdG9yLm1fc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAg
ICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDMyKE1hY3JvQXNzZW1ibGVy
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpKTsKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgw
LCBtX291dC5jb25zdEludDY0KGV4aXREZXNjcmlwdG9yLm1fc3RhY2ttYXBJRCkpOwogICAgICAg
ICAKLSAgICAgICAgbV9vdXQuY2FsbChtX291dC5zdGFja21hcEludHJpbnNpYygpLCBhcmd1bWVu
dHMpOworICAgICAgICBtX291dC5jYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5zdGFja21hcElu
dHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgIH0KKyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKICAg
ICAKICAgICBFeGl0VmFsdWUgZXhpdFZhbHVlRm9yQXZhaWxhYmlsaXR5KAogICAgICAgICBTdGFj
a21hcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBjb25zdCBIYXNoTWFwPE5vZGUqLCBFeGl0VGlt
ZU9iamVjdE1hdGVyaWFsaXphdGlvbio+JiBtYXAsCkBAIC05NDc1LDcgKzk1MzQsNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgdWludDMyX3Qgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMr
KzsKICAgICAgICAgbV9mdGxTdGF0ZS5wcm9iZXMuYXBwZW5kKFByb2JlRGVzY3JpcHRvcihzdGFj
a21hcElELCBwcm9iZUZ1bmMpKTsKLSAgICAgICAgbV9vdXQuY2FsbChtX291dC5zdGFja21hcElu
dHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpLCBtX291dC5jb25zdEludDMy
KHNpemVPZlByb2JlKCkpKTsKKyAgICAgICAgbV9vdXQuY2FsbChtX291dC52b2lkVHlwZSwgbV9v
dXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSwgbV9v
dXQuY29uc3RJbnQzMihzaXplT2ZQcm9iZSgpKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTk0ODYs
NyArOTU0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmFzaChCbG9ja0luZGV4IGJsb2NrSW5k
ZXgsIHVuc2lnbmVkIG5vZGVJbmRleCkKICAgICB7CiAjaWYgQVNTRVJUX0RJU0FCTEVECi0gICAg
ICAgIG1fb3V0LmNhbGwobV9vdXQub3BlcmF0aW9uKGZ0bFVucmVhY2hhYmxlKSk7CisgICAgICAg
IG1fb3V0LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihmdGxVbnJlYWNoYWJs
ZSkpOwogICAgICAgICBVTlVTRURfUEFSQU0oYmxvY2tJbmRleCk7CiAgICAgICAgIFVOVVNFRF9Q
QVJBTShub2RlSW5kZXgpOwogI2Vsc2UKQEAgLTk0OTcsNiArOTU1Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBDUkFTSCgpOwogI2Vsc2UKICAgICAgICAgbV9vdXQuY2FsbCgKKyAgICAgICAg
ICAgIG1fb3V0LnZvaWRUeXBlLAogICAgICAgICAgICAgbV9vdXQuaW50VG9QdHIoCiAgICAgICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoZnRsVW5yZWFjaGFibGUpLAogICAgICAgICAgICAg
ICAgIHBvaW50ZXJUeXBlKApAQCAtOTUxOCwxMCArOTU3OCwxMyBAQCBwcml2YXRlOgogICAgIFN0
YXRlJiBtX2Z0bFN0YXRlOwogICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgbV9oZWFwczsKICAg
ICBPdXRwdXQgbV9vdXQ7CisjaWYgRlRMX1VTRVNfQjMKKyAgICBQcm9jZWR1cmUmIG1fcHJvYzsK
KyNlbmRpZgogICAgIAogICAgIExCYXNpY0Jsb2NrIG1fcHJvbG9ndWU7CiAgICAgTEJhc2ljQmxv
Y2sgbV9oYW5kbGVFeGNlcHRpb25zOwotICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIExCYXNpY0Js
b2NrPiBtX2Jsb2NrczsKKyAgICBIYXNoTWFwPERGRzo6QmFzaWNCbG9jayosIExCYXNpY0Jsb2Nr
PiBtX2Jsb2NrczsKICAgICAKICAgICBMVmFsdWUgbV9jYWxsRnJhbWU7CiAgICAgTFZhbHVlIG1f
Y2FwdHVyZWQ7CkBAIC05NTQ5LDggKzk2MTIsOCBAQCBwcml2YXRlOgogICAgIAogICAgIEluUGxh
Y2VBYnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAgQWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNl
QWJzdHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsKLSAgICBCYXNpY0Jsb2NrKiBtX2hpZ2hCbG9j
azsKLSAgICBCYXNpY0Jsb2NrKiBtX25leHRIaWdoQmxvY2s7CisgICAgREZHOjpCYXNpY0Jsb2Nr
KiBtX2hpZ2hCbG9jazsKKyAgICBERkc6OkJhc2ljQmxvY2sqIG1fbmV4dEhpZ2hCbG9jazsKICAg
ICBMQmFzaWNCbG9jayBtX25leHRMb3dCbG9jazsKIAogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47
CkBAIC05NTY4LDYgKzk2MzEsMTAgQEAgcHJpdmF0ZToKIAogdm9pZCBsb3dlckRGR1RvTExWTShT
dGF0ZSYgc3RhdGUpCiB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICBzdGF0ZS5wcm9jID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisjZW5kaWYKKwogICAgIExvd2VyREZHVG9MTFZNIGxv
d2VyaW5nKHN0YXRlKTsKICAgICBsb3dlcmluZy5sb3dlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuY3BwCmluZGV4IDJmZjgxYTNlNjMxY2I1ZDQyNTc1MzdhMDkyNzcz
Yzk0N2I4YjZjY2YuLjI2MWNmYjVjMDcxNzA1MTE1NmE5NDliYjQ5OWNlYWY1OTY0YzBlYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAgLTc5LDYgKzc5LDcgQEAg
TFZhbHVlIE91dHB1dDo6c2Vuc2libGVEb3VibGVUb0ludChMVmFsdWUgdmFsdWUpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoaXNYODYoKSk7CiAgICAgcmV0dXJuIGNhbGwoCisgICAgICAgIGludDMy
LAogICAgICAgICB4ODZTU0UyQ3Z0VFNEMlNJSW50cmluc2ljKCksCiAgICAgICAgIGluc2VydEVs
ZW1lbnQoCiAgICAgICAgICAgICBpbnNlcnRFbGVtZW50KGdldFVuZGVmKHZlY3RvclR5cGUoZG91
YmxlVHlwZSwgMikpLCB2YWx1ZSwgaW50MzJaZXJvKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCmluZGV4IDNiZTU2NTI5ODRkMWM2MmI3MWJjYjJiOWE4M2M2MTBiZmU1YzA0YWMu
LmQwYjQxYzk4MTE4ZjIzYjk5NDYxNDVhYjAyNWI3MDJlNjI1NDViYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMTQ1LDY4ICsxNDUsNjggQEAgcHVibGljOgogCiAg
ICAgTFZhbHVlIGNlaWw2NChMVmFsdWUgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBj
YWxsKGNlaWw2NEludHJpbnNpYygpLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIGNhbGwoZG91
YmxlVHlwZSwgY2VpbDY0SW50cmluc2ljKCksIG9wZXJhbmQpOwogICAgIH0KICAgICBMVmFsdWUg
Y3RsejMyKExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5kKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGNhbGwoY3RsejMySW50cmluc2ljKCksIHhPcGVyYW5kLCB5T3BlcmFuZCk7CisgICAg
ICAgIHJldHVybiBjYWxsKGludDMyLCBjdGx6MzJJbnRyaW5zaWMoKSwgeE9wZXJhbmQsIHlPcGVy
YW5kKTsKICAgICB9CiAgICAgTFZhbHVlIGFkZFdpdGhPdmVyZmxvdzMyKExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbChhZGRXaXRoT3ZlcmZsb3cz
MkludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CisgICAgICAgIHJldHVybiBjYWxsKGludDMyLCBh
ZGRXaXRoT3ZlcmZsb3czMkludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CiAgICAgfQogICAgIExW
YWx1ZSBzdWJXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNhbGwoc3ViV2l0aE92ZXJmbG93MzJJbnRyaW5zaWMoKSwgbGVmdCwg
cmlnaHQpOworICAgICAgICByZXR1cm4gY2FsbChpbnQzMiwgc3ViV2l0aE92ZXJmbG93MzJJbnRy
aW5zaWMoKSwgbGVmdCwgcmlnaHQpOwogICAgIH0KICAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93
MzIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxs
KG11bFdpdGhPdmVyZmxvdzMySW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgcmV0
dXJuIGNhbGwoaW50MzIsIG11bFdpdGhPdmVyZmxvdzMySW50cmluc2ljKCksIGxlZnQsIHJpZ2h0
KTsKICAgICB9CiAgICAgTFZhbHVlIGFkZFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbChhZGRXaXRoT3ZlcmZsb3c2NElu
dHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CisgICAgICAgIHJldHVybiBjYWxsKGludDY0LCBhZGRX
aXRoT3ZlcmZsb3c2NEludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CiAgICAgfQogICAgIExWYWx1
ZSBzdWJXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGNhbGwoc3ViV2l0aE92ZXJmbG93NjRJbnRyaW5zaWMoKSwgbGVmdCwgcmln
aHQpOworICAgICAgICByZXR1cm4gY2FsbChpbnQ2NCwgc3ViV2l0aE92ZXJmbG93NjRJbnRyaW5z
aWMoKSwgbGVmdCwgcmlnaHQpOwogICAgIH0KICAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93NjQo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsKG11
bFdpdGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgcmV0dXJu
IGNhbGwoaW50NjQsIG11bFdpdGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsK
ICAgICB9CiAgICAgTFZhbHVlIGRvdWJsZUFicyhMVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAg
ICByZXR1cm4gY2FsbChkb3VibGVBYnNJbnRyaW5zaWMoKSwgdmFsdWUpOworICAgICAgICByZXR1
cm4gY2FsbChkb3VibGVUeXBlLCBkb3VibGVBYnNJbnRyaW5zaWMoKSwgdmFsdWUpOwogICAgIH0K
IAogICAgIExWYWx1ZSBkb3VibGVTaW4oTFZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNhbGwoZG91YmxlU2luSW50cmluc2ljKCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNh
bGwoZG91YmxlVHlwZSwgZG91YmxlU2luSW50cmluc2ljKCksIHZhbHVlKTsKICAgICB9CiAgICAg
TFZhbHVlIGRvdWJsZUNvcyhMVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gY2Fs
bChkb3VibGVDb3NJbnRyaW5zaWMoKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gY2FsbChkb3Vi
bGVUeXBlLCBkb3VibGVDb3NJbnRyaW5zaWMoKSwgdmFsdWUpOwogICAgIH0KIAogICAgIExWYWx1
ZSBkb3VibGVQb3coTFZhbHVlIHhPcGVyYW5kLCBMVmFsdWUgeU9wZXJhbmQpCiAgICAgewotICAg
ICAgICByZXR1cm4gY2FsbChkb3VibGVQb3dJbnRyaW5zaWMoKSwgeE9wZXJhbmQsIHlPcGVyYW5k
KTsKKyAgICAgICAgcmV0dXJuIGNhbGwoZG91YmxlVHlwZSwgZG91YmxlUG93SW50cmluc2ljKCks
IHhPcGVyYW5kLCB5T3BlcmFuZCk7CiAgICAgfQogCiAgICAgTFZhbHVlIGRvdWJsZVBvd2koTFZh
bHVlIHhPcGVyYW5kLCBMVmFsdWUgeU9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gY2Fs
bChkb3VibGVQb3dpSW50cmluc2ljKCksIHhPcGVyYW5kLCB5T3BlcmFuZCk7CisgICAgICAgIHJl
dHVybiBjYWxsKGRvdWJsZVR5cGUsIGRvdWJsZVBvd2lJbnRyaW5zaWMoKSwgeE9wZXJhbmQsIHlP
cGVyYW5kKTsKICAgICB9CiAKICAgICBMVmFsdWUgZG91YmxlU3FydChMVmFsdWUgdmFsdWUpCiAg
ICAgewotICAgICAgICByZXR1cm4gY2FsbChkb3VibGVTcXJ0SW50cmluc2ljKCksIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIGNhbGwoZG91YmxlVHlwZSwgZG91YmxlU3FydEludHJpbnNpYygpLCB2
YWx1ZSk7CiAgICAgfQogCiAgICAgTFZhbHVlIGRvdWJsZUxvZyhMVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICByZXR1cm4gY2FsbChkb3VibGVMb2dJbnRyaW5zaWMoKSwgdmFsdWUpOworICAg
ICAgICByZXR1cm4gY2FsbChkb3VibGVUeXBlLCBkb3VibGVMb2dJbnRyaW5zaWMoKSwgdmFsdWUp
OwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSB7IHJl
dHVybiBpc1g4NigpOyB9CkBAIC0zNzUsMTEgKzM3NSwxMSBAQCBwdWJsaWM6CiAgICAgTFZhbHVl
IGZlbmNlQWNxUmVsKCkgeyByZXR1cm4gZmVuY2UoTExWTUF0b21pY09yZGVyaW5nQWNxdWlyZVJl
bGVhc2UpOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICBM
VmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBy
ZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24sIHZlY3Rvcik7IH0KLSAgICBMVmFs
dWUgY2FsbChMVmFsdWUgZnVuY3Rpb24pIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1
bmN0aW9uKTsgfQotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEp
IHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxKTsgfQorICAgIExW
YWx1ZSBjYWxsKExUeXBlLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3Rv
cikgeyByZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24sIHZlY3Rvcik7IH0KKyAg
ICBMVmFsdWUgY2FsbChMVHlwZSwgTFZhbHVlIGZ1bmN0aW9uKSB7IHJldHVybiBidWlsZENhbGwo
bV9idWlsZGVyLCBmdW5jdGlvbik7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSwgTFZhbHVlIGZ1
bmN0aW9uLCBMVmFsdWUgYXJnMSkgeyByZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rp
b24sIGFyZzEpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUg
Y2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFyZ3MpIHsgcmV0dXJu
IGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmdzLi4uKTsgfQorICAgIExW
YWx1ZSBjYWxsKExUeXBlLCBMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFy
Z3MpIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmdzLi4u
KTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KICAgICBMVmFs
dWUgb3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikKQEAgLTQzMSw3ICs0MzEsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCB0cmFwKCkKICAgICB7Ci0gICAgICAgIGNhbGwodHJhcElu
dHJpbnNpYygpKTsKKyAgICAgICAgY2FsbCh2b2lkVHlwZSwgdHJhcEludHJpbnNpYygpKTsKICAg
ICB9CiAgICAgCiAgICAgVmFsdWVGcm9tQmxvY2sgYW5jaG9yKExWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggNGIwNmFkNWI4MmViMTgzMDg5YTAx
M2U3NTE3ZWYzNGExNWUzYWEyNS4uMDMwN2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVhYTJlNWZmY2Y4
YzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTQ2LDExICs0
Niw2IEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgLCBtb2R1bGUoMCkKICAgICAs
IGZ1bmN0aW9uKDApCiAgICAgLCBnZW5lcmF0ZWRGdW5jdGlvbigwKQotICAgICwgaGFuZGxlU3Rh
Y2tPdmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQoVUlOVF9NQVgpCi0gICAgLCBoYW5kbGVFeGNl
cHRpb25TdGFja21hcElEKFVJTlRfTUFYKQotICAgICwgY2FwdHVyZWRTdGFja21hcElEKFVJTlRf
TUFYKQotICAgICwgdmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEKFVJTlRfTUFYKQotICAgICwg
ZXhjZXB0aW9uSGFuZGxpbmdTcGlsbFNsb3RTdGFja21hcElEKFVJTlRfTUFYKQogICAgICwgdW53
aW5kRGF0YVNlY3Rpb24oMCkKICAgICAsIHVud2luZERhdGFTZWN0aW9uU2l6ZSgwKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCmluZGV4IDIyNzY5NDM2YjBkNWNiNmJkOTAyNDg1
MGY0ZDgyMjhlNjdiODk5NjguLjU4ZWYyNzY2NjFkMTRkZjQzM2U0ZjRkOTNlNWIzNTk0ZjE2YmM0
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKQEAgLTc1LDExICs3NSwxOSBA
QCBwdWJsaWM6CiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CiAgICAgR2VuZXJhdGVkRnVu
Y3Rpb24gZ2VuZXJhdGVkRnVuY3Rpb247CiAgICAgSklURmluYWxpemVyKiBmaW5hbGl6ZXI7Ci0g
ICAgdW5zaWduZWQgaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQ7Ci0gICAg
dW5zaWduZWQgaGFuZGxlRXhjZXB0aW9uU3RhY2ttYXBJRDsKLSAgICB1bnNpZ25lZCBjYXB0dXJl
ZFN0YWNrbWFwSUQ7Ci0gICAgdW5zaWduZWQgdmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEOwot
ICAgIHVuc2lnbmVkIGV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90U3RhY2ttYXBJRDsKKyNpZiBG
VExfVVNFU19CMworICAgIExWYWx1ZSBoYW5kbGVTdGFja092ZXJmbG93RXhjZXB0aW9uVmFsdWUg
eyBudWxscHRyIH07CisgICAgTFZhbHVlIGhhbmRsZUV4Y2VwdGlvblZhbHVlIHsgbnVsbHB0ciB9
OworICAgIExWYWx1ZSBjYXB0dXJlZFZhbHVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSB2YXJh
cmdzU3BpbGxTbG90c1ZhbHVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBleGNlcHRpb25IYW5k
bGluZ1NwaWxsU2xvdFZhbHVlIHsgbnVsbHB0ciB9OworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKKyAg
ICB1bnNpZ25lZCBoYW5kbGVTdGFja092ZXJmbG93RXhjZXB0aW9uU3RhY2ttYXBJRCB7IFVJTlRf
TUFYIH07CisgICAgdW5zaWduZWQgaGFuZGxlRXhjZXB0aW9uU3RhY2ttYXBJRCB7IFVJTlRfTUFY
IH07CisgICAgdW5zaWduZWQgY2FwdHVyZWRTdGFja21hcElEIHsgVUlOVF9NQVggfTsKKyAgICB1
bnNpZ25lZCB2YXJhcmdzU3BpbGxTbG90c1N0YWNrbWFwSUQgeyBVSU5UX01BWCB9OworICAgIHVu
c2lnbmVkIGV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90U3RhY2ttYXBJRCB7IFVJTlRfTUFYIH07
CisjZW5kaWYgLy8gRlRMX1VTRV9CMwogICAgIFNlZ21lbnRlZFZlY3RvcjxHZXRCeUlkRGVzY3Jp
cHRvcj4gZ2V0QnlJZHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFB1dEJ5SWREZXNjcmlwdG9yPiBw
dXRCeUlkczsKICAgICBTZWdtZW50ZWRWZWN0b3I8Q2hlY2tJbkRlc2NyaXB0b3I+IGNoZWNrSW5z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMV2VpZ2h0LmgKaW5kZXggMzRlYjM3YzkxNGFhMTk2
ZDRkMjMyYzYwZGRjNjMwNmY2OGFjMmE0MC4uYmM0OGEyYTAwNjg3ZTYyZWVhMjZhNTYxZmUxZmU0
ODRkZWRjYjViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWln
aHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFdlaWdodC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkIzRnJlcXVlbmN5
Q2xhc3MuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KIApAQCAtNDksNiArNTAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBmbG9hdCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworI2lmIEZUTF9VU0VTX0IzCisgICAgQjM6OkZy
ZXF1ZW5jeUNsYXNzIGZyZXF1ZW5jeUNsYXNzKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKSA/IEIz
OjpGcmVxdWVuY3lDbGFzczo6Tm9ybWFsIDogQjM6OkZyZXF1ZW5jeUNsYXNzOjpSYXJlOyB9Cisj
ZW5kaWYKICAgICAKICAgICB1bnNpZ25lZCBzY2FsZVRvVG90YWwoZG91YmxlIHRvdGFsKSBjb25z
dAogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265824</attachid>
            <date>2015-11-18 18:41:11 -0800</date>
            <delta_ts>2015-11-18 18:41:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151423-20151118184059.patch</filename>
            <type>text/plain</type>
            <size>89667</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzlhYjY2NWM1M2I1OTEwZGU1ZTUxN2U2MjBhOGE2MWMxY2I3MTM2Li5hMDcyYjdhM2I4OTBlYWZh
OWU4YzMxNzIzYjM1NzRhZDhiMWU2ODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODggQEAKKzIwMTUtMTEtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4g
YW5kIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRlRM
IHNob3VsZCBiZSBhYmxlIHRvIGNvbXBpbGUgYSBzbWFsbCBmdW5jdGlvbiB3aXRoIEIzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fp
ci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAg
ICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUlu
VGhyZWFkSW1wbCk6CisgICAgICAgICogZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaDoKKyAgICAg
ICAgKiBmdGwvRlRMQjNPdXRwdXQuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6T3V0
cHV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6On5PdXRwdXQpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojph
cHBlbmRUbyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2NrZWRTdGFja1Nsb3QpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpzdG9yZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpicmFuY2gpOgorICAgICAg
ICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bmV3Qmxv
Y2spOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c2V0T3JpZ2luKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6Om9yaWdpbik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpmcmFt
ZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RCb29sKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Y29uc3RJbnRQdHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnQ2
NCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdERvdWJsZSk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojp1cHNpbG9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnBo
aSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGQpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6c3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpuZWcpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91
YmxlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVN1Yik6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6ZG91YmxlRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5lZyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Yml0T3IpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0WG9yKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNobCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojph
U2hyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxTaHIpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6bG9hZDY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN0b3JlMzIp
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmU2NCk6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjpzdG9yZVB0cik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZURv
dWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRQdHIpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6YWRkcmVzcyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxv
dyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojppc1plcm8zMik6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpub3RaZXJvMzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aXNa
ZXJvNjQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90WmVybzY0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpu
b3ROdWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRlc3RJc1plcm8zMik6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp0ZXN0Tm9uWmVybzMyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OnRlc3RJc1plcm82NCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp0ZXN0
Tm9uWmVybzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRlc3RJc1plcm9QdHIpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dGVzdE5vblplcm9QdHIpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpvcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6anVtcCk6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjpicmFuY2gpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cmV0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnVucmVhY2hhYmxlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmNoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFuY2hvcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRJbmNvbWluZ1RvUGhpKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6On5PdXRwdXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6YXBwZW5kVG8pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cGFy
YW0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzdG9yZTE2KTogRGVsZXRlZC4KKyAgICAgICAgKiBmdGwvRlRMQ29t
bW9uVmFsdWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1vblZh
bHVlcyk6CisgICAgICAgIChKU0M6OkZUTDo6Q29tbW9uVmFsdWVzOjppbml0aWFsaXplQ29uc3Rh
bnRzKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmg6CisgICAgICAgICogZnRsL0ZU
TEpJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklURmluYWxpemVyOjpmaW5h
bGl6ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpMb3dlckRGR1RvTExWTSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6bG93ZXIpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNyZWF0ZVBoaVZhcmlhYmxlcyk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpzYWZlbHlJbnZhbGlkYXRlQWZ0ZXJUZXJt
aW5hdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVV
cHNpbG9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
UGhpKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVG9U
aGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVmFs
dWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVT
dHJDYXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVB
cml0aEFkZE9yU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlQXJyYXlpZnlUb1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlUHV0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRBY2Nlc3NvckJ5
SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRH
ZXR0ZXJTZXR0ZXJCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlUHV0QWNjZXNzb3JCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvTExWTTo6Y29tcGlsZUFycmF5UHVzaCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUFycmF5UG9wKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1l
bnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ3Jl
YXRlQ2xvbmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlTmV3QXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVOZXdBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
VG9QcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVTdHJpbmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVN3aXRjaCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUludmFsaWRhdGlvblBv
aW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlSW4p
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVIYXNJbmRl
eGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVIYXNHZW5lcmljUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldERpcmVjdFBuYW1lKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlVG9J
bmRleFN0cmluZyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6ZGlk
T3ZlcmZsb3dTdGFjayk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OnJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0xMVk06OmdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0xMVk06Om5vblNwZWN1bGF0aXZlQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnN3aXRjaFN0cmluZ1Nsb3cp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmRvdWJsZVRvSW50MzIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnNlbnNpYmxlRG91Ymxl
VG9JbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6bGF6eVNs
b3dQYXRoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpqc1ZhbHVl
VG9TdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
ZG91YmxlVG9TdHJpY3RJbnQ1Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6dm1DYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpj
YWxsQ2hlY2spOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06Omxvd0Js
b2NrKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjphcHBlbmRPU1JF
eGl0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjYWxsU3RhY2tt
YXApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OnByb2JlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjcmFzaCk6CisgICAgICAgIChK
U0M6OkZUTDo6bG93ZXJERkdUb0xMVk0pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OnZtQ2FsbE5vRXhjZXB0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TE91dHB1dC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzZW5zaWJsZURvdWJsZVRv
SW50KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpjZWlsNjQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y3RsejMyKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdpdGhPdmVyZmxvdzMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVyZmxvdzMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6Om11bFdpdGhPdmVyZmxvdzMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdp
dGhPdmVyZmxvdzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVyZmxv
dzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bFdpdGhPdmVyZmxvdzY0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUFicyk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojpkb3VibGVTaW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlQ29z
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVBvdyk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpkb3VibGVQb3dpKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRv
dWJsZVNxcnQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTG9nKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNhbGwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
dHJhcCk6CisgICAgICAgICogZnRsL0ZUTFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpT
dGF0ZTo6U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5oOgorICAgICAg
ICAqIGZ0bC9GVExXZWlnaHQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpXZWlnaHQ6OmZyZXF1ZW5j
eUNsYXNzKToKKwogMjAxNS0xMS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkganVtcHMgaW4gc25pcHBldCBjb2RlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBhZjZjZWQ5YjU0
MjlhZjliNDA0NzNkZWQ3MTE4YmEyMzIwNmZhYTEzLi4xNjRkNzY2YTQ2ODg2ZmJlMTU5NDFlZTg1
ZTQ0NjdiODI0MjY2ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcApAQCAtMTcxNCw2ICsxNzE0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEIzOjpPb3BzOiB7CisgICAgICAgICAgICBhcHBl
bmQoQWlyOjpPb3BzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggZDMyOGQ0YmZlNzgwZWZhNGYwMmMzOTQyZmQyZDczZjM0
MjMwOTlhOC4uNTEyZjQ0N2Q1ZmYxZTY1MzQwMTRmOWVmZWZjMWI3MjhjNThjZWM2MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC00OTgsMTAgKzQ5OCwxMiBAQCBQbGFu
OjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbChMb25nTGl2ZWRTdGF0
ZSYgbG9uZ0xpdmVkU3RhdGUpCiAgICAgICAgICAgICByZXR1cm4gRlRMUGF0aDsKICAgICAgICAg
fQogCisjaWYgIUZUTF9VU0VTX0IzCiAgICAgICAgIGlmIChzdGF0ZS5qaXRDb2RlLT5zdGFja21h
cHMuc3RhY2tTaXplKCkgPiBPcHRpb25zOjpsbHZtTWF4U3RhY2tTaXplKCkpIHsKICAgICAgICAg
ICAgIEZUTDo6ZmFpbChzdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gRlRMUGF0aDsKICAgICAg
ICAgfQorI2VuZGlmCiAKICAgICAgICAgRlRMOjpsaW5rKHN0YXRlKTsKICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCmluZGV4IDUx
NzA1YzA3NDE2NWQ4Mjg5YWE3YmY2YTU1YjZiNmYzNGY0M2JmNDYuLjliYTQ2YjJkMWY0ZDBlMTI0
MDNjMWQyYzkwMTIxNTEzZDE3NmM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogY2xhc3MgQmFzaWNCbG9jazsKK2NsYXNzIFZhbHVlOwogZW51bSBU
eXBlIDogaW50OF90OwogfSB9CiAKQEAgLTQxLDkgKzQyLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKICNpZiBGVExfVVNFU19CMwogdHlwZWRlZiBCMzo6QmFzaWNCbG9jayog
TEJhc2ljQmxvY2s7CiB0eXBlZGVmIEIzOjpUeXBlIExUeXBlOwordHlwZWRlZiBCMzo6VmFsdWUq
IExWYWx1ZTsKICNlbHNlCiB0eXBlZGVmIExMVk1CYXNpY0Jsb2NrUmVmIExCYXNpY0Jsb2NrOwog
dHlwZWRlZiBMTFZNVHlwZVJlZiBMVHlwZTsKK3R5cGVkZWYgTExWTVZhbHVlUmVmIExWYWx1ZTsK
ICNlbmRpZgogCiB0eXBlZGVmIExMVk1BdG9taWNPcmRlcmluZyBMQXRvbWljT3JkZXJpbmc7CkBA
IC01NCw3ICs1Nyw2IEBAIHR5cGVkZWYgTExWTUludFByZWRpY2F0ZSBMSW50UHJlZGljYXRlOwog
dHlwZWRlZiBMTFZNTGlua2FnZSBMTGlua2FnZTsKIHR5cGVkZWYgTExWTU1vZHVsZVJlZiBMTW9k
dWxlOwogdHlwZWRlZiBMTFZNUmVhbFByZWRpY2F0ZSBMUmVhbFByZWRpY2F0ZTsKLXR5cGVkZWYg
TExWTVZhbHVlUmVmIExWYWx1ZTsKIHR5cGVkZWYgTExWTU1lbW9yeUJ1ZmZlclJlZiBMTWVtb3J5
QnVmZmVyOwogCiBlbnVtIFN5bmNocm9uaXphdGlvblNjb3BlIHsgU2luZ2xlVGhyZWFkLCBDcm9z
c1RocmVhZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcAppbmRl
eCBjNjk3YmQ4MTJmYTkyM2YxODc5YWFhNjQyNmMzN2I4YjRlN2Q0Y2ExLi5kZjllOWUyNDFkM2Mw
Y2UwZTlhNmQ2OTFkOTIxNGUyMWYwOGExMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEIzT3V0cHV0LmNwcApAQCAtMzMsMTAgKzMzLDU2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIAogT3V0cHV0OjpPdXRwdXQoU3RhdGUmIHN0YXRlKQogICAgIDogQ29tbW9u
VmFsdWVzKHN0YXRlLmNvbnRleHQpCi0gICAgLCBtX3Byb2NlZHVyZSgqc3RhdGUucHJvYykKKyAg
ICAsIG1fcHJvYygqc3RhdGUucHJvYykKIHsKIH0KIAorT3V0cHV0Ojp+T3V0cHV0KCkKK3sKK30K
Kwordm9pZCBPdXRwdXQ6OmluaXRpYWxpemUoQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSYgaGVhcHMp
Cit7CisgICAgbV9oZWFwcyA9ICZoZWFwczsKK30KKworTEJhc2ljQmxvY2sgT3V0cHV0OjphcHBl
bmRUbyhMQmFzaWNCbG9jayBibG9jaywgTEJhc2ljQmxvY2sgbmV4dEJsb2NrKQoreworICAgIGFw
cGVuZFRvKGJsb2NrKTsKKyAgICByZXR1cm4gaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKG5leHRCbG9j
ayk7Cit9CisKK3ZvaWQgT3V0cHV0OjphcHBlbmRUbyhMQmFzaWNCbG9jayBibG9jaykKK3sKKyAg
ICBtX2Jsb2NrID0gYmxvY2s7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmxvY2tlZFN0YWNrU2xvdChz
aXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6U3RhY2tT
bG90VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGJ5dGVzLCBCMzo6U3RhY2tTbG90S2luZDo6TG9j
a2VkKTsKK30KKworTFZhbHVlIE91dHB1dDo6bG9hZChUeXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5
cGUgdHlwZSkKK3sKKyAgICBMVmFsdWUgbG9hZCA9IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6TWVt
b3J5VmFsdWU+KG1fcHJvYywgQjM6OkxvYWQsIHR5cGUsIG9yaWdpbigpLCBwb2ludGVyLnZhbHVl
KCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5zdHJ1Y3Rpb24obG9hZCwgKm1faGVh
cHMpOworICAgIHJldHVybiBsb2FkOworfQorCit2b2lkIE91dHB1dDo6c3RvcmUoTFZhbHVlIHZh
bHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKK3sKKyAgICBMVmFsdWUgc3RvcmUgPSBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6Ok1lbW9yeVZhbHVlPihtX3Byb2MsIEIzOjpTdG9yZSwgb3JpZ2luKCks
IHZhbHVlLCBwb2ludGVyLnZhbHVlKCkpOworICAgIHBvaW50ZXIuaGVhcCgpLmRlY29yYXRlSW5z
dHJ1Y3Rpb24oc3RvcmUsICptX2hlYXBzKTsKK30KKwordm9pZCBPdXRwdXQ6OmJyYW5jaChMVmFs
dWUgY29uZGl0aW9uLCBMQmFzaWNCbG9jayB0YWtlbiwgV2VpZ2h0IHRha2VuV2VpZ2h0LCBMQmFz
aWNCbG9jayBub3RUYWtlbiwgV2VpZ2h0IG5vdFRha2VuV2VpZ2h0KQoreworICAgIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPigKKyAgICAgICAgbV9wcm9jLCBCMzo6QnJhbmNo
LCBvcmlnaW4oKSwgY29uZGl0aW9uLAorICAgICAgICBCMzo6RnJlcXVlbnRlZEJsb2NrKHRha2Vu
LCB0YWtlbldlaWdodC5mcmVxdWVuY3lDbGFzcygpKSwKKyAgICAgICAgQjM6OkZyZXF1ZW50ZWRC
bG9jayhub3RUYWtlbiwgbm90VGFrZW5XZWlnaHQuZnJlcXVlbmN5Q2xhc3MoKSkpOworfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAvLyBGVExfVVNFU19CMwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCmluZGV4IDJiYWJjY2FiZWNlMDNmNTNmZGRh
ZjI3OGJlMDJiNGYzMzY5NzQxNzMuLmI2ODFmOTBlN2FlODE2NjU2ZDRlZTBjMTYxZTc1MjFhZDY0
NTBhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKQEAgLTMxLDgg
KzMxLDE5IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAjaWYgRlRMX1VTRVNfQjMKIAotI2luY2x1
ZGUgIkIzQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkIzQXJndW1lbnRSZWdWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIK
KyNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiQjNDb25zdDMyVmFsdWUuaCIK
KyNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnRyb2xWYWx1ZS5o
IgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgor
I2luY2x1ZGUgIkIzU3RhY2tTbG90VmFsdWUuaCIKKyNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgi
CisjaW5jbHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIKKyNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlwZXMuaCIKICNpbmNsdWRlICJGVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiRlRMQ29tbW9uVmFsdWVzLmgiCkBAIC01MSwx
OSArNjIsMjUgQEAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1w
YXJhbWV0ZXIiCiAjZW5kaWYgLy8gQ09NUElMRVIoQ0xBTkcpCiAKLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgREZHIHsgc3RydWN0
IE5vZGU7IH0KKworbmFtZXNwYWNlIEZUTCB7CiAKIGVudW0gU2NhbGUgeyBTY2FsZU9uZSwgU2Nh
bGVUd28sIFNjYWxlRm91ciwgU2NhbGVFaWdodCwgU2NhbGVQdHIgfTsKIAogY2xhc3MgT3V0cHV0
IDogcHVibGljIENvbW1vblZhbHVlcyB7CiBwdWJsaWM6CiAgICAgT3V0cHV0KFN0YXRlJik7Ci0g
ICAgfk91dHB1dCgpIHsgQ1JBU0goKTsgfQorICAgIH5PdXRwdXQoKTsKKworICAgIHZvaWQgaW5p
dGlhbGl6ZShBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Jik7CiAKICAgICBMQmFzaWNCbG9jayBuZXdC
bG9jayhjb25zdCBjaGFyKiBuYW1lID0gIiIpCiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0o
bmFtZSk7Ci0gICAgICAgIHJldHVybiBtX3Byb2NlZHVyZS5hZGRCbG9jaygpOworICAgICAgICBy
ZXR1cm4gbV9wcm9jLmFkZEJsb2NrKCk7CiAgICAgfQogCiAgICAgTEJhc2ljQmxvY2sgaW5zZXJ0
TmV3QmxvY2tzQmVmb3JlKExCYXNpY0Jsb2NrIG5leHRCbG9jaykKQEAgLTczLDQ2ICs5MCw2MSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYXN0TmV4dEJsb2NrOwogICAgIH0KIAotICAgIExC
YXNpY0Jsb2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNCbG9jayBuZXh0QmxvY2spIHsg
Q1JBU0goKTsgfQotICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spIHsgQ1JBU0goKTsgfQor
ICAgIExCYXNpY0Jsb2NrIGFwcGVuZFRvKExCYXNpY0Jsb2NrLCBMQmFzaWNCbG9jayBuZXh0Qmxv
Y2spOworICAgIHZvaWQgYXBwZW5kVG8oTEJhc2ljQmxvY2spOworCisgICAgdm9pZCBzZXRPcmln
aW4oREZHOjpOb2RlKiBub2RlKSB7IG1fb3JpZ2luID0gbm9kZTsgfQorICAgIEIzOjpPcmlnaW4g
b3JpZ2luKCkgeyByZXR1cm4gQjM6Ok9yaWdpbihtX29yaWdpbik7IH0KIAotICAgIExWYWx1ZSBw
YXJhbSh1bnNpZ25lZCBpbmRleCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGNvbnN0Qm9vbChi
b29sIHZhbHVlKSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgY29uc3RJbnQzMihpbnQzMl90IHZh
bHVlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgZnJhbWVQb2ludGVyKCkgeyByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBvcmln
aW4oKSk7IH0KKworICAgIExWYWx1ZSBsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90IGJ5dGVzKTsKKwor
ICAgIExWYWx1ZSBjb25zdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExW
YWx1ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIExWYWx1ZSBjb25zdEludFB0cihUKiB2YWx1ZSkgeyBDUkFT
SCgpOyB9CisgICAgTFZhbHVlIGNvbnN0SW50UHRyKFQqIHZhbHVlKSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OkNvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsg
fQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgTFZhbHVlIGNvbnN0SW50UHRyKFQgdmFs
dWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBjb25zdEludDY0KGludDY0X3QgdmFsdWUpIHsg
Q1JBU0goKTsgfQotICAgIExWYWx1ZSBjb25zdERvdWJsZShkb3VibGUgdmFsdWUpIHsgQ1JBU0go
KTsgfQorICAgIExWYWx1ZSBjb25zdEludFB0cihUIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OkNvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQor
ICAgIExWYWx1ZSBjb25zdEludDY0KGludDY0X3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KKyAg
ICBMVmFsdWUgY29uc3REb3VibGUoZG91YmxlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OkNvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQog
Ci0gICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgcGhp
KExUeXBlIHR5cGUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJv
YywgQjM6OlBoaSwgdHlwZSwgb3JpZ2luKCkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
UGFyYW1zPgotICAgIExWYWx1ZSBwaGkoTFR5cGUgdHlwZSwgVmFsdWVGcm9tQmxvY2sgdmFsdWUs
IFBhcmFtcy4uLiB0aGVSZXN0KSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgcGhpKExUeXBlLCBW
YWx1ZUZyb21CbG9jaywgUGFyYW1zLi4uIHRoZVJlc3QpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFZlY3RvclR5cGU+Ci0gICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlLCBjb25zdCBWZWN0b3JUeXBl
JiB2ZWN0b3IpIHsgQ1JBU0goKTsgfQotICAgIHZvaWQgYWRkSW5jb21pbmdUb1BoaShMVmFsdWUg
cGhpLCBWYWx1ZUZyb21CbG9jayB2YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIHBoaShM
VHlwZSwgY29uc3QgVmVjdG9yVHlwZSYpOworICAgIHZvaWQgYWRkSW5jb21pbmdUb1BoaShMVmFs
dWUgcGhpLCBWYWx1ZUZyb21CbG9jayk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUGFyYW1z
PgorICAgIHZvaWQgYWRkSW5jb21pbmdUb1BoaShMVmFsdWUgcGhpLCBWYWx1ZUZyb21CbG9jaywg
UGFyYW1zLi4uIHRoZVJlc3QpOwogCi0gICAgTFZhbHVlIGFkZChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgc3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBtdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGFkZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpB
ZGQsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgc3ViKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OlN1Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBtdWwo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6TXVsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CiAgICAg
TFZhbHVlIGRpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBM
VmFsdWUgcmVtKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExW
YWx1ZSBuZWcoTFZhbHVlIHZhbHVlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgbmVnKExWYWx1
ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSB6ZXJvID0gbV9ibG9jay0+YXBwZW5kSW50
Q29uc3RhbnQobV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUtPnR5cGUoKSwgMCk7CisgICAgICAgIHJl
dHVybiBzdWIoemVybywgdmFsdWUpOworICAgIH0KIAotICAgIExWYWx1ZSBkb3VibGVBZGQoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZVN1
YihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgZG91
YmxlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1
ZSBkb3VibGVEaXYoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CisgICAg
TFZhbHVlIGRvdWJsZUFkZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpBZGQsIG9yaWdpbigpLCBsZWZ0
LCByaWdodCk7IH0KKyAgICBMVmFsdWUgZG91YmxlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlN1
Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1ZSBkb3VibGVNdWwoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6TXVsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVl
IGRvdWJsZURpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdo
dCk7IH0KICAgICBMVmFsdWUgZG91YmxlUmVtKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
Q1JBU0goKTsgfQotICAgIExWYWx1ZSBkb3VibGVOZWcoTFZhbHVlIHZhbHVlKSB7IENSQVNIKCk7
IH0KLQotICAgIExWYWx1ZSBiaXRBbmQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFT
SCgpOyB9Ci0gICAgTFZhbHVlIGJpdE9yKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JB
U0goKTsgfQotICAgIExWYWx1ZSBiaXRYb3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBD
UkFTSCgpOyB9Ci0gICAgTFZhbHVlIHNobChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENS
QVNIKCk7IH0KLSAgICBMVmFsdWUgYVNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENS
QVNIKCk7IH0KLSAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENS
QVNIKCk7IH0KKyAgICBMVmFsdWUgZG91YmxlTmVnKExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdWIoZG91YmxlWmVybywgdmFsdWUpOworICAgIH0KKworICAgIExWYWx1ZSBi
aXRBbmQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0QW5kLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQp
OyB9CisgICAgTFZhbHVlIGJpdE9yKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdE9yLCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGJpdFhvcihMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpCaXRYb3IsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFsdWUgc2hsKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFs
dWU+KG1fcHJvYywgQjM6OlNobCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQorICAgIExWYWx1
ZSBhU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNTaHIsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
IH0KKyAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpaU2hyLCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOyB9CiAgICAgTFZhbHVlIGJpdE5vdChMVmFsdWUgdmFsdWUpIHsgQ1JBU0go
KTsgfQogCiAgICAgTFZhbHVlIGluc2VydEVsZW1lbnQoTFZhbHVlIHZlY3RvciwgTFZhbHVlIGVs
ZW1lbnQsIExWYWx1ZSBpbmRleCkgeyBDUkFTSCgpOyB9CkBAIC0xNzUsMzMgKzIwNyw0MyBAQCBw
dWJsaWM6CiAgICAgLy8gU2ltaWxhciB0byBnZXQoKSBidXQgZm9yIHN0b3JpbmcgdG8gdGhlIHZh
bHVlIGluIGFuIGFsbG9jYS4KICAgICBMVmFsdWUgc2V0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIHJl
ZmVyZW5jZSkgeyBDUkFTSCgpOyB9CiAKLSAgICBMVmFsdWUgbG9hZChUeXBlZFBvaW50ZXIsIExU
eXBlIHJlZlR5cGUpIHsgQ1JBU0goKTsgfQotICAgIHZvaWQgc3RvcmUoTFZhbHVlLCBUeXBlZFBv
aW50ZXIsIExUeXBlIHJlZlR5cGUpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBsb2FkKFR5cGVk
UG9pbnRlciwgTFR5cGUpOworICAgIHZvaWQgc3RvcmUoTFZhbHVlLCBUeXBlZFBvaW50ZXIpOwog
CiAgICAgTFZhbHVlIGxvYWQ4U2lnbkV4dDMyKFR5cGVkUG9pbnRlcikgeyBDUkFTSCgpOyB9CiAg
ICAgTFZhbHVlIGxvYWQ4WmVyb0V4dDMyKFR5cGVkUG9pbnRlcikgeyBDUkFTSCgpOyB9CiAgICAg
TFZhbHVlIGxvYWQxNlNpZ25FeHQzMihUeXBlZFBvaW50ZXIpIHsgQ1JBU0goKTsgfQogICAgIExW
YWx1ZSBsb2FkMTZaZXJvRXh0MzIoVHlwZWRQb2ludGVyKSB7IENSQVNIKCk7IH0KICAgICBMVmFs
dWUgbG9hZDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUg
bG9hZDY0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgbG9h
ZDY0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIEIzOjpJbnQ2
NCk7IH0KICAgICBMVmFsdWUgbG9hZFB0cihUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBDUkFTSCgp
OyB9CiAgICAgTFZhbHVlIGxvYWRGbG9hdFRvRG91YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IENSQVNIKCk7IH0KICAgICBMVmFsdWUgbG9hZERvdWJsZShUeXBlZFBvaW50ZXIgcG9pbnRlcikg
eyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBzdG9yZTE2KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVy
IHBvaW50ZXIpIHsgQ1JBU0goKTsgfQotICAgIHZvaWQgc3RvcmUzMihMVmFsdWUgdmFsdWUsIFR5
cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAgICB2b2lkIHN0b3JlNjQoTFZhbHVl
IHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBDUkFTSCgpOyB9Ci0gICAgdm9pZCBzdG9y
ZVB0cihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IENSQVNIKCk7IH0KLSAg
ICB2b2lkIHN0b3JlRG91YmxlKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsg
Q1JBU0goKTsgfQorICAgIHZvaWQgc3RvcmUzMihMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBw
b2ludGVyKSB7IHN0b3JlKHZhbHVlLCBwb2ludGVyKTsgfQorICAgIHZvaWQgc3RvcmU2NChMVmFs
dWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHN0b3JlKHZhbHVlLCBwb2ludGVyKTsg
fQorICAgIHZvaWQgc3RvcmVQdHIoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikg
eyBzdG9yZSh2YWx1ZSwgcG9pbnRlcik7IH0KKyAgICB2b2lkIHN0b3JlRG91YmxlKExWYWx1ZSB2
YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIpOyB9CiAK
LSAgICBMVmFsdWUgYWRkUHRyKExWYWx1ZSB2YWx1ZSwgcHRyZGlmZl90IGltbWVkaWF0ZSA9IDAp
IHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBhZGRQdHIoTFZhbHVlIHZhbHVlLCBwdHJkaWZmX3Qg
aW1tZWRpYXRlID0gMCkKKyAgICB7CisgICAgICAgIGlmICghaW1tZWRpYXRlKQorICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4gYWRkKHZhbHVlLCBjb25zdEludFB0cihp
bW1lZGlhdGUpKTsKKyAgICB9CiAKICAgICAvLyBDb25zdHJ1Y3QgYW4gYWRkcmVzcyBieSBvZmZz
ZXR0aW5nIGJhc2UgYnkgdGhlIHJlcXVlc3RlZCBhbW91bnQgYW5kIGFzY3JpYmluZwogICAgIC8v
IHRoZSByZXF1ZXN0ZWQgYWJzdHJhY3QgaGVhcCB0byBpdC4KLSAgICBUeXBlZFBvaW50ZXIgYWRk
cmVzcyhjb25zdCBBYnN0cmFjdEhlYXAmIGhlYXAsIExWYWx1ZSBiYXNlLCBwdHJkaWZmX3Qgb2Zm
c2V0ID0gMCkgeyBDUkFTSCgpOyB9CisgICAgVHlwZWRQb2ludGVyIGFkZHJlc3MoY29uc3QgQWJz
dHJhY3RIZWFwJiBoZWFwLCBMVmFsdWUgYmFzZSwgcHRyZGlmZl90IG9mZnNldCA9IDApCisgICAg
eworICAgICAgICByZXR1cm4gVHlwZWRQb2ludGVyKGhlYXAsIGFkZFB0cihiYXNlLCBvZmZzZXQp
KTsKKyAgICB9CiAgICAgLy8gQ29uc3RydWN0IGFuIGFkZHJlc3MgYnkgb2Zmc2V0dGluZyBiYXNl
IGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBmaWVsZCwKICAgICAvLyBhbmQgb3B0aW9u
YWxseSBhbiBhZGRpdGlvbmFsIGFtb3VudCAodXNlIHRoaXMgd2l0aCBjYXJlKSwgYW5kIHRoZW4g
Y3JlYXRpbmcKICAgICAvLyBhIFR5cGVkUG9pbnRlciB3aXRoIHRoZSBnaXZlbiBmaWVsZCBhcyB0
aGUgaGVhcC4KLSAgICBUeXBlZFBvaW50ZXIgYWRkcmVzcyhMVmFsdWUgYmFzZSwgY29uc3QgQWJz
dHJhY3RGaWVsZCYgZmllbGQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKSB7IENSQVNIKCk7IH0KKyAg
ICBUeXBlZFBvaW50ZXIgYWRkcmVzcyhMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYg
ZmllbGQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZHJl
c3MoZmllbGQsIGJhc2UsIG9mZnNldCArIGZpZWxkLm9mZnNldCgpKTsKKyAgICB9CiAKICAgICBM
VmFsdWUgYmFzZUluZGV4KExWYWx1ZSBiYXNlLCBMVmFsdWUgaW5kZXgsIFNjYWxlLCBwdHJkaWZm
X3Qgb2Zmc2V0ID0gMCkgeyBDUkFTSCgpOyB9CiAKQEAgLTIzNSw3ICsyNzcsNyBAQCBwdWJsaWM6
CiAgICAgTFZhbHVlIG5vdEVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0go
KTsgfQogICAgIExWYWx1ZSBhYm92ZShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNI
KCk7IH0KICAgICBMVmFsdWUgYWJvdmVPckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
IHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBiZWxvdyhMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgYmVsb3coTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVs
b3csIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KICAgICBMVmFsdWUgYmVsb3dPckVxdWFsKExW
YWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBncmVhdGVy
VGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUg
Z3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsg
fQpAQCAtMjU2LDE5ICsyOTgsMTkgQEAgcHVibGljOgogICAgIExWYWx1ZSBkb3VibGVHcmVhdGVy
VGhhbk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQog
ICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KIAotICAgIExWYWx1ZSBpc1plcm8zMihMVmFs
dWUgdmFsdWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBub3RaZXJvMzIoTFZhbHVlIHZhbHVl
KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgaXNaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgbm90WmVybzY0KExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Ci0g
ICAgTFZhbHVlIGlzTnVsbChMVmFsdWUgdmFsdWUpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBu
b3ROdWxsKExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGlzWmVybzMyKExW
YWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsgfQorICAgIExWYWx1ZSBu
b3RaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpOb3RFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQzMlplcm8pOyB9
CisgICAgTFZhbHVlIGlzWmVybzY0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50
NjRaZXJvKTsgfQorICAgIExWYWx1ZSBub3RaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpOb3RFcXVhbCwgb3JpZ2lu
KCksIHZhbHVlLCBpbnQ2NFplcm8pOyB9CisgICAgTFZhbHVlIGlzTnVsbChMVmFsdWUgdmFsdWUp
IHsgcmV0dXJuIGlzWmVybzY0KHZhbHVlKTsgfQorICAgIExWYWx1ZSBub3ROdWxsKExWYWx1ZSB2
YWx1ZSkgeyByZXR1cm4gbm90WmVybzY0KHZhbHVlKTsgfQogCi0gICAgTFZhbHVlIHRlc3RJc1pl
cm8zMihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUg
dGVzdE5vblplcm8zMihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IENSQVNIKCk7IH0KLSAg
ICBMVmFsdWUgdGVzdElzWmVybzY0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgQ1JBU0go
KTsgfQotICAgIExWYWx1ZSB0ZXN0Tm9uWmVybzY0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2sp
IHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSB0ZXN0SXNaZXJvUHRyKExWYWx1ZSB2YWx1ZSwgTFZh
bHVlIG1hc2spIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSB0ZXN0Tm9uWmVyb1B0cihMVmFsdWUg
dmFsdWUsIExWYWx1ZSBtYXNrKSB7IENSQVNIKCk7IH0KKyAgICBMVmFsdWUgdGVzdElzWmVybzMy
KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIGlzWmVybzMyKGJpdEFuZCh2YWx1
ZSwgbWFzaykpOyB9CisgICAgTFZhbHVlIHRlc3ROb25aZXJvMzIoTFZhbHVlIHZhbHVlLCBMVmFs
dWUgbWFzaykgeyByZXR1cm4gbm90WmVybzMyKGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CisgICAg
TFZhbHVlIHRlc3RJc1plcm82NChMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBp
c1plcm82NChiaXRBbmQodmFsdWUsIG1hc2spKTsgfQorICAgIExWYWx1ZSB0ZXN0Tm9uWmVybzY0
KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIG5vdFplcm82NChiaXRBbmQodmFs
dWUsIG1hc2spKTsgfQorICAgIExWYWx1ZSB0ZXN0SXNaZXJvUHRyKExWYWx1ZSB2YWx1ZSwgTFZh
bHVlIG1hc2spIHsgcmV0dXJuIGlzTnVsbChiaXRBbmQodmFsdWUsIG1hc2spKTsgfQorICAgIExW
YWx1ZSB0ZXN0Tm9uWmVyb1B0cihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBu
b3ROdWxsKGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CiAKICAgICBMVmFsdWUgc2VsZWN0KExWYWx1
ZSB2YWx1ZSwgTFZhbHVlIHRha2VuLCBMVmFsdWUgbm90VGFrZW4pIHsgQ1JBU0goKTsgfQogICAg
IExWYWx1ZSBleHRyYWN0VmFsdWUoTFZhbHVlIGFnZ1ZhbCwgdW5zaWduZWQgaW5kZXgpIHsgQ1JB
U0goKTsgfQpAQCAtMjc3LDE4ICszMTksMjEgQEAgcHVibGljOgogICAgIExWYWx1ZSBmZW5jZUFj
cVJlbCgpIHsgQ1JBU0goKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4K
LSAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3Rv
cikgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGNhbGwoTFZhbHVlIGZ1bmN0aW9uKSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxKSB7IENS
QVNIKCk7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSB0eXBlLCBMVmFsdWUgZnVuY3Rpb24sIGNv
bnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpD
Q2FsbFZhbHVlPihtX3Byb2MsIHR5cGUsIG9yaWdpbigpLCBCMzo6VmFsdWU6OkFkamFjZW5jeUxp
c3QodmVjdG9yKSk7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSB0eXBlLCBMVmFsdWUgZnVuY3Rp
b24pIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q0NhbGxWYWx1ZT4obV9wcm9jLCB0
eXBlLCBvcmlnaW4oKSk7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSB0eXBlLCBMVmFsdWUgZnVu
Y3Rpb24sIExWYWx1ZSBhcmcxKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNDYWxs
VmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIGFyZzEpOyB9CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBh
cmcxLCBBcmdzLi4uIGFyZ3MpIHsgQ1JBU0goKTsgfQorICAgIExWYWx1ZSBjYWxsKExUeXBlIHR5
cGUsIExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIEFyZ3MuLi4gYXJncykgeyByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDQ2FsbFZhbHVlPihtX3Byb2MsIHR5cGUsIG9yaWdpbigp
LCBhcmcxLCBhcmdzLi4uKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBl
PgotICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9uKSB7IENSQVNIKCk7
IH0KKyAgICBMVmFsdWUgb3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikgeyByZXR1cm4g
Y29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihmdW5jdGlvbikpOyB9CiAKLSAgICB2b2lk
IGp1bXAoTEJhc2ljQmxvY2sgZGVzdGluYXRpb24pIHsgQ1JBU0goKTsgfQotICAgIHZvaWQgYnJh
bmNoKExWYWx1ZSBjb25kaXRpb24sIExCYXNpY0Jsb2NrIHRha2VuLCBXZWlnaHQgdGFrZW5XZWln
aHQsIExCYXNpY0Jsb2NrIG5vdFRha2VuLCBXZWlnaHQgbm90VGFrZW5XZWlnaHQpIHsgQ1JBU0go
KTsgfQotICAgIHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIFdlaWdodGVkVGFyZ2V0IHRh
a2VuLCBXZWlnaHRlZFRhcmdldCBub3RUYWtlbikgeyBDUkFTSCgpOyB9CisgICAgdm9pZCBqdW1w
KExCYXNpY0Jsb2NrIGRlc3RpbmF0aW9uKSB7IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29udHJv
bFZhbHVlPihtX3Byb2MsIEIzOjpKdW1wLCBvcmlnaW4oKSwgQjM6OkZyZXF1ZW50ZWRCbG9jayhk
ZXN0aW5hdGlvbikpOyB9CisgICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgTEJhc2lj
QmxvY2sgdGFrZW4sIFdlaWdodCB0YWtlbldlaWdodCwgTEJhc2ljQmxvY2sgbm90VGFrZW4sIFdl
aWdodCBub3RUYWtlbldlaWdodCk7CisgICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwg
V2VpZ2h0ZWRUYXJnZXQgdGFrZW4sIFdlaWdodGVkVGFyZ2V0IG5vdFRha2VuKQorICAgIHsKKyAg
ICAgICAgYnJhbmNoKGNvbmRpdGlvbiwgdGFrZW4udGFyZ2V0KCksIHRha2VuLndlaWdodCgpLCBu
b3RUYWtlbi50YXJnZXQoKSwgbm90VGFrZW4ud2VpZ2h0KCkpOworICAgIH0KIAogICAgIC8vIEJy
YW5jaGVzIHRvIGFuIGFscmVhZHktY3JlYXRlZCBoYW5kbGVyIGlmIHRydWUsICJmYWxscyB0aHJv
dWdoIiBpZiBmYWxzZS4gRmFsbC10aHJvdWdoIGlzCiAgICAgLy8gc2ltdWxhdGVkIGJ5IGNyZWF0
aW5nIGEgY29udGludWF0aW9uIGZvciB5b3UuCkBAIC0zMDAsMTMgKzM0NSwyNiBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KICAgICB2b2lkIHN3aXRjaEluc3Ry
dWN0aW9uKExWYWx1ZSB2YWx1ZSwgY29uc3QgVmVjdG9yVHlwZSYgY2FzZXMsIExCYXNpY0Jsb2Nr
IGZhbGxUaHJvdWdoLCBXZWlnaHQgZmFsbFRocm91Z2hXZWlnaHQpIHsgQ1JBU0goKTsgfQogCi0g
ICAgdm9pZCByZXQoTFZhbHVlIHZhbHVlKSB7IENSQVNIKCk7IH0KKyAgICB2b2lkIHJldChMVmFs
dWUgdmFsdWUpIHsgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+KG1fcHJvYywg
QjM6OlJldHVybiwgb3JpZ2luKCksIHZhbHVlKTsgfQorCisgICAgdm9pZCB1bnJlYWNoYWJsZSgp
IHsgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+KG1fcHJvYywgQjM6Ok9vcHMs
IG9yaWdpbigpKTsgfQogCi0gICAgdm9pZCB1bnJlYWNoYWJsZSgpIHsgQ1JBU0goKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjaGVjayhMVmFsdWUgdmFsdWUs
IGNvbnN0IFN0YWNrbWFwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCisgICAgeworICAgICAgICBCMzo6Q2hlY2tWYWx1ZSogY2hlY2sgPSBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OkNoZWNrVmFsdWU+KG1fcHJvYywgQjM6OkNoZWNrLCBvcmlnaW4oKSwgdmFs
dWUpOworICAgICAgICBmb3IgKExWYWx1ZSB2YWx1ZSA6IGFyZ3VtZW50cykKKyAgICAgICAgICAg
IGNoZWNrLT5hcHBlbmQoQjM6OkNvbnN0cmFpbmVkVmFsdWUodmFsdWUpKTsKKyAgICAgICAgY2hl
Y2stPnNldEdlbmVyYXRvcihmdW5jdG9yKTsKKyAgICB9CiAKICAgICB2b2lkIHRyYXAoKSB7IENS
QVNIKCk7IH0KIAotICAgIFZhbHVlRnJvbUJsb2NrIGFuY2hvcihMVmFsdWUgdmFsdWUpIHsgQ1JB
U0goKTsgfQorICAgIFZhbHVlRnJvbUJsb2NrIGFuY2hvcihMVmFsdWUgdmFsdWUpCisgICAgewor
ICAgICAgICBCMzo6VXBzaWxvblZhbHVlKiB1cHNpbG9uID0gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IFZhbHVlRnJvbUJsb2NrKHVwc2lsb24sIG1fYmxvY2spOworICAgIH0KIAogI3ByYWdtYSBtYXJr
IC0gSW50cmluc2ljcwogCkBAIC0zMTYsMTIgKzM3NCw0NSBAQCBwdWJsaWM6CiAgICAgTFZhbHVl
IHBhdGNocG9pbnRWb2lkSW50cmluc2ljKCkgeyBDUkFTSCgpOyB9CiAKICNwcmFnbWEgbWFyayAt
IFN0YXRlcwotICAgIEIzOjpQcm9jZWR1cmUmIG1fcHJvY2VkdXJlOworICAgIEIzOjpQcm9jZWR1
cmUmIG1fcHJvYzsKIAorICAgIERGRzo6Tm9kZSogbV9vcmlnaW4geyBudWxscHRyIH07CiAgICAg
TEJhc2ljQmxvY2sgbV9ibG9jayB7IG51bGxwdHIgfTsKICAgICBMQmFzaWNCbG9jayBtX25leHRC
bG9jayB7IG51bGxwdHIgfTsKKworICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkqIG1faGVhcHM7
CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CitpbmxpbmUgTFZhbHVlIE91dHB1
dDo6cGhpKExUeXBlIHR5cGUsIFZhbHVlRnJvbUJsb2NrIHZhbHVlLCBQYXJhbXMuLi4gdGhlUmVz
dCkKK3sKKyAgICBMVmFsdWUgcGhpTm9kZSA9IHBoaSh0eXBlKTsKKyAgICBhZGRJbmNvbWluZ1Rv
UGhpKHBoaU5vZGUsIHZhbHVlLCB0aGVSZXN0Li4uKTsKKyAgICByZXR1cm4gcGhpTm9kZTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KK2lubGluZSBMVmFsdWUgT3V0cHV0Ojpw
aGkoTFR5cGUgdHlwZSwgY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKQoreworICAgIExWYWx1ZSBw
aGlOb2RlID0gcGhpKHR5cGUpOworICAgIGZvciAoY29uc3QgVmFsdWVGcm9tQmxvY2smIHZhbHVl
RnJvbUJsb2NrIDogdmVjdG9yKQorICAgICAgICBhZGRJbmNvbWluZ1RvUGhpKHBoaU5vZGUsIHZh
bHVlRnJvbUJsb2NrKTsKKyAgICByZXR1cm4gcGhpTm9kZTsKK30KKworaW5saW5lIHZvaWQgT3V0
cHV0OjphZGRJbmNvbWluZ1RvUGhpKExWYWx1ZSBwaGksIFZhbHVlRnJvbUJsb2NrIHZhbHVlKQor
eworICAgIHZhbHVlLnZhbHVlKCktPmFzPEIzOjpVcHNpbG9uVmFsdWU+KCktPnNldFBoaShwaGkp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+CitpbmxpbmUgdm9pZCBPdXRwdXQ6
OmFkZEluY29taW5nVG9QaGkoTFZhbHVlIHBoaSwgVmFsdWVGcm9tQmxvY2sgdmFsdWUsIFBhcmFt
cy4uLiB0aGVSZXN0KQoreworICAgIGFkZEluY29taW5nVG9QaGkocGhpLCB2YWx1ZSk7CisgICAg
YWRkSW5jb21pbmdUb1BoaShwaGksIHRoZVJlc3QuLi4pOworfQorCisKICNpZiBDT01QSUxFUihD
TEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZiAvLyBDT01QSUxFUihD
TEFORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFs
dWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcApp
bmRleCAwZmJhOTRmNmU0ZWJhYWIyYjA3NzQ1Yzk3NGJhODc2ZTI3Njg0MWE4Li44NjI1YjhkZTQw
ODA0ZWJkODBjNGRmZDFlNTY2NzQ2YTEwMzIyYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCkBAIC0yNiwxMyArMjYsMjIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGVExDb21tb25WYWx1ZXMuaCIKIAorI2luY2x1ZGUgIkIz
QmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM0NvbnN0MzJWYWx1ZS5oIgorI2luY2x1
ZGUgIkIzQ29uc3Q2NFZhbHVlLmgiCisjaW5jbHVkZSAiQjNDb25zdERvdWJsZVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNDb25zdFB0clZhbHVlLmgiCisjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNp
bmNsdWRlICJGVExBYmJyZXZpYXRpb25zLmgiCiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCit1c2luZyBuYW1lc3BhY2UgQjM7CisKIENv
bW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnRleHQpCiAjaWYgRlRMX1VTRVNf
QjMKICAgICA6IHZvaWRUeXBlKEIzOjpWb2lkKQpAQCAtNjgsOSArNzcsNyBAQCBDb21tb25WYWx1
ZXM6OkNvbW1vblZhbHVlcyhMQ29udGV4dCBjb250ZXh0KQogICAgICwgaW50UHRyT25lKGNvbnN0
SW50KGludFB0ciwgMSwgU2lnbkV4dGVuZCkpCiAgICAgLCBpbnRQdHJUd28oY29uc3RJbnQoaW50
UHRyLCAyLCBTaWduRXh0ZW5kKSkKICAgICAsIGludFB0clRocmVlKGNvbnN0SW50KGludFB0ciwg
MywgU2lnbkV4dGVuZCkpCi0gICAgLCBpbnRQdHJGb3VyKGNvbnN0SW50KGludFB0ciwgNCwgU2ln
bkV4dGVuZCkpCiAgICAgLCBpbnRQdHJFaWdodChjb25zdEludChpbnRQdHIsIDgsIFNpZ25FeHRl
bmQpKQotICAgICwgaW50UHRyUHRyKGNvbnN0SW50KGludFB0ciwgc2l6ZW9mKHZvaWQqKSwgU2ln
bkV4dGVuZCkpCiAgICAgLCBkb3VibGVaZXJvKGNvbnN0UmVhbChkb3VibGVUeXBlLCAwKSkKICAg
ICAsIHJhbmdlS2luZChtZEtpbmRJRChjb250ZXh0LCAicmFuZ2UiKSkKICAgICAsIHByb2ZLaW5k
KG1kS2luZElEKGNvbnRleHQsICJwcm9mIikpCkBAIC04MCwxMiArODcsMjQgQEAgQ29tbW9uVmFs
dWVzOjpDb21tb25WYWx1ZXMoTENvbnRleHQgY29udGV4dCkKICAgICAsIG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9tb2R1bGUoMCkKIHsKK30KKwogI2lmIEZUTF9VU0VTX0IzCi0gICAgLy8g
UGxlbnR5IG9mIHZhbHVlcyBhcmUgdW5pbml0aWFsaXplZC4gVGhlIGJyYW5jaCBpcyBqdXN0IHRo
ZXJlIGZvciBOT1JFVFVSTi4KLSAgICBpZiAoIW1fbW9kdWxlKQotICAgICAgICBDUkFTSCgpOwot
I2VuZGlmCit2b2lkIENvbW1vblZhbHVlczo6aW5pdGlhbGl6ZUNvbnN0YW50cyhCMzo6UHJvY2Vk
dXJlJiBwcm9jLCBCMzo6QmFzaWNCbG9jayogYmxvY2spCit7CisgICAgaW50MzJaZXJvID0gYmxv
Y2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKTsKKyAgICBpbnQz
Mk9uZSA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7
CisgICAgYm9vbGVhblRydWUgPSBpbnQzMk9uZTsKKyAgICBib29sZWFuRmFsc2UgPSBpbnQzMlpl
cm87CisgICAgaW50NjRaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAwKTsKKyAgICBpbnRQdHJaZXJvID0gYmxvY2stPmFwcGVuZE5ldzxDb25zdFB0
clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCk7CisgICAgaW50UHRyT25lID0gYmxvY2stPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSk7CisgICAgaW50UHRyVHdvID0g
YmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMik7CisgICAg
aW50UHRyVGhyZWUgPSBibG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdp
bigpLCAzKTsKKyAgICBpbnRQdHJFaWdodCA9IGJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIDgpOworICAgIGRvdWJsZVplcm8gPSBibG9jay0+YXBwZW5kTmV3
PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7CiB9CisjZW5kaWYKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkZUTAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21tb25WYWx1ZXMuaAppbmRleCA2YWY5NTg5N2E2OTViNTRmNjQxMTk1ODZkNTU0YTkyNjk1YWFm
Yzk5Li42MTYxOTExZDdiYzY3MGM1ZjFlZWJhYzhlYjI1MmE3YzY4OGI3MDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTMxLDE2ICszMSwyNyBA
QAogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGVkVHlwZXMuaCIKICNpbmNsdWRlICJGVExWYWx1ZVJh
bmdlLmgiCiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKK25hbWVzcGFjZSBKU0Mg
eworCituYW1lc3BhY2UgQjMgeworY2xhc3MgQmFzaWNCbG9jazsKK2NsYXNzIFByb2NlZHVyZTsK
K30KKworbmFtZXNwYWNlIEZUTCB7CiAKIGNsYXNzIENvbW1vblZhbHVlcyB7CiBwdWJsaWM6CiAg
ICAgQ29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnRleHQpOwotICAgIAorCisjaWYgRlRMX1VTRVNf
QjMKKyAgICB2b2lkIGluaXRpYWxpemVDb25zdGFudHMoQjM6OlByb2NlZHVyZSYsIEIzOjpCYXNp
Y0Jsb2NrKik7CisjZWxzZSAvLyBGVExfVVNFU19CMwogICAgIHZvaWQgaW5pdGlhbGl6ZShMTW9k
dWxlIG1vZHVsZSkKICAgICB7CiAgICAgICAgIG1fbW9kdWxlID0gbW9kdWxlOwogICAgIH0KKyNl
bmRpZiAvLyBGVExfVVNFU19CMwogICAgIAogICAgIGNvbnN0IExUeXBlIHZvaWRUeXBlOwogICAg
IGNvbnN0IExUeXBlIGJvb2xlYW47CkBAIC02MCwyMCArNzEsMjAgQEAgcHVibGljOgogICAgIGNv
bnN0IExUeXBlIHJlZkZsb2F0OwogICAgIGNvbnN0IExUeXBlIHJlZkRvdWJsZTsKICNlbmRpZgot
ICAgIGNvbnN0IExWYWx1ZSBib29sZWFuVHJ1ZSB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFs
dWUgYm9vbGVhbkZhbHNlIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnQ4WmVybyB7
IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50MzJaZXJvIHsgbnVsbHB0ciB9OwotICAg
IGNvbnN0IExWYWx1ZSBpbnQzMk9uZSB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50
NjRaZXJvIHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnRQdHJaZXJvIHsgbnVsbHB0
ciB9OwotICAgIGNvbnN0IExWYWx1ZSBpbnRQdHJPbmUgeyBudWxscHRyIH07Ci0gICAgY29uc3Qg
TFZhbHVlIGludFB0clR3byB7IG51bGxwdHIgfTsKLSAgICBjb25zdCBMVmFsdWUgaW50UHRyVGhy
ZWUgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGludFB0ckZvdXIgeyBudWxscHRyIH07
Ci0gICAgY29uc3QgTFZhbHVlIGludFB0ckVpZ2h0IHsgbnVsbHB0ciB9OwotICAgIGNvbnN0IExW
YWx1ZSBpbnRQdHJQdHIgeyBudWxscHRyIH07Ci0gICAgY29uc3QgTFZhbHVlIGRvdWJsZVplcm8g
eyBudWxscHRyIH07CisgICAgTFZhbHVlIGJvb2xlYW5UcnVlIHsgbnVsbHB0ciB9OworICAgIExW
YWx1ZSBib29sZWFuRmFsc2UgeyBudWxscHRyIH07CisjaWYgIUZUTF9VU0VTX0IzCisgICAgTFZh
bHVlIGludDhaZXJvIHsgbnVsbHB0ciB9OworI2VuZGlmCisgICAgTFZhbHVlIGludDMyWmVybyB7
IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50MzJPbmUgeyBudWxscHRyIH07CisgICAgTFZhbHVl
IGludDY0WmVybyB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgaW50UHRyWmVybyB7IG51bGxwdHIg
fTsKKyAgICBMVmFsdWUgaW50UHRyT25lIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBpbnRQdHJU
d28geyBudWxscHRyIH07CisgICAgTFZhbHVlIGludFB0clRocmVlIHsgbnVsbHB0ciB9OworICAg
IExWYWx1ZSBpbnRQdHJFaWdodCB7IG51bGxwdHIgfTsKKyAgICBMVmFsdWUgZG91YmxlWmVybyB7
IG51bGxwdHIgfTsKICAgICAKICAgICBjb25zdCB1bnNpZ25lZCByYW5nZUtpbmQgeyAwIH07CiAg
ICAgY29uc3QgdW5zaWduZWQgcHJvZktpbmQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKaW5kZXggOTNiMDg0ZjUzYWUwYjk3NDUxM2I5MWJj
OGNkNDE5ZjU4ZGQwMmNhYy4uMGI3ODMyMDIwY2U1ODkyZWY5M2VlNzRiOWRlZTU0Yzc3ZDQwMGJk
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcApA
QCAtMTUxLDggKzE1MSw5IEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKCkK
ICAgICAgICAgICAgICgiRlRMIGVudHJ5cG9pbnQgdGh1bmsgZm9yICVzIHdpdGggTExWTSBnZW5l
cmF0ZWQgY29kZSBhdCAlcCIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4u
Y29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpKS5kYXRhKCksIGZ1bmN0aW9uKSkpOwogICAgIAog
ICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSk7Ci0KKyNpZiAhRlRMX1VT
RVNfQjMKICAgICBtX3BsYW4udm0udXBkYXRlRlRMTGFyZ2VzdFN0YWNrU2l6ZShqaXRDb2RlLT5z
dGFja21hcHMuc3RhY2tTaXplKCkpOworI2VuZGlmCiAKICAgICBpZiAobV9wbGFuLmNvbXBpbGF0
aW9uKQogICAgICAgICBtX3BsYW4udm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxh
dGlvbihtX3BsYW4uY29tcGlsYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAKaW5kZXggM2RhYjM5MzEwMGQ5ZjA4ODYyOWE2YWM3Y2U2YzhjOTQ3MTJmMmFhMy4uODFiNmQ1
NzA3MzhhY2U4MmUxNWY3MTM5YzUxYTkxOWJmYjBhMjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCkBAIC01Miw2ICs1Miw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUp
CiAgICAgLy8gTExWTSB3aWxsIGNyZWF0ZSBpdHMgb3duIGp1bXAgdGFibGVzIGFzIG5lZWRlZC4K
ICAgICBjb2RlQmxvY2stPmNsZWFyU3dpdGNoSnVtcFRhYmxlcygpOwogCisjaWYgIUZUTF9VU0VT
X0IzCiAgICAgLy8gV2hhdCBMTFZNJ3Mgc3RhY2ttYXBzIGNhbGwgc3RhY2tTaXplRm9yTG9jYWxz
IGFuZCB3aGF0IHdlIGNhbGwgZnJhbWVSZWdpc3RlckNvdW50IGhhdmUgYSBzaW1wbGUKICAgICAv
LyByZWxhdGlvbnNoaXAsIHRob3VnaCBpdCdzIG5vdCBvYnZpb3VzIGZyb20gcmVhZGluZyB0aGUg
Y29kZS4gVGhlIGVhc2llc3Qgd2F5IHRvIHVuZGVyc3RhbmQgdGhlbQogICAgIC8vIGlzIHRvIGxv
b2sgYXQgc3RhY2tPZmZzZXQsIGkuZS4gd2hhdCB5b3UgaGF2ZSB0byBhZGQgdG8gRlAgdG8gZ2V0
IFNQLiBGb3IgTExWTSB0aGF0IGlzIGp1c3Q6CkBAIC03Nyw2ICs3OCw3IEBAIHZvaWQgbGluayhT
dGF0ZSYgc3RhdGUpCiAgICAgLy8gICAgIGZyYW1lUmVnaXN0ZXJDb3VudCA9PSAtKC1zdGF0ZS5q
aXRDb2RlLT5zdGFja21hcHMuc3RhY2tTaXplRm9yTG9jYWxzKCkpIC8gc2l6ZW9mKFJlZ2lzdGVy
KQogICAgIC8vICAgICBmcmFtZVJlZ2lzdGVyQ291bnQgPT0gc3RhdGUuaml0Q29kZS0+c3RhY2tt
YXBzLnN0YWNrU2l6ZUZvckxvY2FscygpIC8gc2l6ZW9mKFJlZ2lzdGVyKQogICAgIHN0YXRlLmpp
dENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQgPSBzdGF0ZS5qaXRDb2RlLT5zdGFja21h
cHMuc3RhY2tTaXplRm9yTG9jYWxzKCkgLyBzaXplb2Yodm9pZCopOworI2VuZGlmCiAgICAgCiAg
ICAgc3RhdGUuaml0Q29kZS0+Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgPSBn
cmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IDlkNDIwYWZmZjBh
YTNhZTljOWZhMmQ2ZWI5YzQxNjEzMWU0Y2Q2ODMuLjQxZTI0NDRiNzcyNWM1ODJlNDA0YzUwMzRm
ODU2YzJlZjZkZTc3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCkBAIC02NCw2ICs2NCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIAordXNpbmcgbmFtZXNwYWNlIEIzOwogdXNpbmcgbmFtZXNwYWNlIERGRzsK
IAogbmFtZXNwYWNlIHsKQEAgLTEwNSw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9m
dGxTdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX2hlYXBzKHN0YXRlLmNvbnRleHQpCiAgICAgICAg
ICwgbV9vdXQoc3RhdGUpCisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgLCBtX3Byb2MoKnN0YXRl
LnByb2MpCisjZW5kaWYKICAgICAgICAgLCBtX3N0YXRlKHN0YXRlLmdyYXBoKQogICAgICAgICAs
IG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3RhdGUpCiAgICAgICAgICwgbV9zdGFja21h
cElEcygwKQpAQCAtMTI3LDE0ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBt
X2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKIAotI2lmIEZUTF9VU0VTX0IzCi0gICAgICAgIGlm
ICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkgfHwgIXZlcmJvc2VDb21waWxhdGlvbkVuYWJs
ZWQoKSkKLSAgICAgICAgICAgIENSQVNIKCk7Ci0KLSAgICAgICAgbV9wcm9sb2d1ZSA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiUHJvbG9ndWUiKSk7Ci0gICAgICAgIExCYXNpY0Jsb2NrIHN0YWNr
T3ZlcmZsb3cgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN0YWNrIG92ZXJmbG93IikpOwotICAg
ICAgICBMQmFzaWNCbG9jayBjaGVja0FyZ3VtZW50cyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
Q2hlY2sgYXJndW1lbnRzIikpOwotI2Vsc2UKKyNpZiAhRlRMX1VTRVNfQjMKICAgICAgICAgbV9m
dGxTdGF0ZS5tb2R1bGUgPQogICAgICAgICAgICAgbW9kdWxlQ3JlYXRlV2l0aE5hbWVJbkNvbnRl
eHQobmFtZS5kYXRhKCksIG1fZnRsU3RhdGUuY29udGV4dCk7CiAgICAgICAgIApAQCAtMTQ2LDEx
ICsxNDMsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gc2xvd2VyLiBJdCBzaG91bGQgYmUg
ZGlzYWJsZWQuCiAgICAgICAgICAgICBhZGRUYXJnZXREZXBlbmRlbnRGdW5jdGlvbkF0dHIobV9m
dGxTdGF0ZS5mdW5jdGlvbiwgInRhcmdldC1mZWF0dXJlcyIsICItYXZ4Iik7CiAgICAgICAgIH0K
KyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlQ29t
cGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJGdW5jdGlvbiByZWFkeSwg
YmVnaW5uaW5nIGxvd2VyaW5nLlxuIik7Ci0gICAgICAgIAorCisjaWYgRlRMX1VTRVNfQjMKKyAg
ICAgICAgbV9vdXQuaW5pdGlhbGl6ZShtX2hlYXBzKTsKKyNlbHNlCiAgICAgICAgIG1fb3V0Lmlu
aXRpYWxpemUobV9mdGxTdGF0ZS5tb2R1bGUsIG1fZnRsU3RhdGUuZnVuY3Rpb24sIG1faGVhcHMp
OworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX3Byb2xvZ3VlID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJQcm9sb2d1ZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgc3RhY2tPdmVyZmxvdyA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RhY2sgb3ZlcmZsb3ciKSk7CkBAIC0xNjYsOCArMTY4
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obV9wcm9sb2d1ZSwgc3RhY2tPdmVyZmxvdyk7CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAg
bV9vdXQuaW5pdGlhbGl6ZUNvbnN0YW50cyhtX3Byb2MsIG1fcHJvbG9ndWUpOworI2VuZGlmCiAg
ICAgICAgIGNyZWF0ZVBoaVZhcmlhYmxlcygpOwogCisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAg
bV9jYXB0dXJlZCA9IG1fb3V0LmxvY2tlZFN0YWNrU2xvdChzaXplb2YoSlNWYWx1ZSkgKiBtX2dy
YXBoLm1fbmV4dE1hY2hpbmVMb2NhbCk7CisgICAgICAgIG1fZnRsU3RhdGUuY2FwdHVyZWRWYWx1
ZSA9IG1fY2FwdHVyZWQ7CisjZWxzZSAvLyBGVExfVVNFU19CMwogICAgICAgICBMVmFsdWUgY2Fw
dHVyZWRBbGxvY2EgPSBtX291dC5hbGxvY2EoYXJyYXlUeXBlKG1fb3V0LmludDY0LCBtX2dyYXBo
Lm1fbmV4dE1hY2hpbmVMb2NhbCkpOwogICAgICAgICAKICAgICAgICAgbV9jYXB0dXJlZCA9IG1f
b3V0LmFkZCgKQEAgLTE3NiwxNiArMTg1LDE2IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAg
IG1fZnRsU3RhdGUuY2FwdHVyZWRTdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwogICAgICAg
ICBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9v
dXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmNhcHR1cmVkU3RhY2ttYXBJRCksCisgICAgICAgICAg
ICBtX291dC52b2lkVHlwZSwgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJ
bnQ2NChtX2Z0bFN0YXRlLmNhcHR1cmVkU3RhY2ttYXBJRCksCiAgICAgICAgICAgICBtX291dC5p
bnQzMlplcm8sIGNhcHR1cmVkQWxsb2NhKTsKLSNlbmRpZgorI2VuZGlmIC8vIEZUTF9VU0VfQjMK
IAogICAgICAgICBhdXRvIHByZU9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIGFueSBDYWxsVmFyYXJncyB0aGVuIHdlIG5l
ZWQgdG8gaGF2ZSBhIHNwaWxsIHNsb3QgZm9yIGl0LgogICAgICAgICBib29sIGhhc1ZhcmFyZ3Mg
PSBmYWxzZTsKICAgICAgICAgc2l6ZV90IG1heE51bWJlck9mQ2F0Y2hTcGlsbHMgPSAwOwotICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogcHJlT3JkZXIpIHsKKyAgICAgICAgZm9yIChE
Rkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogcHJlT3JkZXIpIHsKICAgICAgICAgICAgIGZvciAoTm9k
ZSogbm9kZSA6ICpibG9jaykgewogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgICAgICAgICAgICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CkBAIC0yNDQsMTUgKzI1MywxNSBA
QCBwdWJsaWM6CiAgICAgICAgIH0KIAogI2lmIEZUTF9VU0VTX0IzCi0gICAgICAgIGlmIChoYXNW
YXJhcmdzIHx8ICFoYXNWYXJhcmdzKQotICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgLy8g
RklYTUUKICNlbHNlCiAgICAgICAgIGlmIChoYXNWYXJhcmdzKSB7CiAgICAgICAgICAgICBMVmFs
dWUgdmFyYXJnc1NwaWxsU2xvdHMgPSBtX291dC5hbGxvY2EoCiAgICAgICAgICAgICAgICAgYXJy
YXlUeXBlKG1fb3V0LmludDY0LCBKU0NhbGxWYXJhcmdzOjpudW1TcGlsbFNsb3RzTmVlZGVkKCkp
KTsKICAgICAgICAgICAgIG1fZnRsU3RhdGUudmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEID0g
bV9zdGFja21hcElEcysrOwogICAgICAgICAgICAgbV9vdXQuY2FsbCgKLSAgICAgICAgICAgICAg
ICBtX291dC5zdGFja21hcEludHJpbnNpYygpLCBtX291dC5jb25zdEludDY0KG1fZnRsU3RhdGUu
dmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEKSwKKyAgICAgICAgICAgICAgICBtX291dC52b2lk
VHlwZSwgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwKKyAgICAgICAgICAgICAgICBtX291dC5j
b25zdEludDY0KG1fZnRsU3RhdGUudmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEKSwKICAgICAg
ICAgICAgICAgICBtX291dC5pbnQzMlplcm8sIHZhcmFyZ3NTcGlsbFNsb3RzKTsKICAgICAgICAg
fQogCkBAIC0yNjQsNyArMjczLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFycmF5VHlw
ZShtX291dC5pbnQ2NCwgbWF4TnVtYmVyT2ZDYXRjaFNwaWxscykpOwogICAgICAgICAgICAgbV9m
dGxTdGF0ZS5leGNlcHRpb25IYW5kbGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQgPSBtX3N0YWNrbWFw
SURzKys7CiAgICAgICAgICAgICBtX291dC5jYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0LnN0
YWNrbWFwSW50cmluc2ljKCksIG1fb3V0LmNvbnN0SW50NjQobV9mdGxTdGF0ZS5leGNlcHRpb25I
YW5kbGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQpLAorICAgICAgICAgICAgICAgIG1fb3V0LnZvaWRU
eXBlLCBtX291dC5zdGFja21hcEludHJpbnNpYygpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50NjQobV9mdGxTdGF0ZS5leGNlcHRpb25IYW5kbGluZ1NwaWxsU2xvdFN0YWNrbWFwSUQp
LAogICAgICAgICAgICAgICAgIG1fb3V0LmludDMyWmVybywgZXhjZXB0aW9uSGFuZGxpbmdWb2xh
dGlsZVJlZ2lzdGVyc1NwaWxsU2xvdHMpOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTI3Miw4ICsy
ODIsMTIgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGNyZWF0ZSBhbnkgYWxs
b2NhJ3MgYWZ0ZXIgdGhpcyBwb2ludCwgc2luY2UgdGhleSB3aWxsIGNlYXNlIHRvCiAgICAgICAg
IC8vIGJlIG1lbTJyZWcgY2FuZGlkYXRlcy4KICAgICAgICAgCisjaWYgRlRMX1VTRVNfQjMKKyAg
ICAgICAgbV9jYWxsRnJhbWUgPSBtX291dC5mcmFtZVBvaW50ZXIoKTsKKyNlbHNlCiAgICAgICAg
IG1fY2FsbEZyYW1lID0gbV9vdXQucHRyVG9JbnQoCi0gICAgICAgICAgICBtX291dC5jYWxsKG1f
b3V0LmZyYW1lQWRkcmVzc0ludHJpbnNpYygpLCBtX291dC5pbnQzMlplcm8pLCBtX291dC5pbnRQ
dHIpOworICAgICAgICAgICAgbV9vdXQuY2FsbChtX291dC5pbnRQdHIsIG1fb3V0LmZyYW1lQWRk
cmVzc0ludHJpbnNpYygpLCBtX291dC5pbnQzMlplcm8pLCBtX291dC5pbnRQdHIpOworI2VuZGlm
CiAgICAgICAgIG1fdGFnVHlwZU51bWJlciA9IG1fb3V0LmNvbnN0SW50NjQoVGFnVHlwZU51bWJl
cik7CiAgICAgICAgIG1fdGFnTWFzayA9IG1fb3V0LmNvbnN0SW50NjQoVGFnTWFzayk7CiAgICAg
ICAgIApAQCAtMjgzLDE4ICsyOTcsMjcgQEAgcHVibGljOgogICAgICAgICAgICAgZGlkT3ZlcmZs
b3dTdGFjaygpLCByYXJlbHkoc3RhY2tPdmVyZmxvdyksIHVzdWFsbHkoY2hlY2tBcmd1bWVudHMp
KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHN0YWNrT3ZlcmZsb3csIG1faGFu
ZGxlRXhjZXB0aW9ucyk7Ci0gICAgICAgIG1fb3V0LmNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50
UHRyKGNvZGVCbG9jaygpKSk7CisgICAgICAgIG1fb3V0LmNhbGwobV9vdXQudm9pZFR5cGUsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciksIG1fY2FsbEZy
YW1lLCBtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSkpOworI2lmIEZUTF9VU0VTX0IzCisg
ICAgICAgIC8vIEZJWE1FCisjZWxzZQogICAgICAgICBtX2Z0bFN0YXRlLmhhbmRsZVN0YWNrT3Zl
cmZsb3dFeGNlcHRpb25TdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwogICAgICAgICBtX291
dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29u
c3RJbnQ2NChtX2Z0bFN0YXRlLmhhbmRsZVN0YWNrT3ZlcmZsb3dFeGNlcHRpb25TdGFja21hcElE
KSwKKyAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLCBtX291dC5zdGFja21hcEludHJpbnNpYygp
LAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChtX2Z0bFN0YXRlLmhhbmRsZVN0YWNrT3Zl
cmZsb3dFeGNlcHRpb25TdGFja21hcElEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIo
TWFjcm9Bc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKSkpOworI2VuZGlmCiAgICAg
ICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRU
byhtX2hhbmRsZUV4Y2VwdGlvbnMsIGNoZWNrQXJndW1lbnRzKTsKKyNpZiBGVExfVVNFU19CMwor
ICAgICAgICAvLyBGSVhNRQorI2Vsc2UKICAgICAgICAgbV9mdGxTdGF0ZS5oYW5kbGVFeGNlcHRp
b25TdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwogICAgICAgICBtX291dC5jYWxsKAotICAg
ICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJbnQ2NChtX2Z0
bFN0YXRlLmhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQpLAorICAgICAgICAgICAgbV9vdXQudm9p
ZFR5cGUsIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCksIG1fb3V0LmNvbnN0SW50NjQobV9mdGxT
dGF0ZS5oYW5kbGVFeGNlcHRpb25TdGFja21hcElEKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50MzIoTWFjcm9Bc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKSkpOworI2VuZGlm
CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAgICAgICAgIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhjaGVja0FyZ3VtZW50cywgbG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpOwpAQCAt
MzQxLDcgKzM2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBtX291dC5qdW1wKGxv
d0Jsb2NrKG1fZ3JhcGguYmxvY2soMCkpKTsKICAgICAgICAgCi0gICAgICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBwcmVPcmRlcikKKyAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJs
b2NrIDogcHJlT3JkZXIpCiAgICAgICAgICAgICBjb21waWxlQmxvY2soYmxvY2spOwogCiAjaWYg
IUZUTF9VU0VTX0IzCkBAIC0zNTksMTIgKzM4MiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY3Jl
YXRlUGhpVmFyaWFibGVzKCkKICAgICB7CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0lu
ZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAg
ICAgREZHOjpCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAg
ICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXggPSBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgt
LTspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7
Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gUGhpKQorICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpICE9IERGRzo6UGhpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICBMVHlwZSB0eXBlOwogICAgICAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+ZmxhZ3MoKSAmIE5vZGVSZXN1bHRNYXNrKSB7CkBAIC0zODcsMTIgKzQxMCwxNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJh
ZCBQaGkgbm9kZSByZXN1bHQgdHlwZSIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgICAgICAgICBtX3BoaXMu
YWRkKG5vZGUsIG1fcHJvYy5hZGQ8VmFsdWU+KEIzOjpQaGksIHR5cGUsIE9yaWdpbihub2RlKSkp
OworI2Vsc2UKICAgICAgICAgICAgICAgICBtX3BoaXMuYWRkKG5vZGUsIG1fb3V0LmFsbG9jYSh0
eXBlKSk7CisjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICB2b2lkIGNvbXBpbGVCbG9jayhCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB2b2lkIGNvbXBpbGVC
bG9jayhERkc6OkJhc2ljQmxvY2sqIGJsb2NrKQogICAgIHsKICAgICAgICAgaWYgKCFibG9jaykK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1MSw3ICs0NzgsNyBAQCBwcml2YXRlOgogICAgICAg
ICAvLyB0aHJlYWQuIEZhaWxpbmcgdG8gZG8gdGhpcyB3b3VsZCByZXN1bHQgaW4gd2VpcmQgY3Jh
c2hlcyBkdWUgdG8gYSB2YWx1ZQogICAgICAgICAvLyBiZWluZyB1c2VkIGJ1dCBub3QgZGVmaW5l
ZC4gUmFjZSBjb25kaXRpb25zIEZUVyEKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBC
YXNpY0Jsb2NrKiB0YXJnZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAg
ICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJnZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywg
dGFyZ2V0KSkgewpAQCAtNDcxLDYgKzQ5OCw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAg
ICBtX25vZGUgPSBtX2hpZ2hCbG9jay0+YXQobm9kZUluZGV4KTsKICAgICAgICAgbV9vcmlnaW4g
PSBtX25vZGUtPm9yaWdpbjsKKyNpZiBGVExfVVNFU19CMworICAgICAgICBtX291dC5zZXRPcmln
aW4obV9ub2RlKTsKKyNlbmRpZgogICAgICAgICAKICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxh
dGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkxvd2VyaW5nICIsIG1fbm9kZSwg
IlxuIik7CkBAIC00ODAsMTAgKzUxMCwxMCBAQCBwcml2YXRlOgogICAgICAgICBtX2ludGVycHJl
dGVyLnN0YXJ0RXhlY3V0aW5nKCk7CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+
b3AoKSkgewotICAgICAgICBjYXNlIFVwc2lsb246CisgICAgICAgIGNhc2UgREZHOjpVcHNpbG9u
OgogICAgICAgICAgICAgY29tcGlsZVVwc2lsb24oKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFBoaToKKyAgICAgICAgY2FzZSBERkc6OlBoaToKICAgICAgICAgICAgIGNvbXBp
bGVQaGkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CkBA
IC01MDAsNyArNTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBEb3VibGVBc0ludDMyOgog
ICAgICAgICAgICAgY29tcGlsZURvdWJsZUFzSW50MzIoKTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFZhbHVlUmVwOgorICAgICAgICBjYXNlIERGRzo6VmFsdWVSZXA6CiAgICAg
ICAgICAgICBjb21waWxlVmFsdWVSZXAoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEludDUyUmVwOgpAQCAtNTIxLDcgKzU1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
UHV0U3RhY2s6CiAgICAgICAgICAgICBjb21waWxlUHV0U3RhY2soKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENoZWNrOgorICAgICAgICBjYXNlIERGRzo6Q2hlY2s6CiAgICAg
ICAgICAgICBjb21waWxlTm9PcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VG9UaGlzOgpAQCAtNTgwLDEzICs2MTAsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0
aE5lZ2F0ZToKICAgICAgICAgICAgIGNvbXBpbGVBcml0aE5lZ2F0ZSgpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQml0QW5kOgorICAgICAgICBjYXNlIERGRzo6Qml0QW5kOgog
ICAgICAgICAgICAgY29tcGlsZUJpdEFuZCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQml0T3I6CisgICAgICAgIGNhc2UgREZHOjpCaXRPcjoKICAgICAgICAgICAgIGNvbXBp
bGVCaXRPcigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQml0WG9yOgorICAg
ICAgICBjYXNlIERGRzo6Qml0WG9yOgogICAgICAgICAgICAgY29tcGlsZUJpdFhvcigpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQml0UlNoaWZ0OgpAQCAtODQwLDE2ICs4NzAs
MTYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICAgICAgICAg
IGNvbXBpbGVGb3J3YXJkVmFyYXJncygpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgSnVtcDoKKyAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgICAgICBjb21waWxlSnVt
cCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBj
YXNlIERGRzo6QnJhbmNoOgogICAgICAgICAgICAgY29tcGlsZUJyYW5jaCgpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU3dpdGNoOgorICAgICAgICBjYXNlIERGRzo6U3dpdGNo
OgogICAgICAgICAgICAgY29tcGlsZVN3aXRjaCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgUmV0dXJuOgorICAgICAgICBjYXNlIERGRzo6UmV0dXJuOgogICAgICAgICAgICAg
Y29tcGlsZVJldHVybigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRm9yY2VP
U1JFeGl0OgpAQCAtOTczLDM4ICsxMDAzLDQ5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBp
bGVVcHNpbG9uKCkKICAgICB7Ci0gICAgICAgIExWYWx1ZSBkZXN0aW5hdGlvbiA9IG1fcGhpcy5n
ZXQobV9ub2RlLT5waGkoKSk7Ci0gICAgICAgIAorICAgICAgICBMVmFsdWUgdXBzaWxvblZhbHVl
ID0gbnVsbHB0cjsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkg
ewogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAgICAgIG1fb3V0LnNldChsb3dE
b3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIHVwc2ls
b25WYWx1ZSA9IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEludDMyVXNlOgogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6Ci0g
ICAgICAgICAgICBtX291dC5zZXQobG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0
aW9uKTsKKyAgICAgICAgICAgIHVwc2lsb25WYWx1ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAg
ICAgICAgICBtX291dC5zZXQobG93SW50NTIobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9u
KTsKKyAgICAgICAgICAgIHVwc2lsb25WYWx1ZSA9IGxvd0ludDUyKG1fbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAg
Y2FzZSBLbm93bkJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBtX291dC5zZXQobG93Qm9vbGVhbiht
X25vZGUtPmNoaWxkMSgpKSwgZGVzdGluYXRpb24pOworICAgICAgICAgICAgdXBzaWxvblZhbHVl
ID0gbG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgotICAgICAgICAg
ICAgbV9vdXQuc2V0KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKKyAg
ICAgICAgICAgIHVwc2lsb25WYWx1ZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgotICAgICAgICAgICAgbV9v
dXQuc2V0KGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSksIGRlc3RpbmF0aW9uKTsKKyAgICAg
ICAgICAgIHVwc2lsb25WYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdXBzaWxvbiA9
IG1fb3V0LmFuY2hvcih1cHNpbG9uVmFsdWUpOworICAgICAgICBMVmFsdWUgcGhpTm9kZSA9IG1f
cGhpcy5nZXQobV9ub2RlLT5waGkoKSk7CisgICAgICAgIGFkZEluY29taW5nVG9QaGkocGhpTm9k
ZSwgdXNwaWxvbik7CisjZWxzZQorICAgICAgICBMVmFsdWUgZGVzdGluYXRpb24gPSBtX3BoaXMu
Z2V0KG1fbm9kZS0+cGhpKCkpOworICAgICAgICBtX291dC5zZXQodXBzaWxvblZhbHVlLCBkZXN0
aW5hdGlvbik7CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUGhpKCkKICAg
ICB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICAgICAgTFZhbHVlIHBoaU5vZGUgPSBtX3BoaXMuZ2V0
KG1fbm9kZS0+cGhpKCkpOworICAgICAgICBtX291dC5tX2Jsb2NrLT5hcHBlbmQocGhpTm9kZSk7
CisjZWxzZQogICAgICAgICBMVmFsdWUgc291cmNlID0gbV9waGlzLmdldChtX25vZGUpOwogICAg
ICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmZsYWdzKCkgJiBOb2RlUmVzdWx0TWFzaykg
ewpAQCAtMTAyNyw2ICsxMDY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlRG91YmxlQ29uc3Rh
bnQoKQpAQCAtMTQwMyw3ICsxNDQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7CiAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICB2bUNhbGwobV9vdXQub3Bl
cmF0aW9uKGZ1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAgICAgICAgICB2bUNh
bGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihmdW5jdGlvbiksIG1fY2FsbEZyYW1lLCB2
YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTE0MTksNyAr
MTQ2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9wZXJhdGlvbiA9
IG9wZXJhdGlvblZhbHVlQWRkOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCgKLSAgICAgICAg
ICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb24pLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAg
IG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsCiAg
ICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQyKCkpKSk7CiAgICAgfQogICAgIApAQCAtMTQyOCwxMyArMTQ3MCwxMyBAQCBwcml2
YXRlOgogICAgICAgICBMVmFsdWUgcmVzdWx0OwogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDMo
KSkgewogICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICAg
ICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQzKSwgbV9jYWxs
RnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSwKICAgICAgICAgICAgICAgICBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAg
ICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQyKSwgbV9jYWxsRnJhbWUsCisg
ICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJD
YXQyKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pLAogICAgICAgICAgICAgICAgIGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKSk7CiAgICAg
ICAgIH0KQEAgLTE1NzcsNyArMTYxOSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGFwcGVu
ZE9TUkV4aXRBcmd1bWVudHNGb3JQYXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1l
bnRzLCBFeGNlcHRpb25UeXBlOjpTdWJHZW5lcmF0b3IsIDMpOyAvLyBsZWZ0LCByaWdodCwgYW5k
IHJlc3VsdCBzaG93IHVwIGluIHRoZSBzdGFja21hcCBsb2NhdGlvbnMuCiAKLSAgICAgICAgICAg
IExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMo
KSwgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291
dC5pbnQ2NCwgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7CiAg
ICAgICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlS
ZWdDYWxsQ29udik7CiAKICAgICAgICAgICAgIG1fZnRsU3RhdGUuYXJpdGhTdWJzLmFwcGVuZChB
cml0aFN1YkRlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgbV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsCkBA
IC0yMjkyLDE3ICsyMzM0LDE3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzd2l0Y2gg
KG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMy
OgotICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVJbnQz
MiksIG1fY2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChtX291dC52b2lkVHlw
ZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUludDMyKSwgbV9jYWxsRnJhbWUsIGNl
bGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAg
ICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlRG91YmxlKSwg
bV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlRG91YmxlKSwgbV9jYWxsRnJhbWUsIGNlbGwp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6Ci0g
ICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3Vv
dXMpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CisgICAgICAgICAgICB2bUNhbGwobV9vdXQudm9pZFR5
cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzKSwgbV9jYWxsRnJh
bWUsIGNlbGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkFycmF5
U3RvcmFnZToKICAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKLSAgICAg
ICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdl
KSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBl
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKSwgbV9jYWxsRnJh
bWUsIGNlbGwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIGFycmF5IHR5cGUiKTsKQEAgLTIz
NjEsNyArMjQwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAg
ICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKSwKKyAgICAgICAg
ICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRHZW5l
cmljKSwKICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgdmFsdWUsCiAgICAgICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpXSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
QEAgLTI0MDcsNyArMjQ0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQo
MCwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZQdXRCeUlkKCkpKTsKICAgICAgICAgYXJndW1lbnRz
Lmluc2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsKIAotICAgICAgICBMVmFs
dWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQucGF0Y2hwb2ludFZvaWRJbnRyaW5zaWMoKSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnZvaWRUeXBl
LCBtX291dC5wYXRjaHBvaW50Vm9pZEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBz
ZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7
CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLnB1dEJ5SWRzLmFwcGVuZChQdXRCeUlkRGVz
Y3JpcHRvcigKQEAgLTI0NDksNyArMjQ5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24p
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgY2VsbCkpOworICAgICAgICAgICAgICAg
IHZtQ2FsbChtX291dC5pbnRQdHIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlUm9w
ZSksIG1fY2FsbEZyYW1lLCBjZWxsKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIApAQCAtMjYwNyw3ICsyNjQ5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nh
c2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWxBcnJheUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpOwor
ICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkdldEJ5VmFsQXJyYXlJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yNjU5LDcgKzI3
MDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGlu
ZGV4KSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uR2V0QnlWYWxBcnJheUludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkp
OwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTI3
NDksNyArMjc5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcnJh
eTo6R2VuZXJpYzogewogICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCi0gICAgICAgICAg
ICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsKSwgbV9jYWxsRnJhbWUsCisg
ICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRC
eVZhbCksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMjg5OCw3ICsyOTQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHZtQ2FsbCgKLSAgICAgICAgICAg
ICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAg
ICAgICAgbV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb24pLCBtX2NhbGxG
cmFtZSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKGNoaWxkMSksIGxvd0pTVmFsdWUoY2hp
bGQyKSwgbG93SlNWYWx1ZShjaGlsZDMpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMzEzNyw2ICszMTc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGFjY2Vzc29y
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgYXV0byB1aWQgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICB2bUNh
bGwoCisgICAgICAgICAgICBtX291dC52b2lkVHlwZSwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJh
dGlvbihtX25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1dEdldHRlckJ5
SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkKSwKICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBi
YXNlLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+YWNj
ZXNzb3JBdHRyaWJ1dGVzKCkpLCBhY2Nlc3Nvcik7CiAgICAgfQpAQCAtMzE0OCw3ICszMTkxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNldHRlciA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDMoKSk7CiAgICAgICAgIGF1dG8gdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXTsKICAgICAgICAgdm1DYWxsKAotICAgICAgICAgICAgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciksCisgICAgICAgICAgICBtX291
dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciksCiAg
ICAgICAgICAgICBtX2NhbGxGcmFtZSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSwgbV9v
dXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpKSwgZ2V0dGVyLCBzZXR0
ZXIpOwogCiAgICAgfQpAQCAtMzE1OSw2ICszMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZh
bHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExW
YWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgIHZtQ2Fs
bCgKKyAgICAgICAgICAgIG1fb3V0LnZvaWRUeXBlLAogICAgICAgICAgICAgbV9vdXQub3BlcmF0
aW9uKG1fbm9kZS0+b3AoKSA9PSBQdXRHZXR0ZXJCeVZhbCA/IG9wZXJhdGlvblB1dEdldHRlckJ5
VmFsIDogb3BlcmF0aW9uUHV0U2V0dGVyQnlWYWwpLAogICAgICAgICAgICAgbV9jYWxsRnJhbWUs
IGJhc2UsIHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmli
dXRlcygpKSwgYWNjZXNzb3IpOwogICAgIH0KQEAgLTMyMjMsNyArMzI2Nyw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZSk7CiAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChv
cGVyYXRpb24sIG1fY2FsbEZyYW1lLCB2YWx1ZSwgYmFzZSkpOworICAgICAgICAgICAgICAgIHZt
Q2FsbChtX291dC5pbnQ2NCwgb3BlcmF0aW9uLCBtX2NhbGxGcmFtZSwgdmFsdWUsIGJhc2UpKTsK
ICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0zMjgx
LDcgKzMzMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCksIG1fY2FsbEZyYW1lLCBiYXNlKSkp
OworICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
QXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoKSwgbV9jYWxsRnJhbWUsIGJhc2UpKSk7CiAgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMzMwNCw2ICszMzQ4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKGluaXRpYWxpemF0aW9uVmFsdWUuaXNVbmRl
ZmluZWQoKSB8fCBpbml0aWFsaXphdGlvblZhbHVlID09IGpzVERaVmFsdWUoKSk7CiAgICAgICAg
IGlmICh0YWJsZS0+c2luZ2xldG9uU2NvcGUoKS0+aXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAg
ICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gdm1DYWxsKAorICAgICAgICAgICAgICAgIG1fb3V0Lmlu
dDY0LAogICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBY3Rp
dmF0aW9uRGlyZWN0KSwgbV9jYWxsRnJhbWUsIHdlYWtQb2ludGVyKHN0cnVjdHVyZSksCiAgICAg
ICAgICAgICAgICAgc2NvcGUsIHdlYWtQb2ludGVyKHRhYmxlKSwgbV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoaW5pdGlhbGl6YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIHNldEpT
VmFsdWUoY2FsbFJlc3VsdCk7CkBAIC0zMzYxLDggKzM0MDYsOCBAQCBwcml2YXRlOgogICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5zaW5nbGV0b25G
dW5jdGlvbigpLT5pc1N0aWxsVmFsaWQoKSkgewogICAgICAgICAgICAgTFZhbHVlIGNhbGxSZXN1
bHQgPSBpc0Fycm93RnVuY3Rpb24KLSAgICAgICAgICAgICAgICA/IHZtQ2FsbChtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uTmV3QXJyb3dGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vh
a1BvaW50ZXIoZXhlY3V0YWJsZSksIHRoaXNWYWx1ZSkKLSAgICAgICAgICAgICAgICA6IHZtQ2Fs
bChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2Nv
cGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICA/IHZtQ2FsbCht
X291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fycm93RnVuY3Rpb24pLCBt
X2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpLCB0aGlzVmFsdWUpCisg
ICAgICAgICAgICAgICAgOiB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25OZXdGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0
YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMzUyNyw3ICszNTcyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uQ3JlYXRlU2NvcGVkQXJndW1lbnRzKSwgbV9jYWxsRnJhbWUsCisgICAgICAg
ICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFy
Z3VtZW50cyksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgd2Vha1BvaW50ZXIoCiAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSksCiAgICAgICAgICAgICBnZXRBcmd1bWVudHNT
dGFydCgpLCBnZXRBcmd1bWVudHNMZW5ndGgoKS52YWx1ZSwgZ2V0Q3VycmVudENhbGxlZSgpLCBz
Y29wZSk7CkBAIC0zNTM4LDcgKzM1ODMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNy
ZWF0ZUNsb25lZEFyZ3VtZW50cygpCiAgICAgewogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFy
Z3VtZW50cyksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMpLCBtX2NhbGxGcmFtZSwKICAg
ICAgICAgICAgIHdlYWtQb2ludGVyKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+b3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0
dXJlKCkpLAogICAgICAgICAgICAgZ2V0QXJndW1lbnRzU3RhcnQoKSwgZ2V0QXJndW1lbnRzTGVu
Z3RoKCkudmFsdWUsIGdldEN1cnJlbnRDYWxsZWUoKSk7CkBAIC0zNjA3LDcgKzM2NTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgaWYgKCFtX25vZGUtPm51bUNoaWxkcmVuKCkpIHsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdFbXB0eUFycmF5KSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAg
ICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdFbXB0eUFycmF5
KSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0
dXJlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNjI4LDcgKzM2NzMs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc2NyYXRjaFNpemUp
LCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSkpOwogICAg
ICAgICAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheSksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAg
bV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheSksIG1fY2FsbEZy
YW1lLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuY29u
c3RJbnRQdHIoYnVmZmVyKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+
bnVtQ2hpbGRyZW4oKSkpOwogICAgICAgICAKQEAgLTM2NjksNyArMzcxNCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAgICAg
ICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKSwgbV9jYWxsRnJh
bWUsCisgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSks
CiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNvbnN0YW50cygpKSkp
OwogICAgIH0KQEAgLTM3ODEsNyArMzgyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291
dC5jb25zdEludFB0cigKICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2Up
KSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOwotICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6
ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVuZ3RoKSk7CisgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
TmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVu
Z3RoKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlKCkKQEAgLTM4NzIsNyArMzkxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG1fbm9kZS0+b3AoKSA9PSBUb1N0cmluZyA/IG9wZXJh
dGlvblRvU3RyaW5nT25DZWxsIDogb3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxs
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBtX291dC5v
cGVyYXRpb24obV9ub2RlLT5vcCgpID09IFRvU3RyaW5nID8gb3BlcmF0aW9uVG9TdHJpbmcgOiBv
cGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgY29udmVydGVkUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChvcGVyYXRpb24sIG1fY2Fs
bEZyYW1lLCB2YWx1ZSkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY29udmVydGVkUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChtX291dC5pbnQ2NCwgb3BlcmF0aW9uLCBtX2NhbGxG
cmFtZSwgdmFsdWUpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CkBAIC0zOTA4LDcgKzM5NTMsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oaXNPYmplY3RDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICByZXN1
bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvblRvUHJpbWl0aXZlKSwgbV9jYWxsRnJhbWUsIHZhbHVlKSkpOworICAgICAg
ICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSks
IG1fY2FsbEZyYW1lLCB2YWx1ZSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CkBAIC00MDQ2LDcgKzQwOTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAg
IFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgND4gcmVzdWx0czsKICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcpLAorICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcpLAogICAgICAgICAg
ICAgbV9jYWxsRnJhbWUsIGNoYXIxNkJpdC52YWx1ZSgpKSkpOwogICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKQEAgLTQwODgsNyArNDEzMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRl
eCkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkdldEJ5VmFsU3RyaW5nSW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSkpOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpA
QCAtNDYzMyw3ICs0Njc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgw
LCBtX291dC5jb25zdEludDMyKHNpemVPZkNhbGwoKSkpOwogICAgICAgICBhcmd1bWVudHMuaW5z
ZXJ0KDAsIG1fb3V0LmNvbnN0SW50NjQoc3RhY2ttYXBJRCkpOwogICAgICAgICAKLSAgICAgICAg
TFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygp
LCBhcmd1bWVudHMpOworICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50
NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAg
ICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1XZWJLaXRKU0NhbGxD
b252KTsKICAgICAgICAgCiAgICAgICAgIG1fZnRsU3RhdGUuanNDYWxscy5hcHBlbmQoSlNDYWxs
KHN0YWNrbWFwSUQsIG1fbm9kZSwgY29kZU9yaWdpbkRlc2NyaXB0aW9uT2ZDYWxsU2l0ZSgpKSk7
CkBAIC00NjczLDggKzQ3MTgsNyBAQCBwcml2YXRlOgogICAgICAgICBleGl0QXJndW1lbnRzLmlu
c2VydCgwLCBtX291dC5jb25zdEludDMyKHRhaWxDYWxsLmVzdGltYXRlZFNpemUoKSkpOwogICAg
ICAgICBleGl0QXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQp
KTsKIAotICAgICAgICBMVmFsdWUgY2FsbCA9Ci0gICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0
LnBhdGNocG9pbnRWb2lkSW50cmluc2ljKCksIGV4aXRBcmd1bWVudHMpOworICAgICAgICBMVmFs
dWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0LnBhdGNocG9pbnRWb2lk
SW50cmluc2ljKCksIGV4aXRBcmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxp
bmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIG1fb3V0LnVu
cmVhY2hhYmxlKCk7CiAKQEAgLTQ3MjYsNyArNDc3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFy
Z3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMihzaXplT2ZJQ0ZvcihtX25vZGUpKSk7
CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElE
KSk7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQucGF0
Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7CisgICAgICAgIExWYWx1ZSBjYWxs
ID0gbV9vdXQuY2FsbChtX291dC5pbnQ2NCwgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2lj
KCksIGFyZ3VtZW50cyk7CiAgICAgICAgIHNldEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24o
Y2FsbCwgTExWTUNDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmpzQ2Fs
bFZhcmFyZ3Nlcy5hcHBlbmQoSlNDYWxsVmFyYXJncyhzdGFja21hcElELCBtX25vZGUsIGNvZGVP
cmlnaW5EZXNjcmlwdGlvbk9mQ2FsbFNpdGUoKSkpOwpAQCAtNDc0OSw3ICs0NzkzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgTFZhbHVlIGpzQXJndW1lbnRzID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBsZW5ndGggPSB2bUNhbGwoCi0gICAg
ICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncyksIG1fY2FsbEZy
YW1lLCBqc0FyZ3VtZW50cywKKyAgICAgICAgICAgIG1fb3V0LmludDMyLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncyksIG1fY2FsbEZyYW1lLCBqc0FyZ3VtZW50cywKICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoZGF0YS0+b2Zmc2V0KSk7CiAgICAgICAgIAogICAg
ICAgICAvLyBGSVhNRTogVGhlcmUgaXMgYSBjaGFuY2UgdGhhdCB3ZSB3aWxsIGNhbGwgYW4gZWZm
ZWN0ZnVsIGxlbmd0aCBwcm9wZXJ0eSB0d2ljZS4gVGhpcyBpcyBzYWZlCkBAIC00NzczLDcgKzQ4
MTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoMykpOwogICAg
ICAgICAKICAgICAgICAgdm1DYWxsKAotICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkxvYWRWYXJhcmdzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBtX291dC52b2lkVHlw
ZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzKSwgbV9jYWxsRnJhbWUsCiAg
ICAgICAgICAgICBtX291dC5jYXN0VG9JbnQzMihtYWNoaW5lU3RhcnQpLCBqc0FyZ3VtZW50cywg
bV9vdXQuY29uc3RJbnQzMihkYXRhLT5vZmZzZXQpLAogICAgICAgICAgICAgbGVuZ3RoLCBtX291
dC5jb25zdEludDMyKGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pKTsKICAgICB9CkBAIC00OTY5LDcg
KzUwMTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhuZWVkUmVzb2x1dGlvbiwgcmVzb2x2ZWQpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVu
ZChtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25SZXNvbHZlUm9wZSksIG1fY2FsbEZyYW1lLCBzdHJpbmdWYWx1ZSkpKTsKKyAgICAg
ICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
UmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgc3RyaW5nVmFsdWUpKSk7CiAgICAgICAgICAgICBt
X291dC5qdW1wKHJlc29sdmVkKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8ocmVzb2x2ZWQsIGlzOEJpdCk7CkBAIC01MDk2LDYgKzUxNDAsOSBAQCBwcml2YXRlOgog
ICAgIAogICAgIHZvaWQgY29tcGlsZUludmFsaWRhdGlvblBvaW50KCkKICAgICB7CisjaWYgRlRM
X1VTRVNfQjMKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisjZWxzZSAvLyBG
VExfVVNFU19CMwogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEludmFsaWRhdGlvbiBwb2ludCB3aXRoIGF2YWlsYWJpbGl0
eTogIiwgYXZhaWxhYmlsaXR5TWFwKCksICJcbiIpOwogCkBAIC01MTEyLDYgKzUxNTksNyBAQCBw
cml2YXRlOgogICAgICAgICBjYWxsU3RhY2ttYXAoZXhpdERlc2NyaXB0b3IsIGFyZ3VtZW50cyk7
CiAgICAgICAgIAogICAgICAgICBleGl0RGVzY3JpcHRvci5tX2lzSW52YWxpZGF0aW9uUG9pbnQg
PSB0cnVlOworI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiAgICAgfQogICAgIAogICAgIHZvaWQgY29t
cGlsZUlzVW5kZWZpbmVkKCkKQEAgLTUzMDQsNyArNTM1Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9vdXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksCisgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSwgbV9vdXQu
Y29uc3RJbnQzMihzaXplT2ZJbigpKSwKICAgICAgICAgICAgICAgICAgICAgY29uc3ROdWxsKG1f
b3V0LnJlZjgpLCBtX291dC5jb25zdEludDMyKDEpLCBjZWxsKTsKIApAQCAtNTMxNiw3ICs1MzY0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfSAKIAotICAgICAgICBzZXRK
U1ZhbHVlKHZtQ2FsbChtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2VuZXJpY0luKSwgbV9jYWxs
RnJhbWUsIGNlbGwsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZW5l
cmljSW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkp
OwogI2VuZGlmCiAgICAgfQogCkBAIC01NDIzLDcgKzU0NzEsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmVxdWFsKAog
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsKKyAg
ICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKSk7CiAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNTQ1Nyw3ICs1NTA1LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvciht
X291dC5lcXVhbCgKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odHJ1ZSkpKSwgCi0gICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwg
aW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGlu
ZGV4KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
QEAgLTU0NzUsNyArNTUyMyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBwcm9wZXJ0
eSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxs
KG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgcHJvcGVydHkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVIYXNTdHJ1
Y3R1cmVQcm9wZXJ0eSgpCkBAIC01NTAxLDcgKzU1NDksNyBAQCBwcml2YXRlOgogICAgICAgICBW
YWx1ZUZyb21CbG9jayB3cm9uZ1N0cnVjdHVyZVJlc3VsdCA9IG1fb3V0LmFuY2hvcigKICAgICAg
ICAgICAgIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwo
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSksIG1fY2FsbEZyYW1l
LCBiYXNlLCBwcm9wZXJ0eSkpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwobV9vdXQuaW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgcHJvcGVydHkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
IAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTU1
NDgsNyArNTU5Niw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nh
c2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dDYXNlUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgdm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25HZXRCeVZhbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOworICAgICAgICAg
ICAgdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwpAQCAtNTU2NCw3ICs1NjEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVHZXRQ
cm9wZXJ0eUVudW1lcmF0b3IoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKSwgbV9jYWxsRnJhbWUsIGJhc2Up
KTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IpLCBtX2NhbGxGcmFtZSwgYmFzZSkpOwog
ICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldEVudW1lcmF0b3JTdHJ1Y3R1cmVQbmFtZSgpCkBA
IC01NjIyLDcgKzU2NzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVRvSW5kZXhTdHJp
bmcoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25Ub0luZGV4U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGluZGV4KSk7CisgICAgICAgIHNldEpTVmFs
dWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9JbmRleFN0
cmluZyksIG1fY2FsbEZyYW1lLCBpbmRleCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBp
bGVDaGVja1N0cnVjdHVyZUltbWVkaWF0ZSgpCkBAIC01ODQ0LDcgKzU4OTIsNyBAQCBwcml2YXRl
OgogICAgICAgICAvLyBkbyBhbnkgc3RhY2sgY2hlY2tzLgogICAgICAgICAKICAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9j
a3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1f
Z3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghYmxvY2sp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTYxOTYsNiArNjI0
NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAocHJldmlvdXNTdHJ1Y3R1cmUtPmNv
dWxkSGF2ZUluZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgICAgIHJldHVybiB2bUNhbGwoCisg
ICAgICAgICAgICAgICAgbV9vdXQuaW50UHRyLAogICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJh
dGlvbigKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRv
SGF2ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkpLAogICAgICAgICAgICAgICAg
IG1fY2FsbEZyYW1lLCBvYmplY3QpOwpAQCAtNjIxNiw3ICs2MjY1LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIGlmIChwcmV2aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkg
ewogICAgICAgICAgICAgTFZhbHVlIG5ld0FsbG9jU2l6ZSA9IG1fb3V0LmNvbnN0SW50UHRyKG5l
d1NpemUpOyAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gdm1DYWxsKG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWFsbG9jYXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlT
dG9yYWdlKSwgbV9jYWxsRnJhbWUsIG9iamVjdCwgbmV3QWxsb2NTaXplKTsKKyAgICAgICAgICAg
IHJldHVybiB2bUNhbGwobV9vdXQuaW50UHRyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVh
bGxvY2F0ZUJ1dHRlcmZseVRvR3Jvd1Byb3BlcnR5U3RvcmFnZSksIG1fY2FsbEZyYW1lLCBvYmpl
Y3QsIG5ld0FsbG9jU2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhTaXplSW1wbChuZXdTaXplKTsKQEAg
LTYzMDQsNyArNjM1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFyZ3VtZW50cy5pbnNlcnQoMCwg
bV9vdXQuY29uc3RJbnQzMihzaXplT2ZHZXRCeUlkKCkpKTsKICAgICAgICAgYXJndW1lbnRzLmlu
c2VydCgwLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsgCiAKLSAgICAgICAgTFZhbHVl
IGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1
bWVudHMpOworICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1f
b3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRJ
bnN0cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7CiAg
ICAgICAgIAogICAgICAgICBtX2Z0bFN0YXRlLmdldEJ5SWRzLmFwcGVuZChHZXRCeUlkRGVzY3Jp
cHRvcihzdGFja21hcElELCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgdWlkKSk7CkBAIC02NTMx
LDcgKzY1ODAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1
bHQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwoCi0gICAgICAgICAgICBtX291
dC5vcGVyYXRpb24oaGVscGVyRnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpKSk7
CisgICAgICAgICAgICBtX291dC5ib29sZWFuLCBtX291dC5vcGVyYXRpb24oaGVscGVyRnVuY3Rp
b24pLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlv
biwgbGFzdE5leHQpOwpAQCAtNzAzMiw3ICs3MDgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8ob3V0T2ZCb3Vu
ZHNDYXNlLCBob2xlQ2FzZSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKHNsb3dQYXRoRnVu
Y3Rpb24pLAorICAgICAgICAgICAgICAgICAgICBtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0
aW9uKHNsb3dQYXRoRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwg
YmFzZSwgaW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNzMwOCw3ICs3MzU3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDM2OQogICAgICAgICAKICAgICAgICAgTFZhbHVlIGJyYW5jaE9mZnNldCA9IHZtQ2FsbCgKLSAg
ICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRCcmFu
Y2hPZmZzZXQpLAorICAgICAgICAgICAgbV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25Td2l0Y2hTdHJpbmdBbmRHZXRCcmFuY2hPZmZzZXQpLAogICAgICAgICAgICAgbV9jYWxs
RnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpLCBzdHJpbmcp
OwogICAgICAgICAKICAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jaygp
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CkBAIC03NTMz
LDcgKzc1ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9u
KTsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9vdXQu
b3BlcmF0aW9uKHRvSW50MzIpLCBkb3VibGVWYWx1ZSkpKTsKKyAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlvbih0
b0ludDMyKSwgZG91YmxlVmFsdWUpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwpAQCAtNzU2Miw3ICs3NjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlv
bik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0g
ICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbih0b0ludDMyKSwgZG91YmxlVmFs
dWUpKTsKKyAgICAgICAgICAgIG1fb3V0LmNhbGwobV9vdXQuaW50MzIsIG1fb3V0Lm9wZXJhdGlv
bih0b0ludDMyKSwgZG91YmxlVmFsdWUpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CkBAIC03Njc4LDcgKzc3MjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGFwcGVuZE9T
UkV4aXRBcmd1bWVudHNGb3JQYXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1lbnRz
LCBFeGNlcHRpb25UeXBlOjpMYXp5U2xvd1BhdGgsIHVzZXJBcmd1bWVudHMuc2l6ZSgpICsgMSk7
IC8vIEFsbCB0aGUgYXJndW1lbnRzIHBsdXMgdGhlIHJlc3VsdCBzaG93IHVwIGluIHRoZSBzdGFj
a21hcCBsb2NhdGlvbnMuCiAKLSAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0
LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOworICAgICAgICBMVmFsdWUg
Y2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJp
bnNpYygpLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRJbnN0cnVjdGlvbkNhbGxpbmdDb252ZW50
aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8
TGF6eVNsb3dQYXRoTGlua2VyVGFzaz4gbGlua2VyID0KQEAgLTgxMTcsNyArODE2Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGRvdWJsZUNhc2UsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxsKAot
ICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRv
SW50NTIpLCBib3hlZFZhbHVlKTsKKyAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1MiksIGJveGVkVmFsdWUpOwog
ICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShib3hlZFZh
bHVlKSwgZWRnZSwgU3BlY0ludDMyIHwgU3BlY0ludDUyQXNEb3VibGUsCiAgICAgICAgICAgICBt
X291dC5lcXVhbChwb3NzaWJsZVJlc3VsdCwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpub3RJ
bnQ1MikpKTsKQEAgLTgxMzMsNyArODE4Miw3IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGRvdWJs
ZVRvU3RyaWN0SW50NTIoRWRnZSBlZGdlLCBMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBM
VmFsdWUgcG9zc2libGVSZXN1bHQgPSBtX291dC5jYWxsKAotICAgICAgICAgICAgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyKSwgdmFsdWUpOworICAgICAgICAg
ICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Db252ZXJ0RG91YmxlVG9J
bnQ1MiksIHZhbHVlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBkb3Vi
bGVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNJbnQ1MkFzRG91YmxlLAogICAgICAgICAgICAgbV9v
dXQuZXF1YWwocG9zc2libGVSZXN1bHQsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6bm90SW50
NTIpKSk7CkBAIC04ODYwLDIyICs4OTA5LDE0IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgdm1DYWxsKExWYWx1ZSBmdW5jdGlv
biwgQXJncy4uLiBhcmdzKQorICAgIExWYWx1ZSB2bUNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1
bmN0aW9uLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBjYWxsUHJlZmxpZ2h0KCk7Ci0g
ICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5jYWxsKGZ1bmN0aW9uLCBhcmdzLi4uKTsKKyAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmNhbGwodHlwZSwgZnVuY3Rpb24sIGFyZ3MuLi4p
OwogICAgICAgICBjYWxsQ2hlY2soKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgdm1DYWxsTm9F
eGNlcHRpb25zKExWYWx1ZSBmdW5jdGlvbiwgQXJncy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAg
Y2FsbFByZWZsaWdodCgpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuY2FsbChmdW5j
dGlvbiwgYXJncy4uLik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAgICAgdm9p
ZCBjYWxsUHJlZmxpZ2h0KENvZGVPcmlnaW4gY29kZU9yaWdpbikKICAgICB7CiAgICAgICAgIENh
bGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLmFk
ZENvZGVPcmlnaW4oY29kZU9yaWdpbik7CkBAIC04OTA5LDcgKzg5NTAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2FsbENoZWNrKCkKICAgICB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VFeGNl
cHRpb25GdXp6KCkpCi0gICAgICAgICAgICBtX291dC5jYWxsKG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25FeGNlcHRpb25GdXp6KSwgbV9jYWxsRnJhbWUpOworICAgICAgICAgICAgbV9vdXQuY2Fs
bChtX291dC52b2lkVHlwZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enop
LCBtX2NhbGxGcmFtZSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgZXhjZXB0aW9uID0gbV9v
dXQubG9hZDY0KG1fb3V0LmFic29sdXRlKHZtKCkuYWRkcmVzc09mRXhjZXB0aW9uKCkpKTsKICAg
ICAgICAgTFZhbHVlIGhhZEV4Y2VwdGlvbiA9IG1fb3V0Lm5vdFplcm82NChleGNlcHRpb24pOwpA
QCAtODk1Nyw3ICs4OTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIAotICAgIExCYXNpY0Jsb2NrIGxvd0Jsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAg
IExCYXNpY0Jsb2NrIGxvd0Jsb2NrKERGRzo6QmFzaWNCbG9jayogYmxvY2spCiAgICAgewogICAg
ICAgICByZXR1cm4gbV9ibG9ja3MuZ2V0KGJsb2NrKTsKICAgICB9CkBAIC05MDA4LDYgKzkwNDks
MTkgQEAgcHJpdmF0ZToKICAgICAgICAgYXBwZW5kT1NSRXhpdERlc2NyaXB0b3Ioa2luZCwgaXNF
eGNlcHRpb25IYW5kbGVyID8gRXhjZXB0aW9uVHlwZTo6Q0NhbGxFeGNlcHRpb24gOiBFeGNlcHRp
b25UeXBlOjpOb25lLCBsb3dWYWx1ZSwgaGlnaFZhbHVlLCBvcmlnaW4pOwogICAgICAgICBPU1JF
eGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3IgPSBtX2Z0bFN0YXRlLmppdENvZGUtPm9zckV4
aXREZXNjcmlwdG9ycy5sYXN0KCk7CiAKKyNpZiBGVExfVVNFU19CMworICAgICAgICBTdGFja21h
cEFyZ3VtZW50TGlzdCBhcmd1bWVudHM7CisKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
ID0gZXhpdERlc2NyaXB0b3IubV9jb2RlT3JpZ2luOworCisgICAgICAgIGJ1aWxkRXhpdEFyZ3Vt
ZW50cyhleGl0RGVzY3JpcHRvciwgYXJndW1lbnRzLCBsb3dWYWx1ZSwgY29kZU9yaWdpbik7CisK
KyAgICAgICAgbV9vdXQuY2hlY2soCisgICAgICAgICAgICBmYWlsQ29uZGl0aW9uLCBhcmd1bWVu
dHMsCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgICAgIGppdC5vb3BzKCk7CisgICAg
ICAgICAgICB9KTsKKyNlbHNlIC8vIEZUTF9VU0VTX0IzCiAgICAgICAgIGlmIChmYWlsQ29uZGl0
aW9uID09IG1fb3V0LmJvb2xlYW5UcnVlKSB7CiAgICAgICAgICAgICBlbWl0T1NSRXhpdENhbGwo
ZXhpdERlc2NyaXB0b3IsIGxvd1ZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkwMjgs
OCArOTA4MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwogICAg
ICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cisj
ZW5kaWYgLy8gRlRMX1VTRVNfQjMKICAgICB9Ci0gICAgCisKKyNpZiAhRlRMX1VTRVNfQjMKICAg
ICB2b2lkIGVtaXRPU1JFeGl0Q2FsbChPU1JFeGl0RGVzY3JpcHRvciYgZXhpdERlc2NyaXB0b3Is
IEZvcm1hdHRlZFZhbHVlIGxvd1ZhbHVlKQogICAgIHsKICAgICAgICAgU3RhY2ttYXBBcmd1bWVu
dExpc3QgYXJndW1lbnRzOwpAQCAtOTA0MCw2ICs5MDk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIGNhbGxTdGFja21hcChleGl0RGVzY3JpcHRvciwgYXJndW1lbnRzKTsKICAgICB9
CisjZW5kaWYKICAgICAKICAgICB2b2lkIGJ1aWxkRXhpdEFyZ3VtZW50cygKICAgICAgICAgT1NS
RXhpdERlc2NyaXB0b3ImIGV4aXREZXNjcmlwdG9yLCBTdGFja21hcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwKQEAgLTkxMDQsMTUgKzkxNjEsMTcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKworI2lmICFG
VExfVVNFU19CMwogICAgIHZvaWQgY2FsbFN0YWNrbWFwKE9TUkV4aXREZXNjcmlwdG9yJiBleGl0
RGVzY3JpcHRvciwgU3RhY2ttYXBBcmd1bWVudExpc3QmIGFyZ3VtZW50cykKICAgICB7CiAgICAg
ICAgIGV4aXREZXNjcmlwdG9yLm1fc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAgICAg
ICAgYXJndW1lbnRzLmluc2VydCgwLCBtX291dC5jb25zdEludDMyKE1hY3JvQXNzZW1ibGVyOjpt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpKTsKICAgICAgICAgYXJndW1lbnRzLmluc2VydCgwLCBt
X291dC5jb25zdEludDY0KGV4aXREZXNjcmlwdG9yLm1fc3RhY2ttYXBJRCkpOwogICAgICAgICAK
LSAgICAgICAgbV9vdXQuY2FsbChtX291dC5zdGFja21hcEludHJpbnNpYygpLCBhcmd1bWVudHMp
OworICAgICAgICBtX291dC5jYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5zdGFja21hcEludHJp
bnNpYygpLCBhcmd1bWVudHMpOwogICAgIH0KKyNlbmRpZiAvLyAhRlRMX1VTRVNfQjMKICAgICAK
ICAgICBFeGl0VmFsdWUgZXhpdFZhbHVlRm9yQXZhaWxhYmlsaXR5KAogICAgICAgICBTdGFja21h
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBjb25zdCBIYXNoTWFwPE5vZGUqLCBFeGl0VGltZU9i
amVjdE1hdGVyaWFsaXphdGlvbio+JiBtYXAsCkBAIC05NDc1LDcgKzk1MzQsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgdWludDMyX3Qgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsK
ICAgICAgICAgbV9mdGxTdGF0ZS5wcm9iZXMuYXBwZW5kKFByb2JlRGVzY3JpcHRvcihzdGFja21h
cElELCBwcm9iZUZ1bmMpKTsKLSAgICAgICAgbV9vdXQuY2FsbChtX291dC5zdGFja21hcEludHJp
bnNpYygpLCBtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpLCBtX291dC5jb25zdEludDMyKHNp
emVPZlByb2JlKCkpKTsKKyAgICAgICAgbV9vdXQuY2FsbChtX291dC52b2lkVHlwZSwgbV9vdXQu
c3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSwgbV9vdXQu
Y29uc3RJbnQzMihzaXplT2ZQcm9iZSgpKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTk0ODYsNyAr
OTU0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmFzaChCbG9ja0luZGV4IGJsb2NrSW5kZXgs
IHVuc2lnbmVkIG5vZGVJbmRleCkKICAgICB7CiAjaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgICAg
IG1fb3V0LmNhbGwobV9vdXQub3BlcmF0aW9uKGZ0bFVucmVhY2hhYmxlKSk7CisgICAgICAgIG1f
b3V0LmNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihmdGxVbnJlYWNoYWJsZSkp
OwogICAgICAgICBVTlVTRURfUEFSQU0oYmxvY2tJbmRleCk7CiAgICAgICAgIFVOVVNFRF9QQVJB
TShub2RlSW5kZXgpOwogI2Vsc2UKQEAgLTk0OTcsNiArOTU1Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBDUkFTSCgpOwogI2Vsc2UKICAgICAgICAgbV9vdXQuY2FsbCgKKyAgICAgICAgICAg
IG1fb3V0LnZvaWRUeXBlLAogICAgICAgICAgICAgbV9vdXQuaW50VG9QdHIoCiAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIoZnRsVW5yZWFjaGFibGUpLAogICAgICAgICAgICAgICAg
IHBvaW50ZXJUeXBlKApAQCAtOTUxOCwxMCArOTU3OCwxMyBAQCBwcml2YXRlOgogICAgIFN0YXRl
JiBtX2Z0bFN0YXRlOwogICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkgbV9oZWFwczsKICAgICBP
dXRwdXQgbV9vdXQ7CisjaWYgRlRMX1VTRVNfQjMKKyAgICBQcm9jZWR1cmUmIG1fcHJvYzsKKyNl
bmRpZgogICAgIAogICAgIExCYXNpY0Jsb2NrIG1fcHJvbG9ndWU7CiAgICAgTEJhc2ljQmxvY2sg
bV9oYW5kbGVFeGNlcHRpb25zOwotICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIExCYXNpY0Jsb2Nr
PiBtX2Jsb2NrczsKKyAgICBIYXNoTWFwPERGRzo6QmFzaWNCbG9jayosIExCYXNpY0Jsb2NrPiBt
X2Jsb2NrczsKICAgICAKICAgICBMVmFsdWUgbV9jYWxsRnJhbWU7CiAgICAgTFZhbHVlIG1fY2Fw
dHVyZWQ7CkBAIC05NTQ5LDggKzk2MTIsOCBAQCBwcml2YXRlOgogICAgIAogICAgIEluUGxhY2VB
YnN0cmFjdFN0YXRlIG1fc3RhdGU7CiAgICAgQWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJz
dHJhY3RTdGF0ZT4gbV9pbnRlcnByZXRlcjsKLSAgICBCYXNpY0Jsb2NrKiBtX2hpZ2hCbG9jazsK
LSAgICBCYXNpY0Jsb2NrKiBtX25leHRIaWdoQmxvY2s7CisgICAgREZHOjpCYXNpY0Jsb2NrKiBt
X2hpZ2hCbG9jazsKKyAgICBERkc6OkJhc2ljQmxvY2sqIG1fbmV4dEhpZ2hCbG9jazsKICAgICBM
QmFzaWNCbG9jayBtX25leHRMb3dCbG9jazsKIAogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47CkBA
IC05NTY4LDYgKzk2MzEsMTAgQEAgcHJpdmF0ZToKIAogdm9pZCBsb3dlckRGR1RvTExWTShTdGF0
ZSYgc3RhdGUpCiB7CisjaWYgRlRMX1VTRVNfQjMKKyAgICBzdGF0ZS5wcm9jID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisjZW5kaWYKKwogICAgIExvd2VyREZHVG9MTFZNIGxvd2Vy
aW5nKHN0YXRlKTsKICAgICBsb3dlcmluZy5sb3dlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPdXRwdXQuY3BwCmluZGV4IDJmZjgxYTNlNjMxY2I1ZDQyNTc1MzdhMDkyNzczYzk0
N2I4YjZjY2YuLjI2MWNmYjVjMDcxNzA1MTE1NmE5NDliYjQ5OWNlYWY1OTY0YzBlYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAgLTc5LDYgKzc5LDcgQEAgTFZh
bHVlIE91dHB1dDo6c2Vuc2libGVEb3VibGVUb0ludChMVmFsdWUgdmFsdWUpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoaXNYODYoKSk7CiAgICAgcmV0dXJuIGNhbGwoCisgICAgICAgIGludDMyLAog
ICAgICAgICB4ODZTU0UyQ3Z0VFNEMlNJSW50cmluc2ljKCksCiAgICAgICAgIGluc2VydEVsZW1l
bnQoCiAgICAgICAgICAgICBpbnNlcnRFbGVtZW50KGdldFVuZGVmKHZlY3RvclR5cGUoZG91Ymxl
VHlwZSwgMikpLCB2YWx1ZSwgaW50MzJaZXJvKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCmluZGV4IDNiZTU2NTI5ODRkMWM2MmI3MWJjYjJiOWE4M2M2MTBiZmU1YzA0YWMuLmQw
YjQxYzk4MTE4ZjIzYjk5NDYxNDVhYjAyNWI3MDJlNjI1NDViYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaApAQCAtMTQ1LDY4ICsxNDUsNjggQEAgcHVibGljOgogCiAgICAg
TFZhbHVlIGNlaWw2NChMVmFsdWUgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxs
KGNlaWw2NEludHJpbnNpYygpLCBvcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuIGNhbGwoZG91Ymxl
VHlwZSwgY2VpbDY0SW50cmluc2ljKCksIG9wZXJhbmQpOwogICAgIH0KICAgICBMVmFsdWUgY3Rs
ejMyKExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5kKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNhbGwoY3RsejMySW50cmluc2ljKCksIHhPcGVyYW5kLCB5T3BlcmFuZCk7CisgICAgICAg
IHJldHVybiBjYWxsKGludDMyLCBjdGx6MzJJbnRyaW5zaWMoKSwgeE9wZXJhbmQsIHlPcGVyYW5k
KTsKICAgICB9CiAgICAgTFZhbHVlIGFkZFdpdGhPdmVyZmxvdzMyKExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbChhZGRXaXRoT3ZlcmZsb3czMklu
dHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CisgICAgICAgIHJldHVybiBjYWxsKGludDMyLCBhZGRX
aXRoT3ZlcmZsb3czMkludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CiAgICAgfQogICAgIExWYWx1
ZSBzdWJXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGNhbGwoc3ViV2l0aE92ZXJmbG93MzJJbnRyaW5zaWMoKSwgbGVmdCwgcmln
aHQpOworICAgICAgICByZXR1cm4gY2FsbChpbnQzMiwgc3ViV2l0aE92ZXJmbG93MzJJbnRyaW5z
aWMoKSwgbGVmdCwgcmlnaHQpOwogICAgIH0KICAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93MzIo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsKG11
bFdpdGhPdmVyZmxvdzMySW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgcmV0dXJu
IGNhbGwoaW50MzIsIG11bFdpdGhPdmVyZmxvdzMySW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsK
ICAgICB9CiAgICAgTFZhbHVlIGFkZFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbChhZGRXaXRoT3ZlcmZsb3c2NEludHJp
bnNpYygpLCBsZWZ0LCByaWdodCk7CisgICAgICAgIHJldHVybiBjYWxsKGludDY0LCBhZGRXaXRo
T3ZlcmZsb3c2NEludHJpbnNpYygpLCBsZWZ0LCByaWdodCk7CiAgICAgfQogICAgIExWYWx1ZSBz
dWJXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNhbGwoc3ViV2l0aE92ZXJmbG93NjRJbnRyaW5zaWMoKSwgbGVmdCwgcmlnaHQp
OworICAgICAgICByZXR1cm4gY2FsbChpbnQ2NCwgc3ViV2l0aE92ZXJmbG93NjRJbnRyaW5zaWMo
KSwgbGVmdCwgcmlnaHQpOwogICAgIH0KICAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93NjQoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsKG11bFdp
dGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGNh
bGwoaW50NjQsIG11bFdpdGhPdmVyZmxvdzY0SW50cmluc2ljKCksIGxlZnQsIHJpZ2h0KTsKICAg
ICB9CiAgICAgTFZhbHVlIGRvdWJsZUFicyhMVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gY2FsbChkb3VibGVBYnNJbnRyaW5zaWMoKSwgdmFsdWUpOworICAgICAgICByZXR1cm4g
Y2FsbChkb3VibGVUeXBlLCBkb3VibGVBYnNJbnRyaW5zaWMoKSwgdmFsdWUpOwogICAgIH0KIAog
ICAgIExWYWx1ZSBkb3VibGVTaW4oTFZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGNhbGwoZG91YmxlU2luSW50cmluc2ljKCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGNhbGwo
ZG91YmxlVHlwZSwgZG91YmxlU2luSW50cmluc2ljKCksIHZhbHVlKTsKICAgICB9CiAgICAgTFZh
bHVlIGRvdWJsZUNvcyhMVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbChk
b3VibGVDb3NJbnRyaW5zaWMoKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gY2FsbChkb3VibGVU
eXBlLCBkb3VibGVDb3NJbnRyaW5zaWMoKSwgdmFsdWUpOwogICAgIH0KIAogICAgIExWYWx1ZSBk
b3VibGVQb3coTFZhbHVlIHhPcGVyYW5kLCBMVmFsdWUgeU9wZXJhbmQpCiAgICAgewotICAgICAg
ICByZXR1cm4gY2FsbChkb3VibGVQb3dJbnRyaW5zaWMoKSwgeE9wZXJhbmQsIHlPcGVyYW5kKTsK
KyAgICAgICAgcmV0dXJuIGNhbGwoZG91YmxlVHlwZSwgZG91YmxlUG93SW50cmluc2ljKCksIHhP
cGVyYW5kLCB5T3BlcmFuZCk7CiAgICAgfQogCiAgICAgTFZhbHVlIGRvdWJsZVBvd2koTFZhbHVl
IHhPcGVyYW5kLCBMVmFsdWUgeU9wZXJhbmQpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbChk
b3VibGVQb3dpSW50cmluc2ljKCksIHhPcGVyYW5kLCB5T3BlcmFuZCk7CisgICAgICAgIHJldHVy
biBjYWxsKGRvdWJsZVR5cGUsIGRvdWJsZVBvd2lJbnRyaW5zaWMoKSwgeE9wZXJhbmQsIHlPcGVy
YW5kKTsKICAgICB9CiAKICAgICBMVmFsdWUgZG91YmxlU3FydChMVmFsdWUgdmFsdWUpCiAgICAg
ewotICAgICAgICByZXR1cm4gY2FsbChkb3VibGVTcXJ0SW50cmluc2ljKCksIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIGNhbGwoZG91YmxlVHlwZSwgZG91YmxlU3FydEludHJpbnNpYygpLCB2YWx1
ZSk7CiAgICAgfQogCiAgICAgTFZhbHVlIGRvdWJsZUxvZyhMVmFsdWUgdmFsdWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gY2FsbChkb3VibGVMb2dJbnRyaW5zaWMoKSwgdmFsdWUpOworICAgICAg
ICByZXR1cm4gY2FsbChkb3VibGVUeXBlLCBkb3VibGVMb2dJbnRyaW5zaWMoKSwgdmFsdWUpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKSB7IHJldHVy
biBpc1g4NigpOyB9CkBAIC0zNzUsMTEgKzM3NSwxMSBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGZl
bmNlQWNxUmVsKCkgeyByZXR1cm4gZmVuY2UoTExWTUF0b21pY09yZGVyaW5nQWNxdWlyZVJlbGVh
c2UpOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KLSAgICBMVmFs
dWUgY2FsbChMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyByZXR1
cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24sIHZlY3Rvcik7IH0KLSAgICBMVmFsdWUg
Y2FsbChMVmFsdWUgZnVuY3Rpb24pIHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0
aW9uKTsgfQotICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEpIHsg
cmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxKTsgfQorICAgIExWYWx1
ZSBjYWxsKExUeXBlLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3Rvcikg
eyByZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24sIHZlY3Rvcik7IH0KKyAgICBM
VmFsdWUgY2FsbChMVHlwZSwgTFZhbHVlIGZ1bmN0aW9uKSB7IHJldHVybiBidWlsZENhbGwobV9i
dWlsZGVyLCBmdW5jdGlvbik7IH0KKyAgICBMVmFsdWUgY2FsbChMVHlwZSwgTFZhbHVlIGZ1bmN0
aW9uLCBMVmFsdWUgYXJnMSkgeyByZXR1cm4gYnVpbGRDYWxsKG1fYnVpbGRlciwgZnVuY3Rpb24s
IGFyZzEpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBMVmFsdWUgY2Fs
bChMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFyZ3MpIHsgcmV0dXJuIGJ1
aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmdzLi4uKTsgfQorICAgIExWYWx1
ZSBjYWxsKExUeXBlLCBMVmFsdWUgZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFyZ3Mp
IHsgcmV0dXJuIGJ1aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxLCBhcmdzLi4uKTsg
fQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KICAgICBMVmFsdWUg
b3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikKQEAgLTQzMSw3ICs0MzEsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCB0cmFwKCkKICAgICB7Ci0gICAgICAgIGNhbGwodHJhcEludHJp
bnNpYygpKTsKKyAgICAgICAgY2FsbCh2b2lkVHlwZSwgdHJhcEludHJpbnNpYygpKTsKICAgICB9
CiAgICAgCiAgICAgVmFsdWVGcm9tQmxvY2sgYW5jaG9yKExWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggNGIwNmFkNWI4MmViMTgzMDg5YTAxM2U3
NTE3ZWYzNGExNWUzYWEyNS4uMDMwN2UwZWQwNWM1YTI1NjFjYzRlZjgyYjVhYTJlNWZmY2Y4YzBl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTQ2LDExICs0Niw2
IEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgLCBtb2R1bGUoMCkKICAgICAsIGZ1
bmN0aW9uKDApCiAgICAgLCBnZW5lcmF0ZWRGdW5jdGlvbigwKQotICAgICwgaGFuZGxlU3RhY2tP
dmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQoVUlOVF9NQVgpCi0gICAgLCBoYW5kbGVFeGNlcHRp
b25TdGFja21hcElEKFVJTlRfTUFYKQotICAgICwgY2FwdHVyZWRTdGFja21hcElEKFVJTlRfTUFY
KQotICAgICwgdmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEKFVJTlRfTUFYKQotICAgICwgZXhj
ZXB0aW9uSGFuZGxpbmdTcGlsbFNsb3RTdGFja21hcElEKFVJTlRfTUFYKQogICAgICwgdW53aW5k
RGF0YVNlY3Rpb24oMCkKICAgICAsIHVud2luZERhdGFTZWN0aW9uU2l6ZSgwKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCmluZGV4IDIyNzY5NDM2YjBkNWNiNmJkOTAyNDg1MGY0
ZDgyMjhlNjdiODk5NjguLjU4ZWYyNzY2NjFkMTRkZjQzM2U0ZjRkOTNlNWIzNTk0ZjE2YmM0YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgKQEAgLTc1LDExICs3NSwxOSBAQCBw
dWJsaWM6CiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CiAgICAgR2VuZXJhdGVkRnVuY3Rp
b24gZ2VuZXJhdGVkRnVuY3Rpb247CiAgICAgSklURmluYWxpemVyKiBmaW5hbGl6ZXI7Ci0gICAg
dW5zaWduZWQgaGFuZGxlU3RhY2tPdmVyZmxvd0V4Y2VwdGlvblN0YWNrbWFwSUQ7Ci0gICAgdW5z
aWduZWQgaGFuZGxlRXhjZXB0aW9uU3RhY2ttYXBJRDsKLSAgICB1bnNpZ25lZCBjYXB0dXJlZFN0
YWNrbWFwSUQ7Ci0gICAgdW5zaWduZWQgdmFyYXJnc1NwaWxsU2xvdHNTdGFja21hcElEOwotICAg
IHVuc2lnbmVkIGV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90U3RhY2ttYXBJRDsKKyNpZiBGVExf
VVNFU19CMworICAgIExWYWx1ZSBoYW5kbGVTdGFja092ZXJmbG93RXhjZXB0aW9uVmFsdWUgeyBu
dWxscHRyIH07CisgICAgTFZhbHVlIGhhbmRsZUV4Y2VwdGlvblZhbHVlIHsgbnVsbHB0ciB9Owor
ICAgIExWYWx1ZSBjYXB0dXJlZFZhbHVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSB2YXJhcmdz
U3BpbGxTbG90c1ZhbHVlIHsgbnVsbHB0ciB9OworICAgIExWYWx1ZSBleGNlcHRpb25IYW5kbGlu
Z1NwaWxsU2xvdFZhbHVlIHsgbnVsbHB0ciB9OworI2Vsc2UgLy8gRlRMX1VTRVNfQjMKKyAgICB1
bnNpZ25lZCBoYW5kbGVTdGFja092ZXJmbG93RXhjZXB0aW9uU3RhY2ttYXBJRCB7IFVJTlRfTUFY
IH07CisgICAgdW5zaWduZWQgaGFuZGxlRXhjZXB0aW9uU3RhY2ttYXBJRCB7IFVJTlRfTUFYIH07
CisgICAgdW5zaWduZWQgY2FwdHVyZWRTdGFja21hcElEIHsgVUlOVF9NQVggfTsKKyAgICB1bnNp
Z25lZCB2YXJhcmdzU3BpbGxTbG90c1N0YWNrbWFwSUQgeyBVSU5UX01BWCB9OworICAgIHVuc2ln
bmVkIGV4Y2VwdGlvbkhhbmRsaW5nU3BpbGxTbG90U3RhY2ttYXBJRCB7IFVJTlRfTUFYIH07Cisj
ZW5kaWYgLy8gRlRMX1VTRV9CMwogICAgIFNlZ21lbnRlZFZlY3RvcjxHZXRCeUlkRGVzY3JpcHRv
cj4gZ2V0QnlJZHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFB1dEJ5SWREZXNjcmlwdG9yPiBwdXRC
eUlkczsKICAgICBTZWdtZW50ZWRWZWN0b3I8Q2hlY2tJbkRlc2NyaXB0b3I+IGNoZWNrSW5zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMV2VpZ2h0LmgKaW5kZXggMzRlYjM3YzkxNGFhMTk2ZDRk
MjMyYzYwZGRjNjMwNmY2OGFjMmE0MC4uYmM0OGEyYTAwNjg3ZTYyZWVhMjZhNTYxZmUxZmU0ODRk
ZWRjYjViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExXZWlnaHQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFdlaWdodC5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkIzRnJlcXVlbmN5Q2xh
c3MuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIApAQCAtNDksNiArNTAsMTAgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBmbG9hdCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworI2lmIEZUTF9VU0VTX0IzCisgICAgQjM6OkZyZXF1
ZW5jeUNsYXNzIGZyZXF1ZW5jeUNsYXNzKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKSA/IEIzOjpG
cmVxdWVuY3lDbGFzczo6Tm9ybWFsIDogQjM6OkZyZXF1ZW5jeUNsYXNzOjpSYXJlOyB9CisjZW5k
aWYKICAgICAKICAgICB1bnNpZ25lZCBzY2FsZVRvVG90YWwoZG91YmxlIHRvdGFsKSBjb25zdAog
ICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>