<?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>165931</bug_id>
          
          <creation_ts>2016-12-15 16:39:51 -0800</creation_ts>
          <short_desc>Stop reinterpret_casting UBreakIterators to the undefined type TextBreakIterator</short_desc>
          <delta_ts>2016-12-16 08:20:43 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1260367</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 16:39:51 -0800</bug_when>
    <thetext>Stop reinterpret_casting UBreakIterators to the undefined type TextBreakIterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260371</commentid>
    <comment_count>1</comment_count>
      <attachid>297253</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 16:46:29 -0800</bug_when>
    <thetext>Created attachment 297253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260407</commentid>
    <comment_count>2</comment_count>
      <attachid>297263</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 17:26:01 -0800</bug_when>
    <thetext>Created attachment 297263
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260421</commentid>
    <comment_count>3</comment_count>
      <attachid>297267</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 17:46:35 -0800</bug_when>
    <thetext>Created attachment 297267
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260453</commentid>
    <comment_count>4</comment_count>
      <attachid>297277</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 18:24:40 -0800</bug_when>
    <thetext>Created attachment 297277
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260468</commentid>
    <comment_count>5</comment_count>
      <attachid>297253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 18:38:20 -0800</bug_when>
    <thetext>Comment on attachment 297253
Patch

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

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:83
&gt; +    for (int wordStart = ubrk_current(iterator); wordStart &gt;= 0; ) {
&gt; +        int wordEnd = ubrk_next(iterator);

Looks like this file needs to include &lt;unicode/ubrk.h&gt; to compile on Windows:

C:\cygwin\home\buildbot\WebKit\Source\WebCore\editing\TextCheckingHelper.cpp(82): error C3861: &apos;ubrk_current&apos;: identifier not found (compiling source file C:\cygwin\home\buildbot\WebKit\Source\WebCore\editing\EditingAllInOne.cpp) [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]
C:\cygwin\home\buildbot\WebKit\Source\WebCore\editing\TextCheckingHelper.cpp(83): error C3861: &apos;ubrk_next&apos;: identifier not found (compiling source file C:\cygwin\home\buildbot\WebKit\Source\WebCore\editing\EditingAllInOne.cpp) [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260470</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 18:38:57 -0800</bug_when>
    <thetext>Oh, I see you were already trying to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260502</commentid>
    <comment_count>7</comment_count>
      <attachid>297289</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 19:45:13 -0800</bug_when>
    <thetext>Created attachment 297289
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260514</commentid>
    <comment_count>8</comment_count>
      <attachid>297295</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 20:24:58 -0800</bug_when>
    <thetext>Created attachment 297295
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260518</commentid>
    <comment_count>9</comment_count>
      <attachid>297296</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 20:41:45 -0800</bug_when>
    <thetext>Created attachment 297296
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260519</commentid>
    <comment_count>10</comment_count>
      <attachid>297297</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-15 20:42:37 -0800</bug_when>
    <thetext>Created attachment 297297
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260524</commentid>
    <comment_count>11</comment_count>
      <attachid>297297</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 21:20:10 -0800</bug_when>
    <thetext>Comment on attachment 297297
Patch for committing

Clearing flags on attachment: 297297

Committed r209907: &lt;http://trac.webkit.org/changeset/209907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260584</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-12-16 08:20:43 -0800</bug_when>
    <thetext>Build fix at https://trac.webkit.org/changeset/209913</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297253</attachid>
            <date>2016-12-15 16:46:29 -0800</date>
            <delta_ts>2016-12-15 17:06:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165931-20161215164536.patch</filename>
            <type>text/plain</type>
            <size>54180</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFiNDdhZDgzNTRkODA1Zjc2NGVhNTU4
NzkxM2I5MDY2NTRhZjk3MTYuLmEwNzhjOTY4MjNjNWE1NWY3MzY5MGYxYWQ3YTQ0ZDI0ODZlMGFj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV1RG
OjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnRha2UpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnB1dCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
Ojpjb21wdXRlSW5kZXhFbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6b3BlbkxpbmVCcmVha0l0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OmdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpjYWNoZU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAg
ICAgICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgIChX
VEY6OnRleHRCcmVha0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTGFz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRl
eHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxv
d2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0N1cnJlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjpsYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6OnNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6dXBkYXRlUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cHJpb3JDb250ZXh0TGVuZ3RoKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yOjpvcGVyYXRvciBVQnJlYWtJdGVyYXRvciopOgorICAgICAgICAoV1RGOjpOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBE
ZWxldGVkLgorCiAyMDE2LTEyLTE1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRl
eC5ydT4KIAogICAgICAgICBBZGRlZCBtaXNzaW5nIG92ZXJyaWRlIGFuZCBmaW5hbCBzcGVjaWZp
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNmMyMjQ5ZDQ4N2EwMzlmOTZjNmM5ZWQ4Yjc2YmJhYmZjY2EwNTFj
NS4uODg0NTQyMWFjMzgxZTIyYmMwNGQwNTliZDk4NGYxODI1NDcwMjQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDU3IEBACiAyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0
ZXJhdG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9DaGFyYWN0
ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFwcGVu
ZERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbmRNaXNzcGVsbGluZ3MpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0b3JGb3JNYXhP
ZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjppc0xvZ2ljYWxTdGFydE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjppc2xvZ2ljYWxFbmRPZldvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0U2VudGVuY2VC
b3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjplbmRTZW50ZW5jZUJvdW5kYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRTZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRleHRCcmVha0F0T3JQcmVjZWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Ym91
bmRlZFRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodENsaXBUb1dv
cmRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpv
ZmZzZXRGb3JQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRW5k
V29yZEJvdW5kYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0JyZWFrTGluZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2Fi
bGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uTG9vc2VseSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
Q2FwaXRhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNr
d2FyZERlbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRPZmZzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0
b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oOgorCisyMDE2LTEy
LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKICAgICAgICAg
W0NvY29hXSBJbXBsZW1lbnQgZm9udC1zeW50aGVzaXM6IHNtYWxsLWNhcHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg5MgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKaW5kZXggNTYzMTgzMzJiMjRiNjNiOGYwN2YwOWQ1ODhhZGY2ZjkwNmJhODY3ZS4uOTJjZDBj
M2FkNjAxN2IwMjQ4ZjFiN2VlOWYzMGQ0OGE3MGUwZWZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0ZXJh
dG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBv
cnQubW06CisKIDIwMTYtMTEtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIER1bXBSZW5kZXJUcmVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAppbmRl
eCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJjZTZhYTIzNzczLi5jMGUwZTU3ZGU5YjZi
ZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRh
a2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2Rl
LCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKICAgICB7
CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbWFrZUxvY2Fs
ZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKIAotICAgICAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAgICAgICBVQnJlYWtJdGVyYXRvciogaXRlcmF0
b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fcG9vbFtpXS5maXJzdCA9PSBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1fcG9v
bFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3IpKTsKICAgICAgICAg
aWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkpIHsKQEAgLTk3LDggKzk3LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJyZWFrSXRlcmF0b3IqPiwg
Y2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWlj
U3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0
cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKKyAgICBIYXNoTWFwPFVC
cmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKIAogICAgIGZy
aWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9y
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIzMTE3ZmJiMTZkZjU5NTdhLi5kNzg1NjJl
MmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhmZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSAiU3RyaW5nVmlldy5oIgog
CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAgICAgICAgcmV0dXJuIHRleHRCcmVha0ZvbGxv
d2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5kZXgpOworICAgICAgICByZXR1cm4gdWJya19m
b2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2luZGV4KTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmluZGV4IDA1YTUxOTU2
MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkzMjcuLjFkYTBhYjYxOGE1OTk5ODhkYmRkMDc2
YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIEl0ZXJhdG9y
IGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJy
ZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBj
dXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsKICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRl
cnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3Blbih0eXBlLCBsb2NhbGUsIDAs
IDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gdWJya19v
cGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMpOwogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsg
aXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7
CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykKIAotc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hh
ciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9y
V2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMpCiB7CiAgICAgVVBhcnNlRXJyb3IgcGFy
c2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1bGVzKTsKICAgICBhdXRvIHVwY29udmVy
dGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0
b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwg
JnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAm
cGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VD
Q0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAl
cyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOwogICAgIHJldHVy
biBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKIAog
Ly8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0
VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBz
dHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihVQnJlYWtJ
dGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTgwLDcg
KzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgfQogCiAgICAgICAgIFVF
cnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRV
VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJrX3NldFVUZXh0KCZpdGVyYXRvciwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVz
ICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5
LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3Io
VGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgdXRleHRfY2xvc2Uo
dGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VGV4dCgmaXRlcmF0b3Is
IHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7
CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVy
YXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3Ry
aW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0KIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJh
dG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWdu
ZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0
QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3
IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRo
QnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVGV4dEJyZWFrSXRl
cmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYg
aXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFr
SXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVi
cmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlm
IChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKICAgICAgICAgICAgIExPR19FUlJPUigidWJy
a19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJh
dG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAg
ICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDYsMjUgKzE0NiwyNSBAQCBzdGF0aWMg
VGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJl
YWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMgaXRlcmF0b3JzCiAKLVRleHRCcmVha0l0ZXJh
dG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK1VCcmVha0l0ZXJhdG9y
KiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJl
YWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1dPUkQpOwogICAgIGlmICghc3Rh
dGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7
CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVu
Y2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOworICAg
IHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5p
dGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwogICAgIGlmICghc3RhdGljU2VudGVuY2VC
cmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBzZXRU
ZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBz
dHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMg
YmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1bGVzIG9mIElDVSA1NwpAQCAtMjkx
LDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3Io
U3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIhIXNhZmVfcmV2ZXJzZTsiCiAgICAgICAgICIh
IXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBz
dGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVz
KGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVu
dEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CiAjZWxzZSAv
LyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRoZSBzcGVjaWFsIFRoYWkgY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRv
ciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJL
X0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJz
b3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAi
dGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKCFzdGF0aWNDdXJzb3JN
b3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICszMDMsMTYgQEAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHNl
dFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciwgc3RyaW5nKTsK
IH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlv
ckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0
ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29u
c3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKLSAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS50YWtl
KGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExp
bmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NK
Syk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBy
ZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CiB9CiAKLXZvaWQgcmVsZWFzZUxpbmVC
cmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3ZvaWQgcmVsZWFzZUxp
bmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlRf
QVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAgLTc4MCw3ICs3ODAsNyBAQCBib29sIGlzQ0pL
TG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitV
QnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKICAgICBV
QnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5M
aW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXQK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrSXRlcik7CisgICAgcmV0dXJuIHVicmtJdGVy
OwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqJiBp
dGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciomIGl0
ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9yKiB1YnJrSXRlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVicmtJdGVyKTsKICAgICB1YnJrX2Nsb3NlKHVi
cmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBzdGQ6OmF0b21p
YzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgPSBB
VE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0aWMgc3RkOjphdG9taWM8VUJyZWFrSXRlcmF0
b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yID0gQVRPTUlDX1ZBUl9JTklUKG51
bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRCcmVha0l0ZXJhdG9yKiBnZXROb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRpYyBpbmxpbmUgVUJyZWFrSXRlcmF0b3IqIGdl
dE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQogewogICAgIGlmIChhdXRvICpyZXMg
PSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLmV4Y2hhbmdlKG51bGxwdHIsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAgICByZXR1cm4gcmVzOwogICAgIHJldHVybiBp
bml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9y
KiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lkIGNhY2hlTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2FjaGVNZSkKIHsKICAgICBpZiAoYXV0byAqb2xk
ID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvci5leGNoYW5nZShjYWNoZU1lLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAgICAgdWJya19jbG9zZShyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7CisgICAgICAgIHVicmtfY2xvc2Uob2xkKTsKIH0K
IAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKQEAgLTg0OCw1MiArODQ4LDExIEBAIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpzd2FwKG1faXRlcmF0b3IsIG90aGVyLm1faXRl
cmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGltcGxlbWVuYXRpb24uCiAKLWludCB0ZXh0QnJl
YWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtf
Zmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0K
LWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBy
ZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Ip
Ci17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9y
Kj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZXZpb3VzKFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19wcmV2aW91cyhyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZWNl
ZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJu
IHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
ciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3Iq
IGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVybiB1YnJrX2ZvbGxvd2luZyhyZWludGVy
cHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4
dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJu
IHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
KTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGlu
dCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0aW9uKTsKLX0KLQotYm9vbCBpc1dv
cmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQorYm9vbCBpc1dvcmRUZXh0
QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQogewotICAgIGludCBydWxlU3RhdHVzID0g
dWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKGl0ZXJhdG9y
KTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKIH0KIApAQCAtOTIw
LDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyBzdHJp
bmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyA9IDA7Ci0gICAg
d2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3IpICE9IFRleHRCcmVha0RvbmUpCisgICAgd2hp
bGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJSS19ET05FKQogICAgICAgICArK251bUdyYXBo
ZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdyYXBoZW1lQ2x1c3RlcnM7CiB9CkBAIC05NDgs
MTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFwaGVtZQogICAgIH0KIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzOyArK2kpIHsKLSAgICAgICAg
aWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRleHRCcmVha0RvbmUpCisgICAgICAgIGlm
ICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktfRE9ORSkKICAgICAgICAgICAgIHJldHVybiBz
dHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVybiB0ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9y
KTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0ZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggOGFmYjU1
ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAwNmE5ZS4uYmNmNDRjMDdhNGVjOTFiNTE0Njdj
MjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgVGV4dEJy
ZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9u
bHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2Yg
YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBlbnVtIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0cmljdCB9OwpAQCAtMzUsMjcgKzMzLDE3
IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JNb2RlIHsgRGVmYXVsdCwgTG9vc2UsIE5v
cm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBVSSBjb252ZW50aW9ucy4gT25lIG5vdGFibGUg
ZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJlbnQKIC8vIGZyb20gY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXJzLCBzZWUgYnVnIDI0MzQyLgog
Ly8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBhbmQgc2VsZWN0aW9uIG1hbmlwdWxhdGlv
bnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVy
YXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
VGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4
dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VM
aW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciomKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJ
dGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVh
a0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha05leHQoVGV4dEJy
ZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrUHJldmlvdXMo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrQ3Vy
cmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJl
YWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwot
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
Kik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNo
YXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKik7CitVQnJlYWtJdGVyYXRvciogb3Bl
bkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFVC
cmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRCcmVhayhVQnJlYWtJdGVyYXRvciopOwog
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NKS0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1YmxpYzoKIAogICAgIFVDaGFyIGxhc3RDaGFyYWN0
ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlv
cl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3Ig
Y29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0dXJuIG1fcHJpb3JDb250ZXh0WzFdOwogICAg
IH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJhY3RlcigpIGNvbnN0CiAgICAgewotICAg
ICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBwcmlvciBjb250ZXh0IGxlbmd0aCIpOwogICAg
ICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CiAgICAgfQogCiAgICAgdm9pZCBzZXRQcmlv
ckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQogICAgIHsKLSAgICAgICAg
Q09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4
dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVC
cmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAg
bV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7CiAgICAgICAgIG1fcHJpb3JDb250ZXh0
WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0ZVByaW9yQ29udGV4dChVQ2hhciBs
YXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4
dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBtX3ByaW9yQ29udGV4dFsx
XTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBsYXN0OwogICAgIH0KIAogICAgIHZvaWQg
cmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBl
Y3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0
ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAw
OwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7CiAgICAgfQpAQCAtMTIwLDcgKzEwOCw3
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgoKSBjb25zdAogICAg
IHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09N
UElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJy
ZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVh
a0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgaWYg
KG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAgICAgICArK3ByaW9yQ29udGV4dExlbmd0aDsK
ICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFswXSkKQEAgLTEzMiw3ICsxMjAsNyBAQCBw
dWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZp
b3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKICAgICAv
LyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUg
cHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZwogICAgIC8vIHByZXZpb3VzbHkgc3Rv
cmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBn
ZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorICAgIFVCcmVha0l0ZXJhdG9yKiBnZXQo
dW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHByaW9y
Q29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0eSk7CiAgICAgICAgIGNvbnN0IFVD
aGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRb
cHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDogMDsKQEAgLTE2NCw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgcHJpb3JD
b250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwogICAgIEF0
b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7
IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsK
ICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQgeyBudWxscHRyIH07CiAgICAg
TGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVm
YXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoIHsgMCB9OwpA
QCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgogCiAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYpOwogCi0gICAgb3Bl
cmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQor
ICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7
IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKKyAgICBV
QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07CiAKIC8vIENvdW50cyB0aGUgbnVtYmVyIG9m
IGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWlyIG9yIGEgc2VxdWVuY2UKQEAgLTIw
NSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0lu
R3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNpZ25lZAogdXNpbmcgV1RGOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9yTW9kZTsKIHVzaW5n
IFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKLXVzaW5nIFdURjo6VGV4dEJy
ZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OmlzV29y
ZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA5N2ZhNDVm
MTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYzN2QwLi40ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUy
YTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBA
IC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIC8vIFdlIG5lZWQgYXQg
bGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVhZCB0byBhY2NvdW50IGZvciBVVEYtMTYgc3Vy
cm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVuZ3RoTGltaXQgPCBjaGFyYWN0ZXJMZW5ndGgp
IHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3
KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNoYXJhY3Rlckxlbmd0aExpbWl0ICsgMiA+IGNo
YXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5ndGggOiBjaGFyYWN0ZXJMZW5ndGhMaW1pdCAr
IDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVhayhpdCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQp
KQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3RoTGltaXQgPSB0ZXh0QnJlYWtQcmVjZWRpbmco
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICAgICAgaWYgKCF1YnJrX2lzQm91bmRhcnko
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAgICAgICAgICAgIGNoYXJhY3Rlckxlbmd0aExp
bWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKICAgICB9CiAK
ICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDBlNWRjZDYzYWE5OTYxZjIyNzA1NzQzZTBm
ZTA0NTk1M2M3YjFhZjEuLmMwZTMyZjUxOTQwZjA4ODYzYTUzNjI5N2I3ODk5N2Y5MWU3ODIzNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAg
LTc2LDExICs3NiwxMSBAQCBzdGF0aWMgdm9pZCBmaW5kR3JhbW1hdGljYWxFcnJvcnMoVGV4dENo
ZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZQogCiBzdGF0aWMgdm9pZCBm
aW5kTWlzc3BlbGxpbmdzKFRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4
dCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7Ci0gICAgVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKCFp
dGVyYXRvcikKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAoaW50IHdvcmRTdGFydCA9IHRleHRC
cmVha0N1cnJlbnQoaXRlcmF0b3IpOyB3b3JkU3RhcnQgPj0gMDsgKSB7Ci0gICAgICAgIGludCB3
b3JkRW5kID0gdGV4dEJyZWFrTmV4dChpdGVyYXRvcik7CisgICAgZm9yIChpbnQgd29yZFN0YXJ0
ID0gdWJya19jdXJyZW50KGl0ZXJhdG9yKTsgd29yZFN0YXJ0ID49IDA7ICkgeworICAgICAgICBp
bnQgd29yZEVuZCA9IHVicmtfbmV4dChpdGVyYXRvcik7CiAgICAgICAgIGlmICh3b3JkRW5kIDwg
MCkKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKaW5kZXggODNjYWU0YzM4NjYyYmE4MzlmZjFmN2FlNzhjZTExNmE2NmYwNzNiZi4uMTUz
ZjVlYTRmNGE3NDU0MDI3NWZhNWNhNGNmZmRhNjRlZDFiZTg2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMzcsOSArMzcsMTAgQEAKICNpbmNsdWRlICJSZW5k
ZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFy
aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCisjaW5jbHVk
ZSA8dW5pY29kZS91YnJrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0y
ODUsNyArMjg2LDcgQEAgc3RhdGljIGNvbnN0IElubGluZUJveCogbG9naWNhbGx5TmV4dEJveChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwKICAgICByZXR1cm4gMDsKIH0K
IAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJ
bmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJ
dGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAogICAgIGludCYgcHJldmlv
dXNCb3hMZW5ndGgsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jaywgVmVjdG9yPFVD
aGFyLCAxMDI0PiYgc3RyaW5nLCBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzJiBsZWFm
Qm94ZXMpCiB7CiAgICAgcHJldmlvdXNCb3hJbkRpZmZlcmVudEJsb2NrID0gZmFsc2U7CkBAIC0z
MDUsNyArMzA2LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRv
ckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3MKICAgICByZXR1cm4gd29yZEJy
ZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKSk7CiB9
CiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZz
ZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3Qg
SW5saW5lVGV4dEJveCogdGV4dEJveCwKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFr
SXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKICAgICBib29sJiBuZXh0
Qm94SW5EaWZmZXJlbnRCbG9jaywgVmVjdG9yPFVDaGFyLCAxMDI0PiYgc3RyaW5nLCBDYWNoZWRM
b2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzJiBsZWFmQm94ZXMpCiB7CiAgICAgbmV4dEJveEluRGlm
ZmVyZW50QmxvY2sgPSBmYWxzZTsKQEAgLTMyMywyMCArMzI0LDIwIEBAIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeShjb25zdCBW
aXNpYmxlUG9zCiAgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwogfQogCi1zdGF0aWMgYm9vbCBpc0xvZ2ljYWxTdGFy
dE9mV29yZChUZXh0QnJlYWtJdGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRM
aW5lQnJlYWspCitzdGF0aWMgYm9vbCBpc0xvZ2ljYWxTdGFydE9mV29yZChVQnJlYWtJdGVyYXRv
ciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCiB7Ci0gICAgYm9vbCBi
b3VuZGFyeSA9IGhhcmRMaW5lQnJlYWsgPyB0cnVlIDogaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRp
b24pOworICAgIGJvb2wgYm91bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1ZSA6IHVicmtfaXNC
b3VuZGFyeShpdGVyLCBwb3NpdGlvbik7CiAgICAgaWYgKCFib3VuZGFyeSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgdGV4dEJyZWFrRm9sbG93aW5nKGl0ZXIsIHBvc2l0aW9uKTsKKyAg
ICB1YnJrX2ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CiAgICAgLy8gaXNXb3JkVGV4dEJyZWFr
IHJldHVybnMgdHJ1ZSBhZnRlciBtb3ZpbmcgYWNyb3NzIGEgd29yZCBhbmQgZmFsc2UgYWZ0ZXIg
bW92aW5nIGFjcm9zcyBhIHB1bmN0dWF0aW9uL3NwYWNlLgogICAgIHJldHVybiBpc1dvcmRUZXh0
QnJlYWsoaXRlcik7CiB9CiAKLXN0YXRpYyBib29sIGlzbG9naWNhbEVuZE9mV29yZChUZXh0QnJl
YWtJdGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCitzdGF0
aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVUJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3Np
dGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJvb2wgYm91bmRhcnkgPSBpc1RleHRC
cmVhayhpdGVyLCBwb3NpdGlvbik7CisgICAgYm9vbCBib3VuZGFyeSA9IHVicmtfaXNCb3VuZGFy
eShpdGVyLCBwb3NpdGlvbik7CiAgICAgcmV0dXJuIChoYXJkTGluZUJyZWFrIHx8IGJvdW5kYXJ5
KSAmJiBpc1dvcmRUZXh0QnJlYWsoaXRlcik7CiB9CiAKQEAgLTM1MSw3ICszNTIsNyBAQCBzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbgogICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBk
aXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgp
KTsKICAgICBJbmxpbmVCb3gqIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gbnVsbHB0cjsKICAgICBW
aXNpYmxlUG9zaXRpb24gY3VycmVudCA9IHZpc2libGVQb3NpdGlvbjsKLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogaXRlciA9IG51bGxwdHI7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXIgPSBudWxs
cHRyOwogCiAgICAgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyBsZWFmQm94ZXM7CiAg
ICAgVmVjdG9yPFVDaGFyLCAxMDI0PiBzdHJpbmc7CkBAIC0zOTAsNyArMzkxLDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zaXRpb24KICAgICAgICAgaWYgKCFpdGVyKQogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7CisgICAgICAgIHVicmtfZmlyc3QoaXRl
cik7CiAgICAgICAgIGludCBvZmZzZXRJbkl0ZXJhdG9yID0gb2Zmc2V0SW5Cb3ggLSB0ZXh0Qm94
LnN0YXJ0KCkgKyBwcmV2aW91c0JveExlbmd0aDsKIAogICAgICAgICBib29sIGlzV29yZEJyZWFr
OwpAQCAtMTEwOSw3ICsxMTEwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGludCBsaW4KIHVuc2lnbmVk
IHN0YXJ0U2VudGVuY2VCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkLCBCb3VuZGFy
eVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmKQogewogICAgIC8vIEZJWE1FOiBUaGUg
Zm9sbG93aW5nIGZ1bmN0aW9uIGNhbiByZXR1cm4gLTE7IHdlIGRvbid0IGhhbmRsZSB0aGF0Lgot
ICAgIHJldHVybiB0ZXh0QnJlYWtQcmVjZWRpbmcoc2VudGVuY2VCcmVha0l0ZXJhdG9yKHRleHQp
LCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcoc2VudGVuY2VCcmVh
a0l0ZXJhdG9yKHRleHQpLCB0ZXh0Lmxlbmd0aCgpKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHN0
YXJ0T2ZTZW50ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMTExOSw3
ICsxMTIwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZTZW50ZW5jZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKQogCiB1bnNpZ25lZCBlbmRTZW50ZW5jZUJvdW5kYXJ5KFN0cmlu
Z1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSwg
Ym9vbCYpCiB7Ci0gICAgcmV0dXJuIHRleHRCcmVha05leHQoc2VudGVuY2VCcmVha0l0ZXJhdG9y
KHRleHQpKTsKKyAgICByZXR1cm4gdWJya19uZXh0KHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0
KSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBlbmRPZlNlbnRlbmNlKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcG9zaXRpb24pCkBAIC0xMTMyLDcgKzExMzMsNyBAQCBzdGF0aWMgdW5zaWduZWQgcHJl
dmlvdXNTZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwg
Qm91bgogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGlkZW50aWNhbCB0byBzdGFydFNlbnRlbmNl
Qm91bmRhcnkuIEknbSBwcmV0dHkgc3VyZSB0aGF0J3Mgbm90IHJpZ2h0LgogICAgIC8vIEZJWE1F
OiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGNhbiByZXR1cm4gLTE7IHdlIGRvbid0IGhhbmRsZSB0
aGF0LgotICAgIHJldHVybiB0ZXh0QnJlYWtQcmVjZWRpbmcoc2VudGVuY2VCcmVha0l0ZXJhdG9y
KHRleHQpLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcoc2VudGVu
Y2VCcmVha0l0ZXJhdG9yKHRleHQpLCB0ZXh0Lmxlbmd0aCgpKTsKIH0KIAogVmlzaWJsZVBvc2l0
aW9uIHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0
aW9uKQpAQCAtMTE0NCw3ICsxMTQ1LDcgQEAgc3RhdGljIHVuc2lnbmVkIG5leHRTZW50ZW5jZVBv
c2l0aW9uQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnkKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGljYWwgdG8gZW5kU2VudGVuY2VCb3VuZGFyeS4KICAg
ICAvLyBUaGF0IGlzbid0IHJpZ2h0LiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIG1vdmUgdG8gdGhl
IGVxdWl2YWxlbnQgcG9zaXRpb24gaW4gdGhlIGZvbGxvd2luZyBzZW50ZW5jZS4KLSAgICByZXR1
cm4gdGV4dEJyZWFrRm9sbG93aW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgMCk7Cisg
ICAgcmV0dXJuIHVicmtfZm9sbG93aW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgMCk7
CiB9CiAKIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggNmMxZDhiM2VkNDVlMjQ1YTdjN2M0Njk3MDAyYmQxODk2YzkzZDczOS4uZDQzZDRl
ZjllMDExOTI2ZDBlOGEwZWJkZWM4NzUyZDNlZmZkZmMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02Miw3ICs2Miw2IEBACiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGM0MWJjOGZmZWVlZTA4NmM0NTZj
MmEyMDc4ZTRmZjBjMmYwNDVhZTcuLjM1YTQyYjNmZGM1N2RiNDQyY2ExMjFkNmVmZTJiMGZmYjk0
OGI0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApA
QCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHROb2Rl
VHJhdmVyc2FsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggM2Q0N2U0NjAyNTFm
MzI5ZDIyNmJlMzRhY2Q4MGJmYTA0ZDBkOTY2NS4uZjZhNmJiYzQ2NGI5YWZhMzhkNTdiNGQxZWM0
N2NmM2NjYTkyNjZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNjksNyArNjks
NiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdWJtaXRJbnB1dFR5cGUu
aCIKICNpbmNsdWRlICJUZWxlcGhvbmVJbnB1dFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRl
ICJUaW1lSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVVJMSW5wdXRUeXBlLmgiCkBAIC03OCw2ICs3
Nyw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1YjdkOTAxYWZjMDI1YjU5
YWY5MWJiN2VkYWY0YzdiMzAzY2YxMDE4Li5mMzVmYjRjMjYxMDdjNTVmMzExMjFlZTVlZDJhNjk5
Y2JmNDgzYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
CkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCmluZGV4IGY2
ZjAyNzZkMThkODY4MDQwZGJmYjYyNTg4MmI3MDhjMzM2NThlNWIuLjkwMzJkYjY3NTdmNWNmMmUx
MzdhOTQwYzk2ZGMwZTAxMjFlYTQ5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBl
LmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBhZmE4ZTEy
ZDgxYmQ4NWJkOTYzZjhkY2IyYzhiZWM1NDc5NzRjMDFiLi44NWEzYWQyOWFlNTA5YjkxMDVlZTVh
OTQ2ZjI2MmJkMGZiYzM4ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTQzLDE5ICs0NCwxOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHR5cGVkZWYgdW5zaWduZWQgVHJ1bmNhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQga2VlcENvdW50LCBVQ2hhciogYnVmZmVyLCBi
b29sIHNob3VsZEluc2VydEVsbGlwc2lzKTsKIAotc3RhdGljIGlubGluZSBpbnQgdGV4dEJyZWFr
QXRPclByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQpCitzdGF0aWMg
aW5saW5lIGludCB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKFVCcmVha0l0ZXJhdG9yKiBpdCwgaW50
IG9mZnNldCkKIHsKLSAgICBpZiAoaXNUZXh0QnJlYWsoaXQsIG9mZnNldCkpCisgICAgaWYgKHVi
cmtfaXNCb3VuZGFyeShpdCwgb2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKIAotICAg
IGludCByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIG9mZnNldCk7Ci0gICAgcmV0dXJu
IHJlc3VsdCA9PSBUZXh0QnJlYWtEb25lID8gMCA6IHJlc3VsdDsKKyAgICBpbnQgcmVzdWx0ID0g
dWJya19wcmVjZWRpbmcoaXQsIG9mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBVQlJLX0RP
TkUgPyAwIDogcmVzdWx0OwogfQogCi1zdGF0aWMgaW5saW5lIGludCBib3VuZGVkVGV4dEJyZWFr
Rm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkK
K3N0YXRpYyBpbmxpbmUgaW50IGJvdW5kZWRUZXh0QnJlYWtGb2xsb3dpbmcoVUJyZWFrSXRlcmF0
b3IqIGl0LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKQogewotICAgIGludCByZXN1bHQgPSB0ZXh0
QnJlYWtGb2xsb3dpbmcoaXQsIG9mZnNldCk7Ci0gICAgcmV0dXJuIHJlc3VsdCA9PSBUZXh0QnJl
YWtEb25lID8gbGVuZ3RoIDogcmVzdWx0OworICAgIGludCByZXN1bHQgPSB1YnJrX2ZvbGxvd2lu
ZyhpdCwgb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVzdWx0ID09IFVCUktfRE9ORSA/IGxlbmd0aCA6
IHJlc3VsdDsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQga2VlcENvdW50LCBV
Q2hhciogYnVmZmVyLCBib29sIHNob3VsZEluc2VydEVsbGlwc2lzKQpAQCAtMTQ2LDcgKzE0Nyw3
IEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodENsaXBUb1dvcmRCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IGxlbmd0
aCk7CiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IFNUUklOR19CVUZGRVJfU0laRSk7CiAKLSAgICBU
ZXh0QnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmlu
Zykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CiAg
ICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIGtlZXBD
b3VudCk7CiAgICAgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBrZWVwTGVuZ3RoKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCmluZGV4IDgwZjFjNjNkMDllNDlkNmYyODg5OWVhZDQzMWY4MjM2N2E1MDQ0YWEuLmNm
YjU2NzFkNzAzNTlhODkwODEyMThjMzhjNGI4OGJiOWRiOWIzODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCkBAIC0zMCwxMCArMzAsMTEgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJ1bi5o
IgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAK
ICNpZiBQTEFURk9STShJT1MpCkBAIC0xNzYsMjEgKzE3NywyMSBAQCB1bnNpZ25lZCBDb21wbGV4
VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBh
cnRpYWxHbAogICAgICAgICAgICAgICAgIC8vIGNvdWxkIHVzZSB0aGUgZ2x5cGgncyAibGlnYXR1
cmUgY2FyZXRzIi4gVGhpcyBpcyBhdmFpbGFibGUgaW4gQ29yZVRleHQgdmlhIENURm9udEdldExp
Z2F0dXJlQ2FyZXRQb3NpdGlvbnMoKS4KICAgICAgICAgICAgICAgICBDRkluZGV4IGhpdEluZGV4
ID0gaGl0R2x5cGhTdGFydCArIChoaXRHbHlwaEVuZCAtIGhpdEdseXBoU3RhcnQpICogKG1fcnVu
Lmx0cigpID8geCAvIGFkanVzdGVkQWR2YW5jZSA6IDEgLSB4IC8gYWRqdXN0ZWRBZHZhbmNlKTsK
ICAgICAgICAgICAgICAgICBpbnQgc3RyaW5nTGVuZ3RoID0gY29tcGxleFRleHRSdW4uc3RyaW5n
TGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvclBvc2l0
aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcoY29tcGxleFRl
eHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBVQnJl
YWtJdGVyYXRvciogY3Vyc29yUG9zaXRpb25JdGVyYXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0
b3IoU3RyaW5nVmlldyhjb21wbGV4VGV4dFJ1bi5jaGFyYWN0ZXJzKCksIHN0cmluZ0xlbmd0aCkp
OwogICAgICAgICAgICAgICAgIGludCBjbHVzdGVyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzVGV4dEJyZWFrKGN1cnNvclBvc2l0aW9uSXRlcmF0b3IsIGhpdEluZGV4KSkKKyAgICAgICAg
ICAgICAgICBpZiAodWJya19pc0JvdW5kYXJ5KGN1cnNvclBvc2l0aW9uSXRlcmF0b3IsIGhpdElu
ZGV4KSkKICAgICAgICAgICAgICAgICAgICAgY2x1c3RlclN0YXJ0ID0gaGl0SW5kZXg7CiAgICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IHRl
eHRCcmVha1ByZWNlZGluZyhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChjbHVzdGVyU3RhcnQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAg
ICAgICAgICAgICAgICAgY2x1c3RlclN0YXJ0ID0gdWJya19wcmVjZWRpbmcoY3Vyc29yUG9zaXRp
b25JdGVyYXRvciwgaGl0SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2x1c3RlclN0
YXJ0ID09IFVCUktfRE9ORSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9
IDA7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlUGFy
dGlhbEdseXBocykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXhUZXh0UnVuLnN0
cmluZ0xvY2F0aW9uKCkgKyBjbHVzdGVyU3RhcnQ7CiAKLSAgICAgICAgICAgICAgICBpbnQgY2x1
c3RlckVuZCA9IHRleHRCcmVha0ZvbGxvd2luZyhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmQgPT0gVGV4dEJyZWFrRG9uZSkK
KyAgICAgICAgICAgICAgICBpbnQgY2x1c3RlckVuZCA9IHVicmtfZm9sbG93aW5nKGN1cnNvclBv
c2l0aW9uSXRlcmF0b3IsIGhpdEluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoY2x1c3RlckVu
ZCA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJFbmQgPSBzdHJpbmdM
ZW5ndGg7CiAKICAgICAgICAgICAgICAgICBDR0Zsb2F0IGNsdXN0ZXJXaWR0aDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAKaW5kZXggNDdkMjQ0
NzVhYzA5ODk0ZTAzODg1MWE0OGJiOWMwNWVkZGVmMzdjMi4uZmE2OTE3NjAxMzQ3ZDRlNGE2MjMy
ZjQ3NjM4OGU0YTBmZWMxOGIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Qm91bmRhcmllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Qm91bmRhcmllcy5jcHAKQEAgLTYyLDI3ICs2MiwyNyBAQCB1bnNpZ25lZCBzdGFydE9m
TGFzdFdvcmRCb3VuZGFyeUNvbnRleHQoU3RyaW5nVmlldyB0ZXh0KQogCiBpbnQgZmluZE5leHRX
b3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9uLCBib29sIGZvcndhcmQp
CiB7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7
CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAKICAg
ICBpZiAoZm9yd2FyZCkgewotICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha0ZvbGxvd2luZyhp
dCwgcG9zaXRpb24pOwotICAgICAgICB3aGlsZSAocG9zaXRpb24gIT0gVGV4dEJyZWFrRG9uZSkg
eworICAgICAgICBwb3NpdGlvbiA9IHVicmtfZm9sbG93aW5nKGl0LCBwb3NpdGlvbik7CisgICAg
ICAgIHdoaWxlIChwb3NpdGlvbiAhPSBVQlJLX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFdlIHN0
b3Agc2VhcmNoaW5nIHdoZW4gdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5nIHRoZSBicmVhayBpcyBh
bHBoYW51bWVyaWMuCiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvc2l0
aW9uKSA8IHRleHQubGVuZ3RoKCkgJiYgdV9pc2FsbnVtKHRleHRbcG9zaXRpb24gLSAxXSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogCi0gICAgICAgICAgICBwb3NpdGlvbiA9
IHRleHRCcmVha0ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgICAgICAgICAgcG9zaXRpb24g
PSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHRleHQubGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcG9zaXRpb24gPSB0ZXh0
QnJlYWtQcmVjZWRpbmcoaXQsIHBvc2l0aW9uKTsKLSAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9
IFRleHRCcmVha0RvbmUpIHsKKyAgICAgICAgcG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhpdCwg
cG9zaXRpb24pOworICAgICAgICB3aGlsZSAocG9zaXRpb24gIT0gVUJSS19ET05FKSB7CiAgICAg
ICAgICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5n
IHRoZSBicmVhayBpcyBhbHBoYW51bWVyaWMuCiAgICAgICAgICAgICBpZiAocG9zaXRpb24gJiYg
dV9pc2FsbnVtKHRleHRbcG9zaXRpb25dKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CiAKLSAgICAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3Np
dGlvbik7CisgICAgICAgICAgICBwb3NpdGlvbiA9IHVicmtfcHJlY2VkaW5nKGl0LCBwb3NpdGlv
bik7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gMDsKQEAgLTkxLDE5ICs5MSwxOSBAQCBp
bnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9uLCBi
b29sIGZvcndhcmQpCiAKIHZvaWQgZmluZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIGlu
dCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQpCiB7Ci0gICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7Ci0gICAgKmVuZCA9IHRleHRCcmVha0Zv
bGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVh
a0l0ZXJhdG9yKHRleHQpOworICAgICplbmQgPSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24p
OwogICAgIGlmICgqZW5kIDwgMCkKLSAgICAgICAgKmVuZCA9IHRleHRCcmVha0xhc3QoaXQpOwot
ICAgICpzdGFydCA9IHRleHRCcmVha1ByZXZpb3VzKGl0KTsKKyAgICAgICAgKmVuZCA9IHVicmtf
bGFzdChpdCk7CisgICAgKnN0YXJ0ID0gdWJya19wcmV2aW91cyhpdCk7CiB9CiAKIHZvaWQgZmlu
ZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgaW50KiBlbmQp
CiB7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7
Ci0gICAgKmVuZCA9IHRleHRCcmVha0ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgIFVCcmVh
a0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgICplbmQgPSB1YnJr
X2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOwogICAgIGlmICgqZW5kIDwgMCkKLSAgICAgICAgKmVu
ZCA9IHRleHRCcmVha0xhc3QoaXQpOworICAgICAgICAqZW5kID0gdWJya19sYXN0KGl0KTsKIH0K
IAogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRlMThhNGM4ZmY1
NGNiZGUxYmQwYjJjZWY5MTJjZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMyOGQyY2VmZTUz
ZDI1ZjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW0KQEAgLTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4dFdvcmRGcm9t
SW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKICAgICAv
LyBmb3IgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25lLCBhbmQgaW4g
dGhlIGZ1dHVyZSB3aWxsIGJlCiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUgaVBob25lLXNw
ZWNpZmljIGJlaGF2aW9yIGZvciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGluZy4KICAgICBp
bnQgcG9zID0gcG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29y
ZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29y
ZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAgICAgIGlmIChm
b3J3YXJkKSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJy
ZWFrRm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtf
Zm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJS
S19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAg
ICAgICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0aCgp
ICYmIChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAmJiBpc1Nr
aXBDaGFyYWN0ZXIodGV4dFtwb3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJlY2VkaW5nKGJv
dW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5k
YXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQogICAgICAg
ICAgICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9zID4gMCAmJiBp
c1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRb
cG9zIC0gMV0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xp
bmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4IDg4ZDdl
OTk1ODIwMzU4OTcwZjBlOGExZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJmNDljOTAxMjFi
MDgwMDZlMzE4MDk1NDU2ZmJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMu
aApAQCAtMTAyLDEwICsxMDIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3Np
dGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKICAgICAgICAg
ICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewogICAgICAgICAg
ICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFyeSBj
b250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAgICAgICAgIGlm
IChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBUZXh0QnJl
YWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNv
bnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciogYnJlYWtJ
dGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBp
IC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
Y2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNv
bnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBV
QlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3LDExICsxNDcs
MTEgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5
KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0QnJlYWsgfHwg
bmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBpZiBw
b3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8gcHJp
b3IgY29udGV4dC4KICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewot
ICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJy
ZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgVUJy
ZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJpb3JD
b250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAxKTsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVh
a0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAgICAgICAg
aW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBwcmlvckNv
bnRleHRMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBV
QlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggYzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0OGVmMmUzOGQw
NS4uYTBlZjgyZWE5NzI5YTJkYjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hhcGVP
dXRzaWRlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAj
aW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGEyNWU0MGY4
ZWM1NjY3MTVmMmFlYjBkYTQ0MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0ZDExYzUzNGNl
Y2M2M2ExMzY0ODA2NmQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmlu
ZywgVUNoYXIgcHJldmlvdXMpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0gPSBz
dHJpbmdJbXBsW2kgLSAxXTsKICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogYm91bmRh
cnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFy
YWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkgPSB3
b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0ZXJz
KCksIGxlbmd0aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm47CiAK
QEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmluZywg
VUNoYXIgcHJldmlvdXMpCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCiAg
ICAgaW50MzJfdCBlbmRPZldvcmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHRleHRCcmVh
a0ZpcnN0KGJvdW5kYXJ5KTsKLSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91
bmRhcnkpOyBlbmRPZldvcmQgIT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQgPSBlbmRPZldv
cmQsIGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAgaW50MzJfdCBz
dGFydE9mV29yZCA9IHVicmtfZmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5kT2ZXb3JkID0g
dWJya19uZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3RhcnRPZldvcmQg
PSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsKICAgICAgICAg
aWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBzdHJpbmcK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFdID09
IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJldmlv
dXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCArIDE7
IGkgPCBlbmRPZldvcmQ7IGkrKykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50IFJlbmRlclRl
eHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICByZXR1cm4gY3Vy
cmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5pbXBsKCk7Ci0g
ICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgpKSk7
CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgpKSk7
CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCi0gICAg
bG9uZyByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJlbnQpOwotICAg
IGlmIChyZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9IHVicmtfcHJl
Y2VkaW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVCUktfRE9ORSkK
ICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAg
aW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3Vy
cmVudCkgY29uc3QKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgU3RyaW5nSW1w
bCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2h5IHRo
aXMgaGFzIHNvIG11Y2ggaGFuZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5nIFRleHRCcmVh
a0l0ZXJhdG9yLgorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBzbyBtdWNoIGhh
bmRyb2xsZWQgY29kZSByYXRoZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4KICAgICAvLyBB
bHNvIHVuY2xlYXIgd2h5IHRoaXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5jZUJ5Q29tYmlu
aW5nQ2hhcmFjdGVyU2VxdWVuY2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIGZh
bmNpZXIgY2FzZSBjb3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBubwpAQCAtMTY0
OSwxMiArMTY0OSwxMiBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5nSW1wbCogdGV4
dEltcGwgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVyczE2
KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVyczE2
KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAgIHJl
dHVybiBjdXJyZW50ICsgMTsKIAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93aW5n
KGl0ZXJhdG9yLCBjdXJyZW50KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVha0RvbmUpCisg
ICAgbG9uZyByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVudCk7CisgICAg
aWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgKyAxOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAppbmRleCBh
ZWU3NWE0NmZhZjA0MTAyMzM0MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1MzZlNTJiYzVk
ODQ3ZTcxMTZjNmQyOTUwZmVmMzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5o
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUgIlJl
bmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5o
CmluZGV4IGJmZDk4NjdhNDVlMWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2IuLjBjOWQ5Zjhj
Nzg0ZmJhMmZkZTdmNWYyZjMwYmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkxp
bmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dl
YlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0
Lm1tCmluZGV4IDg5ZWIyYTMyOWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0OTUuLmM0ZWZj
MmU0ZGUxMGQwMTU3N2Q2NTQ1ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5o
PgotI2ltcG9ydCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2ltcG9ydCA8cnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAK
</data>
<flag name="review"
          id="319584"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="319587"
          type_id="3"
          status="-"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297263</attachid>
            <date>2016-12-15 17:26:01 -0800</date>
            <delta_ts>2016-12-15 17:46:28 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-165931-20161215172508.patch</filename>
            <type>text/plain</type>
            <size>54354</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFiNDdhZDgzNTRkODA1Zjc2NGVhNTU4
NzkxM2I5MDY2NTRhZjk3MTYuLmEwNzhjOTY4MjNjNWE1NWY3MzY5MGYxYWQ3YTQ0ZDI0ODZlMGFj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV1RG
OjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnRha2UpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnB1dCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
Ojpjb21wdXRlSW5kZXhFbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6b3BlbkxpbmVCcmVha0l0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OmdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpjYWNoZU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAg
ICAgICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgIChX
VEY6OnRleHRCcmVha0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTGFz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRl
eHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxv
d2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0N1cnJlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjpsYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6OnNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6dXBkYXRlUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cHJpb3JDb250ZXh0TGVuZ3RoKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yOjpvcGVyYXRvciBVQnJlYWtJdGVyYXRvciopOgorICAgICAgICAoV1RGOjpOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBE
ZWxldGVkLgorCiAyMDE2LTEyLTE1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRl
eC5ydT4KIAogICAgICAgICBBZGRlZCBtaXNzaW5nIG92ZXJyaWRlIGFuZCBmaW5hbCBzcGVjaWZp
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNmMyMjQ5ZDQ4N2EwMzlmOTZjNmM5ZWQ4Yjc2YmJhYmZjY2EwNTFj
NS4uODg0NTQyMWFjMzgxZTIyYmMwNGQwNTliZDk4NGYxODI1NDcwMjQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDU3IEBACiAyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0
ZXJhdG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9DaGFyYWN0
ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFwcGVu
ZERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbmRNaXNzcGVsbGluZ3MpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0b3JGb3JNYXhP
ZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjppc0xvZ2ljYWxTdGFydE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjppc2xvZ2ljYWxFbmRPZldvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0U2VudGVuY2VC
b3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjplbmRTZW50ZW5jZUJvdW5kYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRTZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRleHRCcmVha0F0T3JQcmVjZWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Ym91
bmRlZFRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodENsaXBUb1dv
cmRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpv
ZmZzZXRGb3JQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRW5k
V29yZEJvdW5kYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0JyZWFrTGluZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2Fi
bGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uTG9vc2VseSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
Q2FwaXRhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNr
d2FyZERlbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRPZmZzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0
b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oOgorCisyMDE2LTEy
LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKICAgICAgICAg
W0NvY29hXSBJbXBsZW1lbnQgZm9udC1zeW50aGVzaXM6IHNtYWxsLWNhcHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg5MgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKaW5kZXggNTYzMTgzMzJiMjRiNjNiOGYwN2YwOWQ1ODhhZGY2ZjkwNmJhODY3ZS4uOTJjZDBj
M2FkNjAxN2IwMjQ4ZjFiN2VlOWYzMGQ0OGE3MGUwZWZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0ZXJh
dG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBv
cnQubW06CisKIDIwMTYtMTEtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIER1bXBSZW5kZXJUcmVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAppbmRl
eCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJjZTZhYTIzNzczLi5jMGUwZTU3ZGU5YjZi
ZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRh
a2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2Rl
LCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKICAgICB7
CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbWFrZUxvY2Fs
ZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKIAotICAgICAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAgICAgICBVQnJlYWtJdGVyYXRvciogaXRlcmF0
b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fcG9vbFtpXS5maXJzdCA9PSBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1fcG9v
bFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3IpKTsKICAgICAgICAg
aWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkpIHsKQEAgLTk3LDggKzk3LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJyZWFrSXRlcmF0b3IqPiwg
Y2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWlj
U3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0
cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKKyAgICBIYXNoTWFwPFVC
cmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKIAogICAgIGZy
aWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9y
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIzMTE3ZmJiMTZkZjU5NTdhLi5kNzg1NjJl
MmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhmZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSAiU3RyaW5nVmlldy5oIgog
CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAgICAgICAgcmV0dXJuIHRleHRCcmVha0ZvbGxv
d2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5kZXgpOworICAgICAgICByZXR1cm4gdWJya19m
b2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2luZGV4KTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmluZGV4IDA1YTUxOTU2
MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkzMjcuLjFkYTBhYjYxOGE1OTk5ODhkYmRkMDc2
YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIEl0ZXJhdG9y
IGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJy
ZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBj
dXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsKICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRl
cnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3Blbih0eXBlLCBsb2NhbGUsIDAs
IDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gdWJya19v
cGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMpOwogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsg
aXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7
CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykKIAotc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hh
ciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9y
V2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMpCiB7CiAgICAgVVBhcnNlRXJyb3IgcGFy
c2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1bGVzKTsKICAgICBhdXRvIHVwY29udmVy
dGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0
b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwg
JnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAm
cGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VD
Q0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAl
cyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOwogICAgIHJldHVy
biBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKIAog
Ly8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0
VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBz
dHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihVQnJlYWtJ
dGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTgwLDcg
KzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgfQogCiAgICAgICAgIFVF
cnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRV
VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJrX3NldFVUZXh0KCZpdGVyYXRvciwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVz
ICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5
LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3Io
VGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgdXRleHRfY2xvc2Uo
dGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VGV4dCgmaXRlcmF0b3Is
IHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7
CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVy
YXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3Ry
aW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0KIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJh
dG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWdu
ZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0
QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3
IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRo
QnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVGV4dEJyZWFrSXRl
cmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYg
aXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFr
SXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVi
cmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlm
IChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKICAgICAgICAgICAgIExPR19FUlJPUigidWJy
a19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJh
dG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAg
ICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDYsMjUgKzE0NiwyNSBAQCBzdGF0aWMg
VGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJl
YWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMgaXRlcmF0b3JzCiAKLVRleHRCcmVha0l0ZXJh
dG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK1VCcmVha0l0ZXJhdG9y
KiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJl
YWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1dPUkQpOwogICAgIGlmICghc3Rh
dGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7
CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVu
Y2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOworICAg
IHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5p
dGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwogICAgIGlmICghc3RhdGljU2VudGVuY2VC
cmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBzZXRU
ZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBz
dHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMg
YmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1bGVzIG9mIElDVSA1NwpAQCAtMjkx
LDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3Io
U3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIhIXNhZmVfcmV2ZXJzZTsiCiAgICAgICAgICIh
IXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBz
dGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVz
KGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVu
dEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CiAjZWxzZSAv
LyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRoZSBzcGVjaWFsIFRoYWkgY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRv
ciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJL
X0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJz
b3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAi
dGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKCFzdGF0aWNDdXJzb3JN
b3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICszMDMsMTYgQEAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHNl
dFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciwgc3RyaW5nKTsK
IH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlv
ckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0
ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29u
c3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKLSAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS50YWtl
KGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExp
bmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NK
Syk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBy
ZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CiB9CiAKLXZvaWQgcmVsZWFzZUxpbmVC
cmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3ZvaWQgcmVsZWFzZUxp
bmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlRf
QVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAgLTc4MCw3ICs3ODAsNyBAQCBib29sIGlzQ0pL
TG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitV
QnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKICAgICBV
QnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5M
aW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXQK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrSXRlcik7CisgICAgcmV0dXJuIHVicmtJdGVy
OwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqJiBp
dGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciomIGl0
ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9yKiB1YnJrSXRlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVicmtJdGVyKTsKICAgICB1YnJrX2Nsb3NlKHVi
cmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBzdGQ6OmF0b21p
YzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgPSBB
VE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0aWMgc3RkOjphdG9taWM8VUJyZWFrSXRlcmF0
b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yID0gQVRPTUlDX1ZBUl9JTklUKG51
bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRCcmVha0l0ZXJhdG9yKiBnZXROb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRpYyBpbmxpbmUgVUJyZWFrSXRlcmF0b3IqIGdl
dE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQogewogICAgIGlmIChhdXRvICpyZXMg
PSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLmV4Y2hhbmdlKG51bGxwdHIsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAgICByZXR1cm4gcmVzOwogICAgIHJldHVybiBp
bml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9y
KiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lkIGNhY2hlTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2FjaGVNZSkKIHsKICAgICBpZiAoYXV0byAqb2xk
ID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvci5leGNoYW5nZShjYWNoZU1lLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAgICAgdWJya19jbG9zZShyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7CisgICAgICAgIHVicmtfY2xvc2Uob2xkKTsKIH0K
IAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKQEAgLTg0OCw1MiArODQ4LDExIEBAIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpzd2FwKG1faXRlcmF0b3IsIG90aGVyLm1faXRl
cmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGltcGxlbWVuYXRpb24uCiAKLWludCB0ZXh0QnJl
YWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtf
Zmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0K
LWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBy
ZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Ip
Ci17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9y
Kj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZXZpb3VzKFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19wcmV2aW91cyhyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZWNl
ZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJu
IHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
ciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3Iq
IGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVybiB1YnJrX2ZvbGxvd2luZyhyZWludGVy
cHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4
dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJu
IHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
KTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGlu
dCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0aW9uKTsKLX0KLQotYm9vbCBpc1dv
cmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQorYm9vbCBpc1dvcmRUZXh0
QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQogewotICAgIGludCBydWxlU3RhdHVzID0g
dWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKGl0ZXJhdG9y
KTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKIH0KIApAQCAtOTIw
LDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyBzdHJp
bmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyA9IDA7Ci0gICAg
d2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3IpICE9IFRleHRCcmVha0RvbmUpCisgICAgd2hp
bGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJSS19ET05FKQogICAgICAgICArK251bUdyYXBo
ZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdyYXBoZW1lQ2x1c3RlcnM7CiB9CkBAIC05NDgs
MTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFwaGVtZQogICAgIH0KIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzOyArK2kpIHsKLSAgICAgICAg
aWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRleHRCcmVha0RvbmUpCisgICAgICAgIGlm
ICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktfRE9ORSkKICAgICAgICAgICAgIHJldHVybiBz
dHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVybiB0ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9y
KTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0ZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggOGFmYjU1
ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAwNmE5ZS4uYmNmNDRjMDdhNGVjOTFiNTE0Njdj
MjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgVGV4dEJy
ZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9u
bHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2Yg
YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBlbnVtIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0cmljdCB9OwpAQCAtMzUsMjcgKzMzLDE3
IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JNb2RlIHsgRGVmYXVsdCwgTG9vc2UsIE5v
cm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBVSSBjb252ZW50aW9ucy4gT25lIG5vdGFibGUg
ZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJlbnQKIC8vIGZyb20gY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXJzLCBzZWUgYnVnIDI0MzQyLgog
Ly8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBhbmQgc2VsZWN0aW9uIG1hbmlwdWxhdGlv
bnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVy
YXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
VGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4
dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VM
aW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciomKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJ
dGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVh
a0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha05leHQoVGV4dEJy
ZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrUHJldmlvdXMo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrQ3Vy
cmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJl
YWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwot
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
Kik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNo
YXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKik7CitVQnJlYWtJdGVyYXRvciogb3Bl
bkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFVC
cmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRCcmVhayhVQnJlYWtJdGVyYXRvciopOwog
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NKS0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1YmxpYzoKIAogICAgIFVDaGFyIGxhc3RDaGFyYWN0
ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlv
cl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3Ig
Y29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0dXJuIG1fcHJpb3JDb250ZXh0WzFdOwogICAg
IH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJhY3RlcigpIGNvbnN0CiAgICAgewotICAg
ICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBwcmlvciBjb250ZXh0IGxlbmd0aCIpOwogICAg
ICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CiAgICAgfQogCiAgICAgdm9pZCBzZXRQcmlv
ckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQogICAgIHsKLSAgICAgICAg
Q09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4
dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVC
cmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAg
bV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7CiAgICAgICAgIG1fcHJpb3JDb250ZXh0
WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0ZVByaW9yQ29udGV4dChVQ2hhciBs
YXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4
dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBtX3ByaW9yQ29udGV4dFsx
XTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBsYXN0OwogICAgIH0KIAogICAgIHZvaWQg
cmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBl
Y3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0
ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAw
OwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7CiAgICAgfQpAQCAtMTIwLDcgKzEwOCw3
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgoKSBjb25zdAogICAg
IHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09N
UElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJy
ZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVh
a0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgaWYg
KG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAgICAgICArK3ByaW9yQ29udGV4dExlbmd0aDsK
ICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFswXSkKQEAgLTEzMiw3ICsxMjAsNyBAQCBw
dWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZp
b3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKICAgICAv
LyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUg
cHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZwogICAgIC8vIHByZXZpb3VzbHkgc3Rv
cmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBn
ZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorICAgIFVCcmVha0l0ZXJhdG9yKiBnZXQo
dW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHByaW9y
Q29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0eSk7CiAgICAgICAgIGNvbnN0IFVD
aGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRb
cHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDogMDsKQEAgLTE2NCw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgcHJpb3JD
b250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwogICAgIEF0
b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7
IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsK
ICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQgeyBudWxscHRyIH07CiAgICAg
TGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVm
YXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoIHsgMCB9OwpA
QCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgogCiAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYpOwogCi0gICAgb3Bl
cmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQor
ICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7
IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKKyAgICBV
QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07CiAKIC8vIENvdW50cyB0aGUgbnVtYmVyIG9m
IGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWlyIG9yIGEgc2VxdWVuY2UKQEAgLTIw
NSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0lu
R3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNpZ25lZAogdXNpbmcgV1RGOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9yTW9kZTsKIHVzaW5n
IFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKLXVzaW5nIFdURjo6VGV4dEJy
ZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OmlzV29y
ZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA5N2ZhNDVm
MTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYzN2QwLi40ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUy
YTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBA
IC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIC8vIFdlIG5lZWQgYXQg
bGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVhZCB0byBhY2NvdW50IGZvciBVVEYtMTYgc3Vy
cm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVuZ3RoTGltaXQgPCBjaGFyYWN0ZXJMZW5ndGgp
IHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3
KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNoYXJhY3Rlckxlbmd0aExpbWl0ICsgMiA+IGNo
YXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5ndGggOiBjaGFyYWN0ZXJMZW5ndGhMaW1pdCAr
IDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVhayhpdCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQp
KQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3RoTGltaXQgPSB0ZXh0QnJlYWtQcmVjZWRpbmco
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICAgICAgaWYgKCF1YnJrX2lzQm91bmRhcnko
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAgICAgICAgICAgIGNoYXJhY3Rlckxlbmd0aExp
bWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKICAgICB9CiAK
ICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDBlNWRjZDYzYWE5OTYxZjIyNzA1NzQzZTBm
ZTA0NTk1M2M3YjFhZjEuLmMwZTMyZjUxOTQwZjA4ODYzYTUzNjI5N2I3ODk5N2Y5MWU3ODIzNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAg
LTc2LDExICs3NiwxMSBAQCBzdGF0aWMgdm9pZCBmaW5kR3JhbW1hdGljYWxFcnJvcnMoVGV4dENo
ZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBWZQogCiBzdGF0aWMgdm9pZCBm
aW5kTWlzc3BlbGxpbmdzKFRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4
dCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7Ci0gICAgVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKCFp
dGVyYXRvcikKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAoaW50IHdvcmRTdGFydCA9IHRleHRC
cmVha0N1cnJlbnQoaXRlcmF0b3IpOyB3b3JkU3RhcnQgPj0gMDsgKSB7Ci0gICAgICAgIGludCB3
b3JkRW5kID0gdGV4dEJyZWFrTmV4dChpdGVyYXRvcik7CisgICAgZm9yIChpbnQgd29yZFN0YXJ0
ID0gdWJya19jdXJyZW50KGl0ZXJhdG9yKTsgd29yZFN0YXJ0ID49IDA7ICkgeworICAgICAgICBp
bnQgd29yZEVuZCA9IHVicmtfbmV4dChpdGVyYXRvcik7CiAgICAgICAgIGlmICh3b3JkRW5kIDwg
MCkKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0
cy5jcHAKaW5kZXggODNjYWU0YzM4NjYyYmE4MzlmZjFmN2FlNzhjZTExNmE2NmYwNzNiZi4uMTUz
ZjVlYTRmNGE3NDU0MDI3NWZhNWNhNGNmZmRhNjRlZDFiZTg2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMzcsOSArMzcsMTAgQEAKICNpbmNsdWRlICJSZW5k
ZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFy
aWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCisjaW5jbHVk
ZSA8dW5pY29kZS91YnJrLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0y
ODUsNyArMjg2LDcgQEAgc3RhdGljIGNvbnN0IElubGluZUJveCogbG9naWNhbGx5TmV4dEJveChj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwKICAgICByZXR1cm4gMDsKIH0K
IAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJ
bmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorc3RhdGljIFVCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJ
dGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAogICAgIGludCYgcHJldmlv
dXNCb3hMZW5ndGgsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jaywgVmVjdG9yPFVD
aGFyLCAxMDI0PiYgc3RyaW5nLCBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzJiBsZWFm
Qm94ZXMpCiB7CiAgICAgcHJldmlvdXNCb3hJbkRpZmZlcmVudEJsb2NrID0gZmFsc2U7CkBAIC0z
MDUsNyArMzA2LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRv
ckZvck1pbk9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3MKICAgICByZXR1cm4gd29yZEJy
ZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmcuZGF0YSgpLCBzdHJpbmcuc2l6ZSgpKSk7CiB9
CiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZz
ZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3Qg
SW5saW5lVGV4dEJveCogdGV4dEJveCwKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFr
SXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKICAgICBib29sJiBuZXh0
Qm94SW5EaWZmZXJlbnRCbG9jaywgVmVjdG9yPFVDaGFyLCAxMDI0PiYgc3RyaW5nLCBDYWNoZWRM
b2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzJiBsZWFmQm94ZXMpCiB7CiAgICAgbmV4dEJveEluRGlm
ZmVyZW50QmxvY2sgPSBmYWxzZTsKQEAgLTMyMywyMCArMzI0LDIwIEBAIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeShjb25zdCBW
aXNpYmxlUG9zCiAgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5n
LmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwogfQogCi1zdGF0aWMgYm9vbCBpc0xvZ2ljYWxTdGFy
dE9mV29yZChUZXh0QnJlYWtJdGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRM
aW5lQnJlYWspCitzdGF0aWMgYm9vbCBpc0xvZ2ljYWxTdGFydE9mV29yZChVQnJlYWtJdGVyYXRv
ciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCiB7Ci0gICAgYm9vbCBi
b3VuZGFyeSA9IGhhcmRMaW5lQnJlYWsgPyB0cnVlIDogaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRp
b24pOworICAgIGJvb2wgYm91bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1ZSA6IHVicmtfaXNC
b3VuZGFyeShpdGVyLCBwb3NpdGlvbik7CiAgICAgaWYgKCFib3VuZGFyeSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgdGV4dEJyZWFrRm9sbG93aW5nKGl0ZXIsIHBvc2l0aW9uKTsKKyAg
ICB1YnJrX2ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CiAgICAgLy8gaXNXb3JkVGV4dEJyZWFr
IHJldHVybnMgdHJ1ZSBhZnRlciBtb3ZpbmcgYWNyb3NzIGEgd29yZCBhbmQgZmFsc2UgYWZ0ZXIg
bW92aW5nIGFjcm9zcyBhIHB1bmN0dWF0aW9uL3NwYWNlLgogICAgIHJldHVybiBpc1dvcmRUZXh0
QnJlYWsoaXRlcik7CiB9CiAKLXN0YXRpYyBib29sIGlzbG9naWNhbEVuZE9mV29yZChUZXh0QnJl
YWtJdGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCitzdGF0
aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVUJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3Np
dGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJvb2wgYm91bmRhcnkgPSBpc1RleHRC
cmVhayhpdGVyLCBwb3NpdGlvbik7CisgICAgYm9vbCBib3VuZGFyeSA9IHVicmtfaXNCb3VuZGFy
eShpdGVyLCBwb3NpdGlvbik7CiAgICAgcmV0dXJuIChoYXJkTGluZUJyZWFrIHx8IGJvdW5kYXJ5
KSAmJiBpc1dvcmRUZXh0QnJlYWsoaXRlcik7CiB9CiAKQEAgLTM1MSw3ICszNTIsNyBAQCBzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbgogICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBk
aXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgp
KTsKICAgICBJbmxpbmVCb3gqIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gbnVsbHB0cjsKICAgICBW
aXNpYmxlUG9zaXRpb24gY3VycmVudCA9IHZpc2libGVQb3NpdGlvbjsKLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogaXRlciA9IG51bGxwdHI7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXIgPSBudWxs
cHRyOwogCiAgICAgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyBsZWFmQm94ZXM7CiAg
ICAgVmVjdG9yPFVDaGFyLCAxMDI0PiBzdHJpbmc7CkBAIC0zOTAsNyArMzkxLDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zaXRpb24KICAgICAgICAgaWYgKCFpdGVyKQogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7CisgICAgICAgIHVicmtfZmlyc3QoaXRl
cik7CiAgICAgICAgIGludCBvZmZzZXRJbkl0ZXJhdG9yID0gb2Zmc2V0SW5Cb3ggLSB0ZXh0Qm94
LnN0YXJ0KCkgKyBwcmV2aW91c0JveExlbmd0aDsKIAogICAgICAgICBib29sIGlzV29yZEJyZWFr
OwpAQCAtMTEwOSw3ICsxMTEwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24o
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGludCBsaW4KIHVuc2lnbmVk
IHN0YXJ0U2VudGVuY2VCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkLCBCb3VuZGFy
eVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmKQogewogICAgIC8vIEZJWE1FOiBUaGUg
Zm9sbG93aW5nIGZ1bmN0aW9uIGNhbiByZXR1cm4gLTE7IHdlIGRvbid0IGhhbmRsZSB0aGF0Lgot
ICAgIHJldHVybiB0ZXh0QnJlYWtQcmVjZWRpbmcoc2VudGVuY2VCcmVha0l0ZXJhdG9yKHRleHQp
LCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcoc2VudGVuY2VCcmVh
a0l0ZXJhdG9yKHRleHQpLCB0ZXh0Lmxlbmd0aCgpKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHN0
YXJ0T2ZTZW50ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMTExOSw3
ICsxMTIwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZTZW50ZW5jZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKQogCiB1bnNpZ25lZCBlbmRTZW50ZW5jZUJvdW5kYXJ5KFN0cmlu
Z1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSwg
Ym9vbCYpCiB7Ci0gICAgcmV0dXJuIHRleHRCcmVha05leHQoc2VudGVuY2VCcmVha0l0ZXJhdG9y
KHRleHQpKTsKKyAgICByZXR1cm4gdWJya19uZXh0KHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0
KSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBlbmRPZlNlbnRlbmNlKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcG9zaXRpb24pCkBAIC0xMTMyLDcgKzExMzMsNyBAQCBzdGF0aWMgdW5zaWduZWQgcHJl
dmlvdXNTZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwg
Qm91bgogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGlkZW50aWNhbCB0byBzdGFydFNlbnRlbmNl
Qm91bmRhcnkuIEknbSBwcmV0dHkgc3VyZSB0aGF0J3Mgbm90IHJpZ2h0LgogICAgIC8vIEZJWE1F
OiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGNhbiByZXR1cm4gLTE7IHdlIGRvbid0IGhhbmRsZSB0
aGF0LgotICAgIHJldHVybiB0ZXh0QnJlYWtQcmVjZWRpbmcoc2VudGVuY2VCcmVha0l0ZXJhdG9y
KHRleHQpLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcoc2VudGVu
Y2VCcmVha0l0ZXJhdG9yKHRleHQpLCB0ZXh0Lmxlbmd0aCgpKTsKIH0KIAogVmlzaWJsZVBvc2l0
aW9uIHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0
aW9uKQpAQCAtMTE0NCw3ICsxMTQ1LDcgQEAgc3RhdGljIHVuc2lnbmVkIG5leHRTZW50ZW5jZVBv
c2l0aW9uQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnkKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGljYWwgdG8gZW5kU2VudGVuY2VCb3VuZGFyeS4KICAg
ICAvLyBUaGF0IGlzbid0IHJpZ2h0LiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIG1vdmUgdG8gdGhl
IGVxdWl2YWxlbnQgcG9zaXRpb24gaW4gdGhlIGZvbGxvd2luZyBzZW50ZW5jZS4KLSAgICByZXR1
cm4gdGV4dEJyZWFrRm9sbG93aW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgMCk7Cisg
ICAgcmV0dXJuIHVicmtfZm9sbG93aW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgMCk7
CiB9CiAKIFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggNmMxZDhiM2VkNDVlMjQ1YTdjN2M0Njk3MDAyYmQxODk2YzkzZDczOS4uZDQzZDRl
ZjllMDExOTI2ZDBlOGEwZWJkZWM4NzUyZDNlZmZkZmMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02Miw3ICs2Miw2IEBACiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGM0MWJjOGZmZWVlZTA4NmM0NTZj
MmEyMDc4ZTRmZjBjMmYwNDVhZTcuLjM1YTQyYjNmZGM1N2RiNDQyY2ExMjFkNmVmZTJiMGZmYjk0
OGI0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApA
QCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHROb2Rl
VHJhdmVyc2FsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggM2Q0N2U0NjAyNTFm
MzI5ZDIyNmJlMzRhY2Q4MGJmYTA0ZDBkOTY2NS4uZjZhNmJiYzQ2NGI5YWZhMzhkNTdiNGQxZWM0
N2NmM2NjYTkyNjZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNjksNyArNjks
NiBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdWJtaXRJbnB1dFR5cGUu
aCIKICNpbmNsdWRlICJUZWxlcGhvbmVJbnB1dFR5cGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRl
ICJUaW1lSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVVJMSW5wdXRUeXBlLmgiCkBAIC03OCw2ICs3
Nyw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCA1YjdkOTAxYWZjMDI1YjU5
YWY5MWJiN2VkYWY0YzdiMzAzY2YxMDE4Li5mMzVmYjRjMjYxMDdjNTVmMzExMjFlZTVlZDJhNjk5
Y2JmNDgzYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
CkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCmluZGV4IGY2
ZjAyNzZkMThkODY4MDQwZGJmYjYyNTg4MmI3MDhjMzM2NThlNWIuLjkwMzJkYjY3NTdmNWNmMmUx
MzdhOTQwYzk2ZGMwZTAxMjFlYTQ5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBl
LmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBhZmE4ZTEy
ZDgxYmQ4NWJkOTYzZjhkY2IyYzhiZWM1NDc5NzRjMDFiLi44NWEzYWQyOWFlNTA5YjkxMDVlZTVh
OTQ2ZjI2MmJkMGZiYzM4ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTQzLDE5ICs0NCwxOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHR5cGVkZWYgdW5zaWduZWQgVHJ1bmNhdGlvbkZ1bmN0aW9uKGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQga2VlcENvdW50LCBVQ2hhciogYnVmZmVyLCBi
b29sIHNob3VsZEluc2VydEVsbGlwc2lzKTsKIAotc3RhdGljIGlubGluZSBpbnQgdGV4dEJyZWFr
QXRPclByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQpCitzdGF0aWMg
aW5saW5lIGludCB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKFVCcmVha0l0ZXJhdG9yKiBpdCwgaW50
IG9mZnNldCkKIHsKLSAgICBpZiAoaXNUZXh0QnJlYWsoaXQsIG9mZnNldCkpCisgICAgaWYgKHVi
cmtfaXNCb3VuZGFyeShpdCwgb2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKIAotICAg
IGludCByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIG9mZnNldCk7Ci0gICAgcmV0dXJu
IHJlc3VsdCA9PSBUZXh0QnJlYWtEb25lID8gMCA6IHJlc3VsdDsKKyAgICBpbnQgcmVzdWx0ID0g
dWJya19wcmVjZWRpbmcoaXQsIG9mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBVQlJLX0RP
TkUgPyAwIDogcmVzdWx0OwogfQogCi1zdGF0aWMgaW5saW5lIGludCBib3VuZGVkVGV4dEJyZWFr
Rm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkK
K3N0YXRpYyBpbmxpbmUgaW50IGJvdW5kZWRUZXh0QnJlYWtGb2xsb3dpbmcoVUJyZWFrSXRlcmF0
b3IqIGl0LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKQogewotICAgIGludCByZXN1bHQgPSB0ZXh0
QnJlYWtGb2xsb3dpbmcoaXQsIG9mZnNldCk7Ci0gICAgcmV0dXJuIHJlc3VsdCA9PSBUZXh0QnJl
YWtEb25lID8gbGVuZ3RoIDogcmVzdWx0OworICAgIGludCByZXN1bHQgPSB1YnJrX2ZvbGxvd2lu
ZyhpdCwgb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVzdWx0ID09IFVCUktfRE9ORSA/IGxlbmd0aCA6
IHJlc3VsdDsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQga2VlcENvdW50LCBV
Q2hhciogYnVmZmVyLCBib29sIHNob3VsZEluc2VydEVsbGlwc2lzKQpAQCAtMTQ2LDcgKzE0Nyw3
IEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodENsaXBUb1dvcmRCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IGxlbmd0
aCk7CiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IFNUUklOR19CVUZGRVJfU0laRSk7CiAKLSAgICBU
ZXh0QnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmlu
Zykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CiAg
ICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIGtlZXBD
b3VudCk7CiAgICAgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBrZWVwTGVuZ3RoKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCmluZGV4IDgwZjFjNjNkMDllNDlkNmYyODg5OWVhZDQzMWY4MjM2N2E1MDQ0YWEuLmNm
YjU2NzFkNzAzNTlhODkwODEyMThjMzhjNGI4OGJiOWRiOWIzODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCkBAIC0zMCwxMCArMzAsMTEgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJ1bi5o
IgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAK
ICNpZiBQTEFURk9STShJT1MpCkBAIC0xNzYsMjEgKzE3NywyMSBAQCB1bnNpZ25lZCBDb21wbGV4
VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBh
cnRpYWxHbAogICAgICAgICAgICAgICAgIC8vIGNvdWxkIHVzZSB0aGUgZ2x5cGgncyAibGlnYXR1
cmUgY2FyZXRzIi4gVGhpcyBpcyBhdmFpbGFibGUgaW4gQ29yZVRleHQgdmlhIENURm9udEdldExp
Z2F0dXJlQ2FyZXRQb3NpdGlvbnMoKS4KICAgICAgICAgICAgICAgICBDRkluZGV4IGhpdEluZGV4
ID0gaGl0R2x5cGhTdGFydCArIChoaXRHbHlwaEVuZCAtIGhpdEdseXBoU3RhcnQpICogKG1fcnVu
Lmx0cigpID8geCAvIGFkanVzdGVkQWR2YW5jZSA6IDEgLSB4IC8gYWRqdXN0ZWRBZHZhbmNlKTsK
ICAgICAgICAgICAgICAgICBpbnQgc3RyaW5nTGVuZ3RoID0gY29tcGxleFRleHRSdW4uc3RyaW5n
TGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvclBvc2l0
aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcoY29tcGxleFRl
eHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBVQnJl
YWtJdGVyYXRvciogY3Vyc29yUG9zaXRpb25JdGVyYXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0
b3IoU3RyaW5nVmlldyhjb21wbGV4VGV4dFJ1bi5jaGFyYWN0ZXJzKCksIHN0cmluZ0xlbmd0aCkp
OwogICAgICAgICAgICAgICAgIGludCBjbHVzdGVyU3RhcnQ7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzVGV4dEJyZWFrKGN1cnNvclBvc2l0aW9uSXRlcmF0b3IsIGhpdEluZGV4KSkKKyAgICAgICAg
ICAgICAgICBpZiAodWJya19pc0JvdW5kYXJ5KGN1cnNvclBvc2l0aW9uSXRlcmF0b3IsIGhpdElu
ZGV4KSkKICAgICAgICAgICAgICAgICAgICAgY2x1c3RlclN0YXJ0ID0gaGl0SW5kZXg7CiAgICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IHRl
eHRCcmVha1ByZWNlZGluZyhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChjbHVzdGVyU3RhcnQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAg
ICAgICAgICAgICAgICAgY2x1c3RlclN0YXJ0ID0gdWJya19wcmVjZWRpbmcoY3Vyc29yUG9zaXRp
b25JdGVyYXRvciwgaGl0SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2x1c3RlclN0
YXJ0ID09IFVCUktfRE9ORSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9
IDA7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlUGFy
dGlhbEdseXBocykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXhUZXh0UnVuLnN0
cmluZ0xvY2F0aW9uKCkgKyBjbHVzdGVyU3RhcnQ7CiAKLSAgICAgICAgICAgICAgICBpbnQgY2x1
c3RlckVuZCA9IHRleHRCcmVha0ZvbGxvd2luZyhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJ
bmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmQgPT0gVGV4dEJyZWFrRG9uZSkK
KyAgICAgICAgICAgICAgICBpbnQgY2x1c3RlckVuZCA9IHVicmtfZm9sbG93aW5nKGN1cnNvclBv
c2l0aW9uSXRlcmF0b3IsIGhpdEluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoY2x1c3RlckVu
ZCA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJFbmQgPSBzdHJpbmdM
ZW5ndGg7CiAKICAgICAgICAgICAgICAgICBDR0Zsb2F0IGNsdXN0ZXJXaWR0aDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAKaW5kZXggNDdkMjQ0
NzVhYzA5ODk0ZTAzODg1MWE0OGJiOWMwNWVkZGVmMzdjMi4uZTc4MGZmNjgyMGYwOWE3NjEzNzdm
MTJhOTQzOTEyNGFkMmFhYjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Qm91bmRhcmllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Qm91bmRhcmllcy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgogCisjaW5jbHVkZSA8dW5pY29kZS91YnJr
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKQEAgLTYyLDI3ICs2MywyNyBAQCB1bnNpZ25lZCBzdGFy
dE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQoU3RyaW5nVmlldyB0ZXh0KQogCiBpbnQgZmluZE5l
eHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9uLCBib29sIGZvcndh
cmQpCiB7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4
dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAK
ICAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha0ZvbGxvd2lu
ZyhpdCwgcG9zaXRpb24pOwotICAgICAgICB3aGlsZSAocG9zaXRpb24gIT0gVGV4dEJyZWFrRG9u
ZSkgeworICAgICAgICBwb3NpdGlvbiA9IHVicmtfZm9sbG93aW5nKGl0LCBwb3NpdGlvbik7Cisg
ICAgICAgIHdoaWxlIChwb3NpdGlvbiAhPSBVQlJLX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFdl
IHN0b3Agc2VhcmNoaW5nIHdoZW4gdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5nIHRoZSBicmVhayBp
cyBhbHBoYW51bWVyaWMuCiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBv
c2l0aW9uKSA8IHRleHQubGVuZ3RoKCkgJiYgdV9pc2FsbnVtKHRleHRbcG9zaXRpb24gLSAxXSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogCi0gICAgICAgICAgICBwb3NpdGlv
biA9IHRleHRCcmVha0ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgICAgICAgICAgcG9zaXRp
b24gPSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOwogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIHRleHQubGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcG9zaXRpb24gPSB0
ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIHBvc2l0aW9uKTsKLSAgICAgICAgd2hpbGUgKHBvc2l0aW9u
ICE9IFRleHRCcmVha0RvbmUpIHsKKyAgICAgICAgcG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhp
dCwgcG9zaXRpb24pOworICAgICAgICB3aGlsZSAocG9zaXRpb24gIT0gVUJSS19ET05FKSB7CiAg
ICAgICAgICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgZm9sbG93
aW5nIHRoZSBicmVhayBpcyBhbHBoYW51bWVyaWMuCiAgICAgICAgICAgICBpZiAocG9zaXRpb24g
JiYgdV9pc2FsbnVtKHRleHRbcG9zaXRpb25dKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CiAKLSAgICAgICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBw
b3NpdGlvbik7CisgICAgICAgICAgICBwb3NpdGlvbiA9IHVicmtfcHJlY2VkaW5nKGl0LCBwb3Np
dGlvbik7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gMDsKQEAgLTkxLDE5ICs5MiwxOSBA
QCBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwgaW50IHBvc2l0aW9u
LCBib29sIGZvcndhcmQpCiAKIHZvaWQgZmluZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQs
IGludCBwb3NpdGlvbiwgaW50KiBzdGFydCwgaW50KiBlbmQpCiB7Ci0gICAgVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7Ci0gICAgKmVuZCA9IHRleHRCcmVh
a0ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHQpOworICAgICplbmQgPSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRp
b24pOwogICAgIGlmICgqZW5kIDwgMCkKLSAgICAgICAgKmVuZCA9IHRleHRCcmVha0xhc3QoaXQp
OwotICAgICpzdGFydCA9IHRleHRCcmVha1ByZXZpb3VzKGl0KTsKKyAgICAgICAgKmVuZCA9IHVi
cmtfbGFzdChpdCk7CisgICAgKnN0YXJ0ID0gdWJya19wcmV2aW91cyhpdCk7CiB9CiAKIHZvaWQg
ZmluZEVuZFdvcmRCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgaW50KiBl
bmQpCiB7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4
dCk7Ci0gICAgKmVuZCA9IHRleHRCcmVha0ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgIFVC
cmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgICplbmQgPSB1
YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOwogICAgIGlmICgqZW5kIDwgMCkKLSAgICAgICAg
KmVuZCA9IHRleHRCcmVha0xhc3QoaXQpOworICAgICAgICAqZW5kID0gdWJya19sYXN0KGl0KTsK
IH0KIAogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRlMThhNGM4
ZmY1NGNiZGUxYmQwYjJjZWY5MTJjZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMyOGQyY2Vm
ZTUzZDI1ZjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4dFdvcmRG
cm9tSW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKICAg
ICAvLyBmb3IgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25lLCBhbmQg
aW4gdGhlIGZ1dHVyZSB3aWxsIGJlCiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUgaVBob25l
LXNwZWNpZmljIGJlaGF2aW9yIGZvciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGluZy4KICAg
ICBpbnQgcG9zID0gcG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0g
d29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0g
d29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAgICAgIGlm
IChmb3J3YXJkKSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4
dEJyZWFrRm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVi
cmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0g
VUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwogICAg
ICAgICAgICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0
aCgpICYmIChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAmJiBp
c1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJlY2VkaW5n
KGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJv
dW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQogICAg
ICAgICAgICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9zID4gMCAm
JiBpc1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRl
eHRbcG9zIC0gMV0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVh
a0xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4IDg4
ZDdlOTk1ODIwMzU4OTcwZjBlOGExZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJmNDljOTAx
MjFiMDgwMDZlMzE4MDk1NDU2ZmJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGlu
ZXMuaApAQCAtMTAyLDEwICsxMDIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQ
b3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKICAgICAg
ICAgICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewogICAgICAg
ICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFy
eSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAgICAgICAg
IGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBUZXh0
QnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlv
ckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciogYnJl
YWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9y
LCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlv
ckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9
PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3LDExICsx
NDcsMTEgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29z
ZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0QnJlYWsg
fHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBp
ZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8g
cHJpb3IgY29udGV4dC4KICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkg
ewotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6
eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAg
VUJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJp
b3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAxKTsK
LSAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhi
cmVha0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAgICAg
ICAgaW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBwcmlv
ckNvbnRleHRMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9
PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggYzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0OGVmMmUz
OGQwNS4uYTBlZjgyZWE5NzI5YTJkYjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBACiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hh
cGVPdXRzaWRlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGEyNWU0
MGY4ZWM1NjY3MTVmMmFlYjBkYTQ0MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0ZDExYzUz
NGNlY2M2M2ExMzY0ODA2NmQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0
cmluZywgVUNoYXIgcHJldmlvdXMpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0g
PSBzdHJpbmdJbXBsW2kgLSAxXTsKICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogYm91
bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5j
aGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkg
PSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0
ZXJzKCksIGxlbmd0aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm47
CiAKQEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmlu
ZywgVUNoYXIgcHJldmlvdXMpCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwog
CiAgICAgaW50MzJfdCBlbmRPZldvcmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHRleHRC
cmVha0ZpcnN0KGJvdW5kYXJ5KTsKLSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVha05leHQo
Ym91bmRhcnkpOyBlbmRPZldvcmQgIT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQgPSBlbmRP
ZldvcmQsIGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAgaW50MzJf
dCBzdGFydE9mV29yZCA9IHVicmtfZmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5kT2ZXb3Jk
ID0gdWJya19uZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3RhcnRPZldv
cmQgPSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsKICAgICAg
ICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBzdHJp
bmcKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFd
ID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJl
dmlvdXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCAr
IDE7IGkgPCBlbmRPZldvcmQ7IGkrKykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50IFJlbmRl
clRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICByZXR1cm4g
Y3VycmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5pbXBsKCk7
Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRv
cihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgp
KSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRv
cihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgp
KSk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCi0g
ICAgbG9uZyByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJlbnQpOwot
ICAgIGlmIChyZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9IHVicmtf
cHJlY2VkaW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVCUktfRE9O
RSkKICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsxNTIzLDcg
QEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQg
Y3VycmVudCkgY29uc3QKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgU3RyaW5n
SW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2h5
IHRoaXMgaGFzIHNvIG11Y2ggaGFuZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5nIFRleHRC
cmVha0l0ZXJhdG9yLgorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBzbyBtdWNo
IGhhbmRyb2xsZWQgY29kZSByYXRoZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4KICAgICAv
LyBBbHNvIHVuY2xlYXIgd2h5IHRoaXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5jZUJ5Q29t
YmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlz
IGZhbmNpZXIgY2FzZSBjb3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBubwpAQCAt
MTY0OSwxMiArMTY0OSwxMiBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVu
dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5nSW1wbCog
dGV4dEltcGwgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVy
czE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVy
czE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAg
IHJldHVybiBjdXJyZW50ICsgMTsKIAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93
aW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVha0RvbmUp
CisgICAgbG9uZyByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVudCk7Cisg
ICAgaWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgKyAx
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAppbmRl
eCBhZWU3NWE0NmZhZjA0MTAyMzM0MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1MzZlNTJi
YzVkODQ3ZTcxMTZjNmQyOTUwZmVmMzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRv
ci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUg
IlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oCmluZGV4IGJmZDk4NjdhNDVlMWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2IuLjBjOWQ5
ZjhjNzg0ZmJhMmZkZTdmNWYyZjMwYmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUg
IkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNj
L1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBw
b3J0Lm1tCmluZGV4IDg5ZWIyYTMyOWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0OTUuLmM0
ZWZjMmU0ZGUxMGQwMTU3N2Q2NTQ1ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQ
SS5oPgotI2ltcG9ydCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2ltcG9ydCA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297267</attachid>
            <date>2016-12-15 17:46:35 -0800</date>
            <delta_ts>2016-12-15 18:24:33 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-165931-20161215174542.patch</filename>
            <type>text/plain</type>
            <size>55947</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFiNDdhZDgzNTRkODA1Zjc2NGVhNTU4
NzkxM2I5MDY2NTRhZjk3MTYuLmEwNzhjOTY4MjNjNWE1NWY3MzY5MGYxYWQ3YTQ0ZDI0ODZlMGFj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV1RG
OjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnRha2UpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnB1dCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
Ojpjb21wdXRlSW5kZXhFbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6b3BlbkxpbmVCcmVha0l0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OmdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpjYWNoZU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAg
ICAgICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgIChX
VEY6OnRleHRCcmVha0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTGFz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRl
eHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxv
d2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0N1cnJlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjpsYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6OnNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6dXBkYXRlUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cHJpb3JDb250ZXh0TGVuZ3RoKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yOjpvcGVyYXRvciBVQnJlYWtJdGVyYXRvciopOgorICAgICAgICAoV1RGOjpOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBE
ZWxldGVkLgorCiAyMDE2LTEyLTE1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRl
eC5ydT4KIAogICAgICAgICBBZGRlZCBtaXNzaW5nIG92ZXJyaWRlIGFuZCBmaW5hbCBzcGVjaWZp
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNmMyMjQ5ZDQ4N2EwMzlmOTZjNmM5ZWQ4Yjc2YmJhYmZjY2EwNTFj
NS4uODg0NTQyMWFjMzgxZTIyYmMwNGQwNTliZDk4NGYxODI1NDcwMjQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDU3IEBACiAyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0
ZXJhdG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9DaGFyYWN0
ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFwcGVu
ZERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbmRNaXNzcGVsbGluZ3MpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0b3JGb3JNYXhP
ZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjppc0xvZ2ljYWxTdGFydE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjppc2xvZ2ljYWxFbmRPZldvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0U2VudGVuY2VC
b3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjplbmRTZW50ZW5jZUJvdW5kYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRTZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRleHRCcmVha0F0T3JQcmVjZWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Ym91
bmRlZFRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodENsaXBUb1dv
cmRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpv
ZmZzZXRGb3JQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRW5k
V29yZEJvdW5kYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0JyZWFrTGluZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2Fi
bGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uTG9vc2VseSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
Q2FwaXRhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNr
d2FyZERlbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRPZmZzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0
b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oOgorCisyMDE2LTEy
LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKICAgICAgICAg
W0NvY29hXSBJbXBsZW1lbnQgZm9udC1zeW50aGVzaXM6IHNtYWxsLWNhcHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg5MgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKaW5kZXggNTYzMTgzMzJiMjRiNjNiOGYwN2YwOWQ1ODhhZGY2ZjkwNmJhODY3ZS4uOTJjZDBj
M2FkNjAxN2IwMjQ4ZjFiN2VlOWYzMGQ0OGE3MGUwZWZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0ZXJh
dG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBv
cnQubW06CisKIDIwMTYtMTEtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIER1bXBSZW5kZXJUcmVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAppbmRl
eCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJjZTZhYTIzNzczLi5jMGUwZTU3ZGU5YjZi
ZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRh
a2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2Rl
LCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKICAgICB7
CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbWFrZUxvY2Fs
ZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKIAotICAgICAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAgICAgICBVQnJlYWtJdGVyYXRvciogaXRlcmF0
b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fcG9vbFtpXS5maXJzdCA9PSBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1fcG9v
bFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3IpKTsKICAgICAgICAg
aWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkpIHsKQEAgLTk3LDggKzk3LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJyZWFrSXRlcmF0b3IqPiwg
Y2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWlj
U3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0
cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKKyAgICBIYXNoTWFwPFVC
cmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKIAogICAgIGZy
aWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9y
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIzMTE3ZmJiMTZkZjU5NTdhLi5kNzg1NjJl
MmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhmZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSAiU3RyaW5nVmlldy5oIgog
CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAgICAgICAgcmV0dXJuIHRleHRCcmVha0ZvbGxv
d2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5kZXgpOworICAgICAgICByZXR1cm4gdWJya19m
b2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2luZGV4KTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmluZGV4IDA1YTUxOTU2
MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkzMjcuLjFkYTBhYjYxOGE1OTk5ODhkYmRkMDc2
YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIEl0ZXJhdG9y
IGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJy
ZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBj
dXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsKICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRl
cnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3Blbih0eXBlLCBsb2NhbGUsIDAs
IDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gdWJya19v
cGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMpOwogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsg
aXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7
CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykKIAotc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hh
ciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9y
V2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMpCiB7CiAgICAgVVBhcnNlRXJyb3IgcGFy
c2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1bGVzKTsKICAgICBhdXRvIHVwY29udmVy
dGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0
b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwg
JnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAm
cGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VD
Q0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAl
cyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOwogICAgIHJldHVy
biBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKIAog
Ly8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0
VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBz
dHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihVQnJlYWtJ
dGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTgwLDcg
KzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgfQogCiAgICAgICAgIFVF
cnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRV
VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJrX3NldFVUZXh0KCZpdGVyYXRvciwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVz
ICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5
LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3Io
VGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgdXRleHRfY2xvc2Uo
dGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VGV4dCgmaXRlcmF0b3Is
IHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7
CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVy
YXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3Ry
aW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0KIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJh
dG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWdu
ZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0
QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3
IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRo
QnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVGV4dEJyZWFrSXRl
cmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYg
aXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFr
SXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVi
cmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlm
IChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKICAgICAgICAgICAgIExPR19FUlJPUigidWJy
a19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJh
dG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAg
ICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDYsMjUgKzE0NiwyNSBAQCBzdGF0aWMg
VGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJl
YWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMgaXRlcmF0b3JzCiAKLVRleHRCcmVha0l0ZXJh
dG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK1VCcmVha0l0ZXJhdG9y
KiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJl
YWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1dPUkQpOwogICAgIGlmICghc3Rh
dGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7
CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVu
Y2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOworICAg
IHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5p
dGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwogICAgIGlmICghc3RhdGljU2VudGVuY2VC
cmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBzZXRU
ZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBz
dHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMg
YmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1bGVzIG9mIElDVSA1NwpAQCAtMjkx
LDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3Io
U3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIhIXNhZmVfcmV2ZXJzZTsiCiAgICAgICAgICIh
IXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBz
dGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVz
KGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVu
dEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CiAjZWxzZSAv
LyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRoZSBzcGVjaWFsIFRoYWkgY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRv
ciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJL
X0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJz
b3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAi
dGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKCFzdGF0aWNDdXJzb3JN
b3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICszMDMsMTYgQEAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHNl
dFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciwgc3RyaW5nKTsK
IH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlv
ckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0
ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29u
c3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKLSAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS50YWtl
KGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExp
bmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NK
Syk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBy
ZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CiB9CiAKLXZvaWQgcmVsZWFzZUxpbmVC
cmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3ZvaWQgcmVsZWFzZUxp
bmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlRf
QVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAgLTc4MCw3ICs3ODAsNyBAQCBib29sIGlzQ0pL
TG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitV
QnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKICAgICBV
QnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5M
aW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXQK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrSXRlcik7CisgICAgcmV0dXJuIHVicmtJdGVy
OwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqJiBp
dGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciomIGl0
ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9yKiB1YnJrSXRlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVicmtJdGVyKTsKICAgICB1YnJrX2Nsb3NlKHVi
cmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBzdGQ6OmF0b21p
YzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgPSBB
VE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0aWMgc3RkOjphdG9taWM8VUJyZWFrSXRlcmF0
b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yID0gQVRPTUlDX1ZBUl9JTklUKG51
bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRCcmVha0l0ZXJhdG9yKiBnZXROb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRpYyBpbmxpbmUgVUJyZWFrSXRlcmF0b3IqIGdl
dE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQogewogICAgIGlmIChhdXRvICpyZXMg
PSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLmV4Y2hhbmdlKG51bGxwdHIsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAgICByZXR1cm4gcmVzOwogICAgIHJldHVybiBp
bml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9y
KiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lkIGNhY2hlTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2FjaGVNZSkKIHsKICAgICBpZiAoYXV0byAqb2xk
ID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvci5leGNoYW5nZShjYWNoZU1lLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAgICAgdWJya19jbG9zZShyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7CisgICAgICAgIHVicmtfY2xvc2Uob2xkKTsKIH0K
IAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKQEAgLTg0OCw1MiArODQ4LDExIEBAIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpzd2FwKG1faXRlcmF0b3IsIG90aGVyLm1faXRl
cmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGltcGxlbWVuYXRpb24uCiAKLWludCB0ZXh0QnJl
YWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtf
Zmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0K
LWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBy
ZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Ip
Ci17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9y
Kj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZXZpb3VzKFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19wcmV2aW91cyhyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZWNl
ZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJu
IHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
ciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3Iq
IGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVybiB1YnJrX2ZvbGxvd2luZyhyZWludGVy
cHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4
dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJu
IHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
KTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGlu
dCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0aW9uKTsKLX0KLQotYm9vbCBpc1dv
cmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQorYm9vbCBpc1dvcmRUZXh0
QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQogewotICAgIGludCBydWxlU3RhdHVzID0g
dWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKGl0ZXJhdG9y
KTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKIH0KIApAQCAtOTIw
LDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyBzdHJp
bmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyA9IDA7Ci0gICAg
d2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3IpICE9IFRleHRCcmVha0RvbmUpCisgICAgd2hp
bGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJSS19ET05FKQogICAgICAgICArK251bUdyYXBo
ZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdyYXBoZW1lQ2x1c3RlcnM7CiB9CkBAIC05NDgs
MTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFwaGVtZQogICAgIH0KIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzOyArK2kpIHsKLSAgICAgICAg
aWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRleHRCcmVha0RvbmUpCisgICAgICAgIGlm
ICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktfRE9ORSkKICAgICAgICAgICAgIHJldHVybiBz
dHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVybiB0ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9y
KTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0ZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggOGFmYjU1
ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAwNmE5ZS4uYmNmNDRjMDdhNGVjOTFiNTE0Njdj
MjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgVGV4dEJy
ZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9u
bHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2Yg
YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBlbnVtIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0cmljdCB9OwpAQCAtMzUsMjcgKzMzLDE3
IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JNb2RlIHsgRGVmYXVsdCwgTG9vc2UsIE5v
cm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBVSSBjb252ZW50aW9ucy4gT25lIG5vdGFibGUg
ZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJlbnQKIC8vIGZyb20gY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXJzLCBzZWUgYnVnIDI0MzQyLgog
Ly8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBhbmQgc2VsZWN0aW9uIG1hbmlwdWxhdGlv
bnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVy
YXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
VGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4
dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VM
aW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciomKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJ
dGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVh
a0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha05leHQoVGV4dEJy
ZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrUHJldmlvdXMo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrQ3Vy
cmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJl
YWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwot
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
Kik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNo
YXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKik7CitVQnJlYWtJdGVyYXRvciogb3Bl
bkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFVC
cmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRCcmVhayhVQnJlYWtJdGVyYXRvciopOwog
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NKS0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1YmxpYzoKIAogICAgIFVDaGFyIGxhc3RDaGFyYWN0
ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlv
cl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3Ig
Y29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0dXJuIG1fcHJpb3JDb250ZXh0WzFdOwogICAg
IH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJhY3RlcigpIGNvbnN0CiAgICAgewotICAg
ICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBwcmlvciBjb250ZXh0IGxlbmd0aCIpOwogICAg
ICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CiAgICAgfQogCiAgICAgdm9pZCBzZXRQcmlv
ckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQogICAgIHsKLSAgICAgICAg
Q09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4
dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVC
cmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAg
bV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7CiAgICAgICAgIG1fcHJpb3JDb250ZXh0
WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0ZVByaW9yQ29udGV4dChVQ2hhciBs
YXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4
dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBtX3ByaW9yQ29udGV4dFsx
XTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBsYXN0OwogICAgIH0KIAogICAgIHZvaWQg
cmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBl
Y3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0
ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAw
OwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7CiAgICAgfQpAQCAtMTIwLDcgKzEwOCw3
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgoKSBjb25zdAogICAg
IHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09N
UElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJy
ZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVh
a0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgaWYg
KG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAgICAgICArK3ByaW9yQ29udGV4dExlbmd0aDsK
ICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFswXSkKQEAgLTEzMiw3ICsxMjAsNyBAQCBw
dWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZp
b3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKICAgICAv
LyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUg
cHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZwogICAgIC8vIHByZXZpb3VzbHkgc3Rv
cmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBn
ZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorICAgIFVCcmVha0l0ZXJhdG9yKiBnZXQo
dW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHByaW9y
Q29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0eSk7CiAgICAgICAgIGNvbnN0IFVD
aGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRb
cHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDogMDsKQEAgLTE2NCw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgcHJpb3JD
b250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwogICAgIEF0
b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7
IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsK
ICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQgeyBudWxscHRyIH07CiAgICAg
TGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVm
YXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoIHsgMCB9OwpA
QCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgogCiAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYpOwogCi0gICAgb3Bl
cmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQor
ICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7
IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKKyAgICBV
QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07CiAKIC8vIENvdW50cyB0aGUgbnVtYmVyIG9m
IGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWlyIG9yIGEgc2VxdWVuY2UKQEAgLTIw
NSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0lu
R3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNpZ25lZAogdXNpbmcgV1RGOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9yTW9kZTsKIHVzaW5n
IFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKLXVzaW5nIFdURjo6VGV4dEJy
ZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OmlzV29y
ZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA5N2ZhNDVm
MTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYzN2QwLi40ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUy
YTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBA
IC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIC8vIFdlIG5lZWQgYXQg
bGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVhZCB0byBhY2NvdW50IGZvciBVVEYtMTYgc3Vy
cm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVuZ3RoTGltaXQgPCBjaGFyYWN0ZXJMZW5ndGgp
IHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3
KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNoYXJhY3Rlckxlbmd0aExpbWl0ICsgMiA+IGNo
YXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5ndGggOiBjaGFyYWN0ZXJMZW5ndGhMaW1pdCAr
IDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVhayhpdCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQp
KQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3RoTGltaXQgPSB0ZXh0QnJlYWtQcmVjZWRpbmco
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICAgICAgaWYgKCF1YnJrX2lzQm91bmRhcnko
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAgICAgICAgICAgIGNoYXJhY3Rlckxlbmd0aExp
bWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKICAgICB9CiAK
ICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDBlNWRjZDYzYWE5OTYxZjIyNzA1NzQzZTBm
ZTA0NTk1M2M3YjFhZjEuLjM3OWQ3ZDI5OWU3NjA2NzJjYjU2YTkzYTY2ODQ1MDRjOTMwOTBiYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAg
LTMzLDEyICszMywxMyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxl
Y3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRl
ICJWaXNpYmxlVW5pdHMuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NiwxMSArNzcsMTEgQEAgc3RhdGlj
IHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0
cmluZ1ZpZXcgdGV4dCwgVmUKIAogc3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hl
Y2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdv
cmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdv
cmRCcmVha0l0ZXJhdG9yKHRleHQpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAgIHJldHVy
bjsKLSAgICBmb3IgKGludCB3b3JkU3RhcnQgPSB0ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsg
d29yZFN0YXJ0ID49IDA7ICkgewotICAgICAgICBpbnQgd29yZEVuZCA9IHRleHRCcmVha05leHQo
aXRlcmF0b3IpOworICAgIGZvciAoaW50IHdvcmRTdGFydCA9IHVicmtfY3VycmVudChpdGVyYXRv
cik7IHdvcmRTdGFydCA+PSAwOyApIHsKKyAgICAgICAgaW50IHdvcmRFbmQgPSB1YnJrX25leHQo
aXRlcmF0b3IpOwogICAgICAgICBpZiAod29yZEVuZCA8IDApCiAgICAgICAgICAgICBicmVhazsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDgzY2FlNGMzODY2
MmJhODM5ZmYxZjdhZTc4Y2UxMTZhNjZmMDczYmYuLjE1M2Y1ZWE0ZjRhNzQ1NDAyNzVmYTVjYTRj
ZmZkYTY0ZWQxYmU4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
QEAgLTM3LDkgKzM3LDEwIEBACiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1
ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiaHRtbGVkaXRp
bmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg1LDcgKzI4Niw3IEBAIHN0YXRpYyBj
b25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseU5leHRCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24sCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVy
YXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwK
K3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3Vu
ZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5l
VGV4dEJveCogdGV4dEJveCwKICAgICBpbnQmIHByZXZpb3VzQm94TGVuZ3RoLCBib29sJiBwcmV2
aW91c0JveEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2Fj
aGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJveGVzKQogewogICAgIHByZXZpb3Vz
Qm94SW5EaWZmZXJlbnRCbG9jayA9IGZhbHNlOwpAQCAtMzA1LDcgKzMwNiw3IEBAIHN0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShj
b25zdCBWaXNpYmxlUG9zCiAgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXco
c3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwogfQogCi1zdGF0aWMgVGV4dEJyZWFrSXRl
cmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gs
CitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91
bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGlu
ZVRleHRCb3gqIHRleHRCb3gsCiAgICAgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50QmxvY2ssIFZl
Y3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hl
cyYgbGVhZkJveGVzKQogewogICAgIG5leHRCb3hJbkRpZmZlcmVudEJsb2NrID0gZmFsc2U7CkBA
IC0zMjMsMjAgKzMyNCwyMCBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0
ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvcwogICAgIHJldHVybiB3
b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZy5kYXRhKCksIHN0cmluZy5zaXplKCkp
KTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRPZldvcmQoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQorc3RhdGljIGJvb2wg
aXNMb2dpY2FsU3RhcnRPZldvcmQoVUJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwg
Ym9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJvb2wgYm91bmRhcnkgPSBoYXJkTGluZUJyZWFr
ID8gdHJ1ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9uKTsKKyAgICBib29sIGJvdW5kYXJ5
ID0gaGFyZExpbmVCcmVhayA/IHRydWUgOiB1YnJrX2lzQm91bmRhcnkoaXRlciwgcG9zaXRpb24p
OwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRleHRC
cmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAgdWJya19mb2xsb3dpbmcoaXRlciwg
cG9zaXRpb24pOwogICAgIC8vIGlzV29yZFRleHRCcmVhayByZXR1cm5zIHRydWUgYWZ0ZXIgbW92
aW5nIGFjcm9zcyBhIHdvcmQgYW5kIGZhbHNlIGFmdGVyIG1vdmluZyBhY3Jvc3MgYSBwdW5jdHVh
dGlvbi9zcGFjZS4KICAgICByZXR1cm4gaXNXb3JkVGV4dEJyZWFrKGl0ZXIpOwogfQogCi1zdGF0
aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBw
b3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQorc3RhdGljIGJvb2wgaXNsb2dpY2FsRW5kT2ZX
b3JkKFVCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQgcG9zaXRpb24sIGJvb2wgaGFyZExpbmVCcmVh
aykKIHsKLSAgICBib29sIGJvdW5kYXJ5ID0gaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRpb24pOwor
ICAgIGJvb2wgYm91bmRhcnkgPSB1YnJrX2lzQm91bmRhcnkoaXRlciwgcG9zaXRpb24pOwogICAg
IHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3VuZGFyeSkgJiYgaXNXb3JkVGV4dEJyZWFrKGl0
ZXIpOwogfQogCkBAIC0zNTEsNyArMzUyLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXN1
YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24KICAg
ICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9j
ayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgSW5saW5lQm94KiBwcmV2
aW91c2x5VmlzaXRlZEJveCA9IG51bGxwdHI7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQg
PSB2aXNpYmxlUG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSBudWxscHRy
OworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0cjsKIAogICAgIENhY2hlZExvZ2lj
YWxseU9yZGVyZWRMZWFmQm94ZXMgbGVhZkJveGVzOwogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4g
c3RyaW5nOwpAQCAtMzkwLDcgKzM5MSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFs
V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uCiAgICAg
ICAgIGlmICghaXRlcikKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHRleHRCcmVha0Zp
cnN0KGl0ZXIpOworICAgICAgICB1YnJrX2ZpcnN0KGl0ZXIpOwogICAgICAgICBpbnQgb2Zmc2V0
SW5JdGVyYXRvciA9IG9mZnNldEluQm94IC0gdGV4dEJveC5zdGFydCgpICsgcHJldmlvdXNCb3hM
ZW5ndGg7CiAKICAgICAgICAgYm9vbCBpc1dvcmRCcmVhazsKQEAgLTExMDksNyArMTExMCw3IEBA
IFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiB1bnNpZ25lZCBzdGFydFNlbnRlbmNlQm91bmRhcnko
U3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmls
aXR5LCBib29sJikKIHsKICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4g
cmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4KLSAgICByZXR1cm4gdGV4dEJyZWFrUHJl
Y2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5s
ZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExMTksNyArMTEyMCw3IEBAIFZpc2libGVQb3Np
dGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIAog
dW5zaWduZWQgZW5kU2VudGVuY2VCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkLCBC
b3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmKQogewotICAgIHJldHVybiB0
ZXh0QnJlYWtOZXh0KHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSk7CisgICAgcmV0dXJuIHVi
cmtfbmV4dChzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCkpOwogfQogCiBWaXNpYmxlUG9zaXRp
b24gZW5kT2ZTZW50ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMTEz
Miw3ICsxMTMzLDcgQEAgc3RhdGljIHVuc2lnbmVkIHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJv
dW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW4KIHsKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBpZGVudGljYWwgdG8gc3RhcnRTZW50ZW5jZUJvdW5kYXJ5LiBJJ20gcHJldHR5IHN1
cmUgdGhhdCdzIG5vdCByaWdodC4KICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBmdW5jdGlv
biBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4KLSAgICByZXR1cm4gdGV4dEJy
ZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7
CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwg
dGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNlUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExNDQsNyArMTE0NSw3
IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXh0U2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1Zp
ZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaWRl
bnRpY2FsIHRvIGVuZFNlbnRlbmNlQm91bmRhcnkuCiAgICAgLy8gVGhhdCBpc24ndCByaWdodC4g
VGhpcyBmdW5jdGlvbiBuZWVkcyB0byBtb3ZlIHRvIHRoZSBlcXVpdmFsZW50IHBvc2l0aW9uIGlu
IHRoZSBmb2xsb3dpbmcgc2VudGVuY2UuCi0gICAgcmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhz
ZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOworICAgIHJldHVybiB1YnJrX2ZvbGxvd2lu
ZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOwogfQogCiBWaXNpYmxlUG9zaXRpb24g
bmV4dFNlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDZjMWQ4YjNlZDQ1ZTI0
NWE3YzdjNDY5NzAwMmJkMTg5NmM5M2Q3MzkuLmQ0M2Q0ZWY5ZTAxMTkyNmQwZThhMGViZGVjODc1
MmQzZWZmZGZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtNjIsNyArNjIsNiBAQAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICNpbmNs
dWRlICJUb3VjaEV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAppbmRleCBjNDFiYzhmZmVlZWUwODZjNDU2YzJhMjA3OGU0ZmYwYzJmMDQ1YWU3Li4z
NWE0MmIzZmRjNTdkYjQ0MmNhMTIxZDZlZmUyYjBmZmI5NDhiNDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNs
dWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCmluZGV4IDNkNDdlNDYwMjUxZjMyOWQyMjZiZTM0YWNkODBiZmEwNGQw
ZDk2NjUuLmY2YTZiYmM0NjRiOWFmYTM4ZDU3YjRkMWVjNDdjZjNjY2E5MjY2ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25l
SW5wdXRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNp
bmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGltZUlucHV0VHlwZS5oIgogI2lu
Y2x1ZGUgIlVSTElucHV0VHlwZS5oIgpAQCAtNzgsNiArNzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKaW5kZXggNWI3ZDkwMWFmYzAyNWI1OWFmOTFiYjdlZGFmNGM3YjMwM2NmMTAx
OC4uZjM1ZmI0YzI2MTA3YzU1ZjMxMTIxZWU1ZWQyYTY5OWNiZjQ4M2E2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNTIsNyArNTIsNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAj
aW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAppbmRleCBmNmYwMjc2ZDE4ZDg2ODA0MGRiZmI2MjU4
ODJiNzA4YzMzNjU4ZTViLi45MDMyZGI2NzU3ZjVjZjJlMTM3YTk0MGM5NmRjMGUwMTIxZWE0OTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
IAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1l
cy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXggYWZhOGUxMmQ4MWJkODViZDk2M2Y4ZGNiMmM4YmVj
NTQ3OTc0YzAxYi4uODVhM2FkMjlhZTUwOWI5MTA1ZWU1YTk0NmYyNjJiZDBmYmMzOGRhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0
b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIK
KyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CkBAIC00MywxOSArNDQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIHVuc2ln
bmVkIFRydW5jYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZlciwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNp
cyk7CiAKLXN0YXRpYyBpbmxpbmUgaW50IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0LCBpbnQgb2Zmc2V0KQorc3RhdGljIGlubGluZSBpbnQgdGV4dEJyZWFrQXRP
clByZWNlZGluZyhVQnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQpCiB7Ci0gICAgaWYgKGlz
VGV4dEJyZWFrKGl0LCBvZmZzZXQpKQorICAgIGlmICh1YnJrX2lzQm91bmRhcnkoaXQsIG9mZnNl
dCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKLSAgICBpbnQgcmVzdWx0ID0gdGV4dEJyZWFr
UHJlY2VkaW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4dEJyZWFrRG9u
ZSA/IDAgOiByZXN1bHQ7CisgICAgaW50IHJlc3VsdCA9IHVicmtfcHJlY2VkaW5nKGl0LCBvZmZz
ZXQpOworICAgIHJldHVybiByZXN1bHQgPT0gVUJSS19ET05FID8gMCA6IHJlc3VsdDsKIH0KIAot
c3RhdGljIGlubGluZSBpbnQgYm91bmRlZFRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVy
YXRvciogaXQsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCitzdGF0aWMgaW5saW5lIGludCBib3Vu
ZGVkVGV4dEJyZWFrRm9sbG93aW5nKFVCcmVha0l0ZXJhdG9yKiBpdCwgaW50IG9mZnNldCwgaW50
IGxlbmd0aCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93aW5nKGl0LCBvZmZz
ZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSA/IGxlbmd0aCA6IHJlc3Vs
dDsKKyAgICBpbnQgcmVzdWx0ID0gdWJya19mb2xsb3dpbmcoaXQsIG9mZnNldCk7CisgICAgcmV0
dXJuIHJlc3VsdCA9PSBVQlJLX0RPTkUgPyBsZW5ndGggOiByZXN1bHQ7CiB9CiAKIHN0YXRpYyB1
bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZlciwgYm9vbCBzaG91
bGRJbnNlcnRFbGxpcHNpcykKQEAgLTE0Niw3ICsxNDcsNyBAQCBzdGF0aWMgdW5zaWduZWQgcmln
aHRDbGlwVG9Xb3JkQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IHVucwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBsZW5ndGgpOwogICAgIEFTU0VSVChrZWVwQ291
bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0g
d29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgp
KTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOwogICAgIHVuc2lnbmVkIGtlZXBMZW5ndGgg
PSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwogICAgIFN0cmluZ1ZpZXco
c3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZl
cnQoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA4MGYxYzYzZDA5
ZTQ5ZDZmMjg4OTllYWQ0MzFmODIzNjdhNTA0NGFhLi5jZmI1NjcxZDcwMzU5YTg5MDgxMjE4YzM4
YzRiODhiYjlkYjliMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMzAsMTAg
KzMwLDExIEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9j
ay5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vi
cmsuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MTc2LDIxICsxNzcsMjEgQEAgdW5zaWduZWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRG
b3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1ZGVQYXJ0aWFsR2wKICAgICAgICAgICAgICAg
ICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxpZ2F0dXJlIGNhcmV0cyIuIFRoaXMgaXMgYXZh
aWxhYmxlIGluIENvcmVUZXh0IHZpYSBDVEZvbnRHZXRMaWdhdHVyZUNhcmV0UG9zaXRpb25zKCku
CiAgICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRJbmRleCA9IGhpdEdseXBoU3RhcnQgKyAoaGl0
R2x5cGhFbmQgLSBoaXRHbHlwaFN0YXJ0KSAqIChtX3J1bi5sdHIoKSA/IHggLyBhZGp1c3RlZEFk
dmFuY2UgOiAxIC0geCAvIGFkanVzdGVkQWR2YW5jZSk7CiAgICAgICAgICAgICAgICAgaW50IHN0
cmluZ0xlbmd0aCA9IGNvbXBsZXhUZXh0UnVuLnN0cmluZ0xlbmd0aCgpOwotICAgICAgICAgICAg
ICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yID0gY3Vyc29yTW92
ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KGNvbXBsZXhUZXh0UnVuLmNoYXJhY3RlcnMoKSwgc3Ry
aW5nTGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgVUJyZWFrSXRlcmF0b3IqIGN1cnNvclBvc2l0
aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcoY29tcGxleFRl
eHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5ndGgpKTsKICAgICAgICAgICAgICAgICBpbnQg
Y2x1c3RlclN0YXJ0OwotICAgICAgICAgICAgICAgIGlmIChpc1RleHRCcmVhayhjdXJzb3JQb3Np
dGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCisgICAgICAgICAgICAgICAgaWYgKHVicmtfaXNCb3Vu
ZGFyeShjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCiAgICAgICAgICAgICAgICAg
ICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4OwogICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoY3Vyc29y
UG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2x1
c3RlclN0YXJ0ID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJT
dGFydCA9IHVicmtfcHJlY2VkaW5nKGN1cnNvclBvc2l0aW9uSXRlcmF0b3IsIGhpdEluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJTdGFydCA9PSBVQlJLX0RPTkUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSAwOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZVBhcnRpYWxHbHlwaHMpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV4VGV4dFJ1bi5zdHJpbmdMb2NhdGlvbigpICsgY2x1c3Rl
clN0YXJ0OwogCi0gICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJFbmQgPSB0ZXh0QnJlYWtGb2xs
b3dpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwotICAgICAgICAgICAgICAg
IGlmIChjbHVzdGVyRW5kID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgaW50IGNs
dXN0ZXJFbmQgPSB1YnJrX2ZvbGxvd2luZyhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRl
eCk7CisgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmQgPT0gVUJSS19ET05FKQogICAgICAg
ICAgICAgICAgICAgICBjbHVzdGVyRW5kID0gc3RyaW5nTGVuZ3RoOwogCiAgICAgICAgICAgICAg
ICAgQ0dGbG9hdCBjbHVzdGVyV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IDQ3ZDI0NDc1YWMwOTg5NGUwMzg4NTFhNDhiYjlj
MDVlZGRlZjM3YzIuLmU3ODBmZjY4MjBmMDlhNzYxMzc3ZjEyYTk0MzkxMjRhZDJhYWI0MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5k
YXJpZXMuaCIKIAorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
CkBAIC02MiwyNyArNjMsMjcgQEAgdW5zaWduZWQgc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250
ZXh0KFN0cmluZ1ZpZXcgdGV4dCkKIAogaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdW
aWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQogewotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9y
KiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogCiAgICAgaWYgKGZvcndhcmQpIHsKLSAg
ICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKLSAgICAg
ICAgd2hpbGUgKHBvc2l0aW9uICE9IFRleHRCcmVha0RvbmUpIHsKKyAgICAgICAgcG9zaXRpb24g
PSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgICAgICB3aGlsZSAocG9zaXRpb24g
IT0gVUJSS19ET05FKSB7CiAgICAgICAgICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRo
ZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmljLgogICAgICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikgPCB0ZXh0Lmxlbmd0aCgp
ICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uIC0gMV0pKQogICAgICAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKIAotICAgICAgICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmco
aXQsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gdWJya19mb2xsb3dpbmcoaXQs
IHBvc2l0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBw
b3NpdGlvbik7Ci0gICAgICAgIHdoaWxlIChwb3NpdGlvbiAhPSBUZXh0QnJlYWtEb25lKSB7Cisg
ICAgICAgIHBvc2l0aW9uID0gdWJya19wcmVjZWRpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICAgICAg
d2hpbGUgKHBvc2l0aW9uICE9IFVCUktfRE9ORSkgewogICAgICAgICAgICAgLy8gV2Ugc3RvcCBz
ZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgYnJlYWsgaXMgYWxwaGFu
dW1lcmljLgogICAgICAgICAgICAgaWYgKHBvc2l0aW9uICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0
aW9uXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogCi0gICAgICAgICAgICBw
b3NpdGlvbiA9IHRleHRCcmVha1ByZWNlZGluZyhpdCwgcG9zaXRpb24pOworICAgICAgICAgICAg
cG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhpdCwgcG9zaXRpb24pOwogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC05MSwxOSArOTIsMTkgQEAgaW50IGZpbmROZXh0V29yZEZyb21J
bmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQogCiB2b2lk
IGZpbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogc3Rh
cnQsIGludCogZW5kKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0
ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9u
KTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAg
ICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICBpZiAoKmVuZCA8IDAp
Ci0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsKLSAgICAqc3RhcnQgPSB0ZXh0QnJl
YWtQcmV2aW91cyhpdCk7CisgICAgICAgICplbmQgPSB1YnJrX2xhc3QoaXQpOworICAgICpzdGFy
dCA9IHVicmtfcHJldmlvdXMoaXQpOwogfQogCiB2b2lkIGZpbmRFbmRXb3JkQm91bmRhcnkoU3Ry
aW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogZW5kKQogewotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJl
YWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3Jk
QnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0
aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0
KTsKKyAgICAgICAgKmVuZCA9IHVicmtfbGFzdChpdCk7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hh
bnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
ZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCmluZGV4IDQxMWM4MDYxNGUyNjdjZmM1MTFm
ZmFkYjBhOTUzNjFjODFiNTQ5MzEuLjA2OGRkMjZhNWU0Y2RjY2QxYjhhOTdiNzdkMTZkYzRmOTk2
NWY2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9U
ZXh0Q2hlY2tlckVuY2hhbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
ZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCkBAIC05MSwxMyArOTEsMTMgQEAgdm9pZCBU
ZXh0Q2hlY2tlckVuY2hhbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZywgaW50JiBtaXNzcGUKICAgICBpZiAoIWhhc0RpY3Rpb25hcnkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvcihz
dHJpbmcpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3Ioc3Ry
aW5nKTsKICAgICBpZiAoIWl0ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcgdXRm
OFN0cmluZyA9IHN0cmluZy51dGY4KCk7Ci0gICAgaW50IHN0YXJ0ID0gdGV4dEJyZWFrRmlyc3Qo
aXRlcik7Ci0gICAgZm9yIChpbnQgZW5kID0gdGV4dEJyZWFrTmV4dChpdGVyKTsgZW5kICE9IFRl
eHRCcmVha0RvbmU7IGVuZCA9IHRleHRCcmVha05leHQoaXRlcikpIHsKKyAgICBpbnQgc3RhcnQg
PSB1YnJrX2ZpcnN0KGl0ZXIpOworICAgIGZvciAoaW50IGVuZCA9IHVicmtfbmV4dChpdGVyKTsg
ZW5kICE9IFVCUktfRE9ORTsgZW5kID0gdWJya19uZXh0KGl0ZXIpKSB7CiAgICAgICAgIGlmIChp
c1dvcmRUZXh0QnJlYWsoaXRlcikpIHsKICAgICAgICAgICAgIGNoZWNrU3BlbGxpbmdPZldvcmQo
dXRmOFN0cmluZywgc3RhcnQsIGVuZCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdM
ZW5ndGgpOwogICAgICAgICAgICAgLy8gU3RvcCBjaGVja2luZyB0aGUgbmV4dCB3b3JkcyBJZiB0
aGUgY3VycmVudCB3b3JkIGlzIG1pc3NwZWxsZWQsIHRvIGRvIG5vdCBvdmVyd3JpdGUgaXRzIG1p
c3NwZWxsZWQgbG9jYXRpb24gYW5kIGxlbmd0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRlMThhNGM4ZmY1
NGNiZGUxYmQwYjJjZWY5MTJjZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMyOGQyY2VmZTUz
ZDI1ZjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW0KQEAgLTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4dFdvcmRGcm9t
SW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKICAgICAv
LyBmb3IgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25lLCBhbmQgaW4g
dGhlIGZ1dHVyZSB3aWxsIGJlCiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUgaVBob25lLXNw
ZWNpZmljIGJlaGF2aW9yIGZvciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGluZy4KICAgICBp
bnQgcG9zID0gcG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29y
ZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29y
ZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAgICAgIGlmIChm
b3J3YXJkKSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJy
ZWFrRm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtf
Zm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJS
S19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAg
ICAgICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0aCgp
ICYmIChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAmJiBpc1Nr
aXBDaGFyYWN0ZXIodGV4dFtwb3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJlY2VkaW5nKGJv
dW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5k
YXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQogICAgICAg
ICAgICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9zID4gMCAmJiBp
c1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRb
cG9zIC0gMV0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xp
bmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4IDg4ZDdl
OTk1ODIwMzU4OTcwZjBlOGExZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJmNDljOTAxMjFi
MDgwMDZlMzE4MDk1NDU2ZmJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMu
aApAQCAtMTAyLDEwICsxMDIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3Np
dGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKICAgICAgICAg
ICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewogICAgICAgICAg
ICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFyeSBj
b250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAgICAgICAgIGlm
IChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBUZXh0QnJl
YWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNv
bnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciogYnJlYWtJ
dGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBp
IC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
Y2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNv
bnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBV
QlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3LDExICsxNDcs
MTEgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5
KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0QnJlYWsgfHwg
bmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBpZiBw
b3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8gcHJp
b3IgY29udGV4dC4KICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewot
ICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJy
ZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgVUJy
ZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJpb3JD
b250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAxKTsKLSAg
ICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVh
a0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAgICAgICAg
aW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBwcmlvckNv
bnRleHRMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBV
QlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggYzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0OGVmMmUzOGQw
NS4uYTBlZjgyZWE5NzI5YTJkYjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hhcGVP
dXRzaWRlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAj
aW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGEyNWU0MGY4
ZWM1NjY3MTVmMmFlYjBkYTQ0MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0ZDExYzUzNGNl
Y2M2M2ExMzY0ODA2NmQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmlu
ZywgVUNoYXIgcHJldmlvdXMpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0gPSBz
dHJpbmdJbXBsW2kgLSAxXTsKICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogYm91bmRh
cnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFy
YWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkgPSB3
b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0ZXJz
KCksIGxlbmd0aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm47CiAK
QEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmluZywg
VUNoYXIgcHJldmlvdXMpCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCiAg
ICAgaW50MzJfdCBlbmRPZldvcmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHRleHRCcmVh
a0ZpcnN0KGJvdW5kYXJ5KTsKLSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91
bmRhcnkpOyBlbmRPZldvcmQgIT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQgPSBlbmRPZldv
cmQsIGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAgaW50MzJfdCBz
dGFydE9mV29yZCA9IHVicmtfZmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5kT2ZXb3JkID0g
dWJya19uZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3RhcnRPZldvcmQg
PSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsKICAgICAgICAg
aWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBzdHJpbmcK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFdID09
IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJldmlv
dXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCArIDE7
IGkgPCBlbmRPZldvcmQ7IGkrKykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50IFJlbmRlclRl
eHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICByZXR1cm4gY3Vy
cmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5pbXBsKCk7Ci0g
ICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgpKSk7
CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgpKSk7
CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCi0gICAg
bG9uZyByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJlbnQpOwotICAg
IGlmIChyZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9IHVicmtfcHJl
Y2VkaW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVCUktfRE9ORSkK
ICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAg
aW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3Vy
cmVudCkgY29uc3QKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgU3RyaW5nSW1w
bCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2h5IHRo
aXMgaGFzIHNvIG11Y2ggaGFuZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5nIFRleHRCcmVh
a0l0ZXJhdG9yLgorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBzbyBtdWNoIGhh
bmRyb2xsZWQgY29kZSByYXRoZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4KICAgICAvLyBB
bHNvIHVuY2xlYXIgd2h5IHRoaXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5jZUJ5Q29tYmlu
aW5nQ2hhcmFjdGVyU2VxdWVuY2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIGZh
bmNpZXIgY2FzZSBjb3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBubwpAQCAtMTY0
OSwxMiArMTY0OSwxMiBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5nSW1wbCogdGV4
dEltcGwgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVyczE2
KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVyczE2
KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAgIHJl
dHVybiBjdXJyZW50ICsgMTsKIAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93aW5n
KGl0ZXJhdG9yLCBjdXJyZW50KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVha0RvbmUpCisg
ICAgbG9uZyByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVudCk7CisgICAg
aWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgKyAxOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAppbmRleCBh
ZWU3NWE0NmZhZjA0MTAyMzM0MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1MzZlNTJiYzVk
ODQ3ZTcxMTZjNmQyOTUwZmVmMzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5o
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUgIlJl
bmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5o
CmluZGV4IGJmZDk4NjdhNDVlMWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2IuLjBjOWQ5Zjhj
Nzg0ZmJhMmZkZTdmNWYyZjMwYmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkxp
bmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dl
YlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0
Lm1tCmluZGV4IDg5ZWIyYTMyOWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0OTUuLmM0ZWZj
MmU0ZGUxMGQwMTU3N2Q2NTQ1ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRo
cmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5o
PgotI2ltcG9ydCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2ltcG9ydCA8cnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297277</attachid>
            <date>2016-12-15 18:24:40 -0800</date>
            <delta_ts>2016-12-15 19:44:58 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-165931-20161215182348.patch</filename>
            <type>text/plain</type>
            <size>56100</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5ODc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFiNDdhZDgzNTRkODA1Zjc2NGVhNTU4
NzkxM2I5MDY2NTRhZjk3MTYuLmEwNzhjOTY4MjNjNWE1NWY3MzY5MGYxYWQ3YTQ0ZDI0ODZlMGFj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV1RG
OjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnRha2UpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnB1dCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
Ojpjb21wdXRlSW5kZXhFbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6b3BlbkxpbmVCcmVha0l0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OmdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpjYWNoZU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAg
ICAgICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgIChX
VEY6OnRleHRCcmVha0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTGFz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRl
eHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxv
d2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0N1cnJlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjpsYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6OnNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6dXBkYXRlUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cHJpb3JDb250ZXh0TGVuZ3RoKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yOjpvcGVyYXRvciBVQnJlYWtJdGVyYXRvciopOgorICAgICAgICAoV1RGOjpOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBE
ZWxldGVkLgorCiAyMDE2LTEyLTE1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRl
eC5ydT4KIAogICAgICAgICBBZGRlZCBtaXNzaW5nIG92ZXJyaWRlIGFuZCBmaW5hbCBzcGVjaWZp
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNmMyMjQ5ZDQ4N2EwMzlmOTZjNmM5ZWQ4Yjc2YmJhYmZjY2EwNTFj
NS4uODg0NTQyMWFjMzgxZTIyYmMwNGQwNTliZDk4NGYxODI1NDcwMjQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDU3IEBACiAyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0
ZXJhdG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9DaGFyYWN0
ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFwcGVu
ZERhdGEpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbmRNaXNzcGVsbGluZ3MpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zm
c2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0b3JGb3JNYXhP
ZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjppc0xvZ2ljYWxTdGFydE9mV29yZCk6
CisgICAgICAgIChXZWJDb3JlOjppc2xvZ2ljYWxFbmRPZldvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0U2VudGVuY2VC
b3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjplbmRTZW50ZW5jZUJvdW5kYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRTZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRleHRCcmVha0F0T3JQcmVjZWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Ym91
bmRlZFRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodENsaXBUb1dv
cmRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpv
ZmZzZXRGb3JQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRW5k
V29yZEJvdW5kYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0JyZWFrTGluZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2Fi
bGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uTG9vc2VseSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
Q2FwaXRhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNr
d2FyZERlbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRPZmZzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0
b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oOgorCisyMDE2LTEy
LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKICAgICAgICAg
W0NvY29hXSBJbXBsZW1lbnQgZm9udC1zeW50aGVzaXM6IHNtYWxsLWNhcHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg5MgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKaW5kZXggNTYzMTgzMzJiMjRiNjNiOGYwN2YwOWQ1ODhhZGY2ZjkwNmJhODY3ZS4uOTJjZDBj
M2FkNjAxN2IwMjQ4ZjFiN2VlOWYzMGQ0OGE3MGUwZWZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0ZXJh
dG9ycyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBv
cnQubW06CisKIDIwMTYtMTEtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9tIER1bXBSZW5kZXJUcmVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaAppbmRl
eCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJjZTZhYTIzNzczLi5jMGUwZTU3ZGU5YjZi
ZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRh
a2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2Rl
LCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKICAgICB7
CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbWFrZUxvY2Fs
ZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKIAotICAgICAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAgICAgICBVQnJlYWtJdGVyYXRvciogaXRlcmF0
b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fcG9vbFtpXS5maXJzdCA9PSBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1fcG9v
bFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3IpKTsKICAgICAgICAg
aWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkpIHsKQEAgLTk3LDggKzk3LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJyZWFrSXRlcmF0b3IqPiwg
Y2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWlj
U3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0
cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKKyAgICBIYXNoTWFwPFVC
cmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKIAogICAgIGZy
aWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9y
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIzMTE3ZmJiMTZkZjU5NTdhLi5kNzg1NjJl
MmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhmZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSAiU3RyaW5nVmlldy5oIgog
CiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAgICAgICAgcmV0dXJuIHRleHRCcmVha0ZvbGxv
d2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5kZXgpOworICAgICAgICByZXR1cm4gdWJya19m
b2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2luZGV4KTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmluZGV4IDA1YTUxOTU2
MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkzMjcuLjFkYTBhYjYxOGE1OTk5ODhkYmRkMDc2
YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFtZXNwYWNlIFdURiB7CiAKIC8vIEl0ZXJhdG9y
IGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJy
ZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBj
dXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsKICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRl
cnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3Blbih0eXBlLCBsb2NhbGUsIDAs
IDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gdWJya19v
cGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMpOwogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsg
aXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7
CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykKIAotc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hh
ciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9y
V2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMpCiB7CiAgICAgVVBhcnNlRXJyb3IgcGFy
c2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1bGVzKTsKICAgICBhdXRvIHVwY29udmVy
dGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0
b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwg
JnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAm
cGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VD
Q0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAl
cyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOwogICAgIHJldHVy
biBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKIAog
Ly8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0
VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBz
dHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihVQnJlYWtJ
dGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTgwLDcg
KzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgfQogCiAgICAgICAgIFVF
cnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRV
VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJrX3NldFVUZXh0KCZpdGVyYXRvciwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVz
ICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5
LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3Io
VGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAgICAgICAgdXRleHRfY2xvc2Uo
dGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VGV4dCgmaXRlcmF0b3Is
IHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7
CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVy
YXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3Ry
aW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0KIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJh
dG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWdu
ZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0
QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3
IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRo
QnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVGV4dEJyZWFrSXRl
cmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYg
aXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFr
SXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVi
cmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlm
IChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKICAgICAgICAgICAgIExPR19FUlJPUigidWJy
a19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJh
dG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAg
ICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKICAgICAg
ICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDYsMjUgKzE0NiwyNSBAQCBzdGF0aWMg
VGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJl
YWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMgaXRlcmF0b3JzCiAKLVRleHRCcmVha0l0ZXJh
dG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK1VCcmVha0l0ZXJhdG9y
KiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJl
YWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1dPUkQpOwogICAgIGlmICghc3Rh
dGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7
CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVu
Y2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOworICAg
IHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5p
dGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwogICAgIGlmICghc3RhdGljU2VudGVuY2VC
cmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBzZXRU
ZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBz
dHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMg
YmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1bGVzIG9mIElDVSA1NwpAQCAtMjkx
LDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3Io
U3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIhIXNhZmVfcmV2ZXJzZTsiCiAgICAgICAgICIh
IXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBz
dGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVz
KGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVu
dEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CiAjZWxzZSAv
LyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRoZSBzcGVjaWFsIFRoYWkgY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRv
ciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJL
X0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJz
b3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAi
dGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAgICAgaWYgKCFzdGF0aWNDdXJzb3JN
b3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICszMDMsMTYgQEAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHNl
dFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciwgc3RyaW5nKTsK
IH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlv
ckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0
ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29u
c3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKLSAgICBUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS50YWtl
KGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExp
bmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NK
Syk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBy
ZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CiB9CiAKLXZvaWQgcmVsZWFzZUxpbmVC
cmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3ZvaWQgcmVsZWFzZUxp
bmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlRf
QVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAgLTc4MCw3ICs3ODAsNyBAQCBib29sIGlzQ0pL
TG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitV
QnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKIHsKICAgICBV
QnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5M
aW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXQK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrSXRlcik7CisgICAgcmV0dXJuIHVicmtJdGVy
OwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqJiBp
dGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciomIGl0
ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9yKiB1YnJrSXRlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVicmtJdGVyKTsKICAgICB1YnJrX2Nsb3NlKHVi
cmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBzdGQ6OmF0b21p
YzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgPSBB
VE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0aWMgc3RkOjphdG9taWM8VUJyZWFrSXRlcmF0
b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yID0gQVRPTUlDX1ZBUl9JTklUKG51
bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRCcmVha0l0ZXJhdG9yKiBnZXROb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRpYyBpbmxpbmUgVUJyZWFrSXRlcmF0b3IqIGdl
dE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQogewogICAgIGlmIChhdXRvICpyZXMg
PSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLmV4Y2hhbmdlKG51bGxwdHIsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAgICByZXR1cm4gcmVzOwogICAgIHJldHVybiBp
bml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9y
KiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lkIGNhY2hlTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2FjaGVNZSkKIHsKICAgICBpZiAoYXV0byAqb2xk
ID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvci5leGNoYW5nZShjYWNoZU1lLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAgICAgdWJya19jbG9zZShyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7CisgICAgICAgIHVicmtfY2xvc2Uob2xkKTsKIH0K
IAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKQEAgLTg0OCw1MiArODQ4LDExIEBAIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpzd2FwKG1faXRlcmF0b3IsIG90aGVyLm1faXRl
cmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGltcGxlbWVuYXRpb24uCiAKLWludCB0ZXh0QnJl
YWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtf
Zmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0K
LWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBy
ZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Ip
Ci17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9y
Kj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZXZpb3VzKFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19wcmV2aW91cyhyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1ByZWNl
ZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJu
IHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
ciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3Iq
IGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVybiB1YnJrX2ZvbGxvd2luZyhyZWludGVy
cHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4
dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJu
IHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
KTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGlu
dCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0aW9uKTsKLX0KLQotYm9vbCBpc1dv
cmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQorYm9vbCBpc1dvcmRUZXh0
QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQogewotICAgIGludCBydWxlU3RhdHVzID0g
dWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKGl0ZXJhdG9y
KTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKIH0KIApAQCAtOTIw
LDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyBzdHJp
bmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyA9IDA7Ci0gICAg
d2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3IpICE9IFRleHRCcmVha0RvbmUpCisgICAgd2hp
bGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJSS19ET05FKQogICAgICAgICArK251bUdyYXBo
ZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdyYXBoZW1lQ2x1c3RlcnM7CiB9CkBAIC05NDgs
MTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFwaGVtZQogICAgIH0KIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzOyArK2kpIHsKLSAgICAgICAg
aWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRleHRCcmVha0RvbmUpCisgICAgICAgIGlm
ICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktfRE9ORSkKICAgICAgICAgICAgIHJldHVybiBz
dHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVybiB0ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9y
KTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0ZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggOGFmYjU1
ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAwNmE5ZS4uYmNmNDRjMDdhNGVjOTFiNTE0Njdj
MjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotY2xhc3MgVGV4dEJy
ZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9u
bHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2Yg
YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBlbnVtIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0cmljdCB9OwpAQCAtMzUsMjcgKzMzLDE3
IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JNb2RlIHsgRGVmYXVsdCwgTG9vc2UsIE5v
cm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBVSSBjb252ZW50aW9ucy4gT25lIG5vdGFibGUg
ZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJlbnQKIC8vIGZyb20gY2hhcmFjdGVyIGJy
ZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFyYWN0ZXJzLCBzZWUgYnVnIDI0MzQyLgog
Ly8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBhbmQgc2VsZWN0aW9uIG1hbmlwdWxhdGlv
bnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVy
YXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
VGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4
dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VM
aW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciomKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJ
dGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVh
a0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha05leHQoVGV4dEJy
ZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrUHJldmlvdXMo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrQ3Vy
cmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJl
YWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRF
IGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwot
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
Kik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNo
YXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKik7CitVQnJlYWtJdGVyYXRvciogb3Bl
bkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFVC
cmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRCcmVhayhVQnJlYWtJdGVyYXRvciopOwog
CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NKS0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1YmxpYzoKIAogICAgIFVDaGFyIGxhc3RDaGFyYWN0
ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlv
cl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3Ig
Y29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0dXJuIG1fcHJpb3JDb250ZXh0WzFdOwogICAg
IH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJhY3RlcigpIGNvbnN0CiAgICAgewotICAg
ICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAg
ICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAy
LCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBwcmlvciBjb250ZXh0IGxlbmd0aCIpOwogICAg
ICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CiAgICAgfQogCiAgICAgdm9pZCBzZXRQcmlv
ckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQogICAgIHsKLSAgICAgICAg
Q09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4
dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVC
cmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAg
bV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7CiAgICAgICAgIG1fcHJpb3JDb250ZXh0
WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0ZVByaW9yQ29udGV4dChVQ2hhciBs
YXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4
dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBtX3ByaW9yQ29udGV4dFsx
XTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBsYXN0OwogICAgIH0KIAogICAgIHZvaWQg
cmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBl
Y3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0
ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAw
OwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7CiAgICAgfQpAQCAtMTIwLDcgKzEwOCw3
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgoKSBjb25zdAogICAg
IHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09N
UElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJy
ZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVh
a0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgaWYg
KG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAgICAgICArK3ByaW9yQ29udGV4dExlbmd0aDsK
ICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFswXSkKQEAgLTEzMiw3ICsxMjAsNyBAQCBw
dWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZp
b3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKICAgICAv
LyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUg
cHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZwogICAgIC8vIHByZXZpb3VzbHkgc3Rv
cmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBn
ZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorICAgIFVCcmVha0l0ZXJhdG9yKiBnZXQo
dW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHByaW9y
Q29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0eSk7CiAgICAgICAgIGNvbnN0IFVD
aGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRb
cHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDogMDsKQEAgLTE2NCw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgcHJpb3JD
b250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwogICAgIEF0
b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7
IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsK
ICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQgeyBudWxscHRyIH07CiAgICAg
TGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVm
YXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoIHsgMCB9OwpA
QCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgogCiAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYpOwogCi0gICAgb3Bl
cmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQor
ICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7
IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKKyAgICBV
QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07CiAKIC8vIENvdW50cyB0aGUgbnVtYmVyIG9m
IGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWlyIG9yIGEgc2VxdWVuY2UKQEAgLTIw
NSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0lu
R3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNpZ25lZAogdXNpbmcgV1RGOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9yTW9kZTsKIHVzaW5n
IFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKLXVzaW5nIFdURjo6VGV4dEJy
ZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OmlzV29y
ZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA5N2ZhNDVm
MTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYzN2QwLi40ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUy
YTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBA
IC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIC8vIFdlIG5lZWQgYXQg
bGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVhZCB0byBhY2NvdW50IGZvciBVVEYtMTYgc3Vy
cm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVuZ3RoTGltaXQgPCBjaGFyYWN0ZXJMZW5ndGgp
IHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3
KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNoYXJhY3Rlckxlbmd0aExpbWl0ICsgMiA+IGNo
YXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5ndGggOiBjaGFyYWN0ZXJMZW5ndGhMaW1pdCAr
IDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVhayhpdCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQp
KQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3RoTGltaXQgPSB0ZXh0QnJlYWtQcmVjZWRpbmco
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICAgICAgaWYgKCF1YnJrX2lzQm91bmRhcnko
aXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAgICAgICAgICAgIGNoYXJhY3Rlckxlbmd0aExp
bWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKICAgICB9CiAK
ICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDBlNWRjZDYzYWE5OTYxZjIyNzA1NzQzZTBm
ZTA0NTk1M2M3YjFhZjEuLjM3OWQ3ZDI5OWU3NjA2NzJjYjU2YTkzYTY2ODQ1MDRjOTMwOTBiYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAg
LTMzLDEyICszMywxMyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxl
Y3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRl
ICJWaXNpYmxlVW5pdHMuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NiwxMSArNzcsMTEgQEAgc3RhdGlj
IHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0
cmluZ1ZpZXcgdGV4dCwgVmUKIAogc3RhdGljIHZvaWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hl
Y2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdv
cmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdv
cmRCcmVha0l0ZXJhdG9yKHRleHQpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAgIHJldHVy
bjsKLSAgICBmb3IgKGludCB3b3JkU3RhcnQgPSB0ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsg
d29yZFN0YXJ0ID49IDA7ICkgewotICAgICAgICBpbnQgd29yZEVuZCA9IHRleHRCcmVha05leHQo
aXRlcmF0b3IpOworICAgIGZvciAoaW50IHdvcmRTdGFydCA9IHVicmtfY3VycmVudChpdGVyYXRv
cik7IHdvcmRTdGFydCA+PSAwOyApIHsKKyAgICAgICAgaW50IHdvcmRFbmQgPSB1YnJrX25leHQo
aXRlcmF0b3IpOwogICAgICAgICBpZiAod29yZEVuZCA8IDApCiAgICAgICAgICAgICBicmVhazsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDgzY2FlNGMzODY2
MmJhODM5ZmYxZjdhZTc4Y2UxMTZhNjZmMDczYmYuLjE1M2Y1ZWE0ZjRhNzQ1NDAyNzVmYTVjYTRj
ZmZkYTY0ZWQxYmU4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAK
QEAgLTM3LDkgKzM3LDEwIEBACiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1
ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiaHRtbGVkaXRp
bmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg1LDcgKzI4Niw3IEBAIHN0YXRpYyBj
b25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseU5leHRCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24sCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVy
YXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwK
K3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3Vu
ZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5l
VGV4dEJveCogdGV4dEJveCwKICAgICBpbnQmIHByZXZpb3VzQm94TGVuZ3RoLCBib29sJiBwcmV2
aW91c0JveEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2Fj
aGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJveGVzKQogewogICAgIHByZXZpb3Vz
Qm94SW5EaWZmZXJlbnRCbG9jayA9IGZhbHNlOwpAQCAtMzA1LDcgKzMwNiw3IEBAIHN0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShj
b25zdCBWaXNpYmxlUG9zCiAgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXco
c3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwogfQogCi1zdGF0aWMgVGV4dEJyZWFrSXRl
cmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gs
CitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91
bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGlu
ZVRleHRCb3gqIHRleHRCb3gsCiAgICAgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50QmxvY2ssIFZl
Y3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hl
cyYgbGVhZkJveGVzKQogewogICAgIG5leHRCb3hJbkRpZmZlcmVudEJsb2NrID0gZmFsc2U7CkBA
IC0zMjMsMjAgKzMyNCwyMCBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0
ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvcwogICAgIHJldHVybiB3
b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZy5kYXRhKCksIHN0cmluZy5zaXplKCkp
KTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRPZldvcmQoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQorc3RhdGljIGJvb2wg
aXNMb2dpY2FsU3RhcnRPZldvcmQoVUJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwg
Ym9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJvb2wgYm91bmRhcnkgPSBoYXJkTGluZUJyZWFr
ID8gdHJ1ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9uKTsKKyAgICBib29sIGJvdW5kYXJ5
ID0gaGFyZExpbmVCcmVhayA/IHRydWUgOiB1YnJrX2lzQm91bmRhcnkoaXRlciwgcG9zaXRpb24p
OwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRleHRC
cmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAgdWJya19mb2xsb3dpbmcoaXRlciwg
cG9zaXRpb24pOwogICAgIC8vIGlzV29yZFRleHRCcmVhayByZXR1cm5zIHRydWUgYWZ0ZXIgbW92
aW5nIGFjcm9zcyBhIHdvcmQgYW5kIGZhbHNlIGFmdGVyIG1vdmluZyBhY3Jvc3MgYSBwdW5jdHVh
dGlvbi9zcGFjZS4KICAgICByZXR1cm4gaXNXb3JkVGV4dEJyZWFrKGl0ZXIpOwogfQogCi1zdGF0
aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBw
b3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQorc3RhdGljIGJvb2wgaXNsb2dpY2FsRW5kT2ZX
b3JkKFVCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQgcG9zaXRpb24sIGJvb2wgaGFyZExpbmVCcmVh
aykKIHsKLSAgICBib29sIGJvdW5kYXJ5ID0gaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRpb24pOwor
ICAgIGJvb2wgYm91bmRhcnkgPSB1YnJrX2lzQm91bmRhcnkoaXRlciwgcG9zaXRpb24pOwogICAg
IHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3VuZGFyeSkgJiYgaXNXb3JkVGV4dEJyZWFrKGl0
ZXIpOwogfQogCkBAIC0zNTEsNyArMzUyLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXN1
YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24KICAg
ICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9j
ayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgSW5saW5lQm94KiBwcmV2
aW91c2x5VmlzaXRlZEJveCA9IG51bGxwdHI7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQg
PSB2aXNpYmxlUG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSBudWxscHRy
OworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0cjsKIAogICAgIENhY2hlZExvZ2lj
YWxseU9yZGVyZWRMZWFmQm94ZXMgbGVhZkJveGVzOwogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4g
c3RyaW5nOwpAQCAtMzkwLDcgKzM5MSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFs
V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uCiAgICAg
ICAgIGlmICghaXRlcikKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHRleHRCcmVha0Zp
cnN0KGl0ZXIpOworICAgICAgICB1YnJrX2ZpcnN0KGl0ZXIpOwogICAgICAgICBpbnQgb2Zmc2V0
SW5JdGVyYXRvciA9IG9mZnNldEluQm94IC0gdGV4dEJveC5zdGFydCgpICsgcHJldmlvdXNCb3hM
ZW5ndGg7CiAKICAgICAgICAgYm9vbCBpc1dvcmRCcmVhazsKQEAgLTExMDksNyArMTExMCw3IEBA
IFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiB1bnNpZ25lZCBzdGFydFNlbnRlbmNlQm91bmRhcnko
U3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmls
aXR5LCBib29sJikKIHsKICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4g
cmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4KLSAgICByZXR1cm4gdGV4dEJyZWFrUHJl
Y2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CisgICAg
cmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5s
ZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExMTksNyArMTEyMCw3IEBAIFZpc2libGVQb3Np
dGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIAog
dW5zaWduZWQgZW5kU2VudGVuY2VCb3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkLCBC
b3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmKQogewotICAgIHJldHVybiB0
ZXh0QnJlYWtOZXh0KHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSk7CisgICAgcmV0dXJuIHVi
cmtfbmV4dChzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCkpOwogfQogCiBWaXNpYmxlUG9zaXRp
b24gZW5kT2ZTZW50ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMTEz
Miw3ICsxMTMzLDcgQEAgc3RhdGljIHVuc2lnbmVkIHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJv
dW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW4KIHsKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBpZGVudGljYWwgdG8gc3RhcnRTZW50ZW5jZUJvdW5kYXJ5LiBJJ20gcHJldHR5IHN1
cmUgdGhhdCdzIG5vdCByaWdodC4KICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBmdW5jdGlv
biBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4KLSAgICByZXR1cm4gdGV4dEJy
ZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7
CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwg
dGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1NlbnRlbmNlUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExNDQsNyArMTE0NSw3
IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXh0U2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1Zp
ZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaWRl
bnRpY2FsIHRvIGVuZFNlbnRlbmNlQm91bmRhcnkuCiAgICAgLy8gVGhhdCBpc24ndCByaWdodC4g
VGhpcyBmdW5jdGlvbiBuZWVkcyB0byBtb3ZlIHRvIHRoZSBlcXVpdmFsZW50IHBvc2l0aW9uIGlu
IHRoZSBmb2xsb3dpbmcgc2VudGVuY2UuCi0gICAgcmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhz
ZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOworICAgIHJldHVybiB1YnJrX2ZvbGxvd2lu
ZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOwogfQogCiBWaXNpYmxlUG9zaXRpb24g
bmV4dFNlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDZjMWQ4YjNlZDQ1ZTI0
NWE3YzdjNDY5NzAwMmJkMTg5NmM5M2Q3MzkuLmQ0M2Q0ZWY5ZTAxMTkyNmQwZThhMGViZGVjODc1
MmQzZWZmZGZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtNjIsNyArNjIsNiBAQAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICNpbmNs
dWRlICJUb3VjaEV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAppbmRleCBjNDFiYzhmZmVlZWUwODZjNDU2YzJhMjA3OGU0ZmYwYzJmMDQ1YWU3Li4z
NWE0MmIzZmRjNTdkYjQ0MmNhMTIxZDZlZmUyYjBmZmI5NDhiNDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNs
dWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCmluZGV4IDNkNDdlNDYwMjUxZjMyOWQyMjZiZTM0YWNkODBiZmEwNGQw
ZDk2NjUuLmY2YTZiYmM0NjRiOWFmYTM4ZDU3YjRkMWVjNDdjZjNjY2E5MjY2ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTY5LDcgKzY5LDYgQEAKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25l
SW5wdXRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNp
bmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGltZUlucHV0VHlwZS5oIgogI2lu
Y2x1ZGUgIlVSTElucHV0VHlwZS5oIgpAQCAtNzgsNiArNzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKaW5kZXggNWI3ZDkwMWFmYzAyNWI1OWFmOTFiYjdlZGFmNGM3YjMwM2NmMTAx
OC4uZjM1ZmI0YzI2MTA3YzU1ZjMxMTIxZWU1ZWQyYTY5OWNiZjQ4M2E2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNTIsNyArNTIsNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAj
aW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAppbmRleCBmNmYwMjc2ZDE4ZDg2ODA0MGRiZmI2MjU4
ODJiNzA4YzMzNjU4ZTViLi45MDMyZGI2NzU3ZjVjZjJlMTM3YTk0MGM5NmRjMGUwMTIxZWE0OTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
IAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1l
cy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXggYWZhOGUxMmQ4MWJkODViZDk2M2Y4ZGNiMmM4YmVj
NTQ3OTc0YzAxYi4uODVhM2FkMjlhZTUwOWI5MTA1ZWU1YTk0NmYyNjJiZDBmYmMzOGRhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0
b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIK
KyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CkBAIC00MywxOSArNDQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIHVuc2ln
bmVkIFRydW5jYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZlciwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNp
cyk7CiAKLXN0YXRpYyBpbmxpbmUgaW50IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0LCBpbnQgb2Zmc2V0KQorc3RhdGljIGlubGluZSBpbnQgdGV4dEJyZWFrQXRP
clByZWNlZGluZyhVQnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQpCiB7Ci0gICAgaWYgKGlz
VGV4dEJyZWFrKGl0LCBvZmZzZXQpKQorICAgIGlmICh1YnJrX2lzQm91bmRhcnkoaXQsIG9mZnNl
dCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKLSAgICBpbnQgcmVzdWx0ID0gdGV4dEJyZWFr
UHJlY2VkaW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4dEJyZWFrRG9u
ZSA/IDAgOiByZXN1bHQ7CisgICAgaW50IHJlc3VsdCA9IHVicmtfcHJlY2VkaW5nKGl0LCBvZmZz
ZXQpOworICAgIHJldHVybiByZXN1bHQgPT0gVUJSS19ET05FID8gMCA6IHJlc3VsdDsKIH0KIAot
c3RhdGljIGlubGluZSBpbnQgYm91bmRlZFRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVy
YXRvciogaXQsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCitzdGF0aWMgaW5saW5lIGludCBib3Vu
ZGVkVGV4dEJyZWFrRm9sbG93aW5nKFVCcmVha0l0ZXJhdG9yKiBpdCwgaW50IG9mZnNldCwgaW50
IGxlbmd0aCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93aW5nKGl0LCBvZmZz
ZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSA/IGxlbmd0aCA6IHJlc3Vs
dDsKKyAgICBpbnQgcmVzdWx0ID0gdWJya19mb2xsb3dpbmcoaXQsIG9mZnNldCk7CisgICAgcmV0
dXJuIHJlc3VsdCA9PSBVQlJLX0RPTkUgPyBsZW5ndGggOiByZXN1bHQ7CiB9CiAKIHN0YXRpYyB1
bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZlciwgYm9vbCBzaG91
bGRJbnNlcnRFbGxpcHNpcykKQEAgLTE0Niw3ICsxNDcsNyBAQCBzdGF0aWMgdW5zaWduZWQgcmln
aHRDbGlwVG9Xb3JkQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IHVucwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBsZW5ndGgpOwogICAgIEFTU0VSVChrZWVwQ291
bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0g
d29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgp
KTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOwogICAgIHVuc2lnbmVkIGtlZXBMZW5ndGgg
PSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwogICAgIFN0cmluZ1ZpZXco
c3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZl
cnQoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA4MGYxYzYzZDA5
ZTQ5ZDZmMjg4OTllYWQ0MzFmODIzNjdhNTA0NGFhLi5jZmI1NjcxZDcwMzU5YTg5MDgxMjE4YzM4
YzRiODhiYjlkYjliMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMzAsMTAg
KzMwLDExIEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9j
ay5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vi
cmsuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MTc2LDIxICsxNzcsMjEgQEAgdW5zaWduZWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRG
b3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1ZGVQYXJ0aWFsR2wKICAgICAgICAgICAgICAg
ICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxpZ2F0dXJlIGNhcmV0cyIuIFRoaXMgaXMgYXZh
aWxhYmxlIGluIENvcmVUZXh0IHZpYSBDVEZvbnRHZXRMaWdhdHVyZUNhcmV0UG9zaXRpb25zKCku
CiAgICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRJbmRleCA9IGhpdEdseXBoU3RhcnQgKyAoaGl0
R2x5cGhFbmQgLSBoaXRHbHlwaFN0YXJ0KSAqIChtX3J1bi5sdHIoKSA/IHggLyBhZGp1c3RlZEFk
dmFuY2UgOiAxIC0geCAvIGFkanVzdGVkQWR2YW5jZSk7CiAgICAgICAgICAgICAgICAgaW50IHN0
cmluZ0xlbmd0aCA9IGNvbXBsZXhUZXh0UnVuLnN0cmluZ0xlbmd0aCgpOwotICAgICAgICAgICAg
ICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yID0gY3Vyc29yTW92
ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KGNvbXBsZXhUZXh0UnVuLmNoYXJhY3RlcnMoKSwgc3Ry
aW5nTGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgVUJyZWFrSXRlcmF0b3IqIGN1cnNvclBvc2l0
aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcoY29tcGxleFRl
eHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5ndGgpKTsKICAgICAgICAgICAgICAgICBpbnQg
Y2x1c3RlclN0YXJ0OwotICAgICAgICAgICAgICAgIGlmIChpc1RleHRCcmVhayhjdXJzb3JQb3Np
dGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCisgICAgICAgICAgICAgICAgaWYgKHVicmtfaXNCb3Vu
ZGFyeShjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCiAgICAgICAgICAgICAgICAg
ICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4OwogICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoY3Vyc29y
UG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2x1
c3RlclN0YXJ0ID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJT
dGFydCA9IHVicmtfcHJlY2VkaW5nKGN1cnNvclBvc2l0aW9uSXRlcmF0b3IsIGhpdEluZGV4KTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJTdGFydCA9PSBVQlJLX0RPTkUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSAwOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZVBhcnRpYWxHbHlwaHMpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV4VGV4dFJ1bi5zdHJpbmdMb2NhdGlvbigpICsgY2x1c3Rl
clN0YXJ0OwogCi0gICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJFbmQgPSB0ZXh0QnJlYWtGb2xs
b3dpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwotICAgICAgICAgICAgICAg
IGlmIChjbHVzdGVyRW5kID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgaW50IGNs
dXN0ZXJFbmQgPSB1YnJrX2ZvbGxvd2luZyhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRl
eCk7CisgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmQgPT0gVUJSS19ET05FKQogICAgICAg
ICAgICAgICAgICAgICBjbHVzdGVyRW5kID0gc3RyaW5nTGVuZ3RoOwogCiAgICAgICAgICAgICAg
ICAgQ0dGbG9hdCBjbHVzdGVyV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IDQ3ZDI0NDc1YWMwOTg5NGUwMzg4NTFhNDhiYjlj
MDVlZGRlZjM3YzIuLmU3ODBmZjY4MjBmMDlhNzYxMzc3ZjEyYTk0MzkxMjRhZDJhYWI0MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5k
YXJpZXMuaCIKIAorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
CkBAIC02MiwyNyArNjMsMjcgQEAgdW5zaWduZWQgc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250
ZXh0KFN0cmluZ1ZpZXcgdGV4dCkKIAogaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdW
aWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQogewotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9y
KiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogCiAgICAgaWYgKGZvcndhcmQpIHsKLSAg
ICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKLSAgICAg
ICAgd2hpbGUgKHBvc2l0aW9uICE9IFRleHRCcmVha0RvbmUpIHsKKyAgICAgICAgcG9zaXRpb24g
PSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAgICAgICB3aGlsZSAocG9zaXRpb24g
IT0gVUJSS19ET05FKSB7CiAgICAgICAgICAgICAvLyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRo
ZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmljLgogICAgICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikgPCB0ZXh0Lmxlbmd0aCgp
ICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uIC0gMV0pKQogICAgICAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKIAotICAgICAgICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmco
aXQsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gdWJya19mb2xsb3dpbmcoaXQs
IHBvc2l0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9uID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBw
b3NpdGlvbik7Ci0gICAgICAgIHdoaWxlIChwb3NpdGlvbiAhPSBUZXh0QnJlYWtEb25lKSB7Cisg
ICAgICAgIHBvc2l0aW9uID0gdWJya19wcmVjZWRpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICAgICAg
d2hpbGUgKHBvc2l0aW9uICE9IFVCUktfRE9ORSkgewogICAgICAgICAgICAgLy8gV2Ugc3RvcCBz
ZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgYnJlYWsgaXMgYWxwaGFu
dW1lcmljLgogICAgICAgICAgICAgaWYgKHBvc2l0aW9uICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0
aW9uXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogCi0gICAgICAgICAgICBw
b3NpdGlvbiA9IHRleHRCcmVha1ByZWNlZGluZyhpdCwgcG9zaXRpb24pOworICAgICAgICAgICAg
cG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhpdCwgcG9zaXRpb24pOwogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC05MSwxOSArOTIsMTkgQEAgaW50IGZpbmROZXh0V29yZEZyb21J
bmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQogCiB2b2lk
IGZpbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogc3Rh
cnQsIGludCogZW5kKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0
ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9u
KTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAg
ICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICBpZiAoKmVuZCA8IDAp
Ci0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsKLSAgICAqc3RhcnQgPSB0ZXh0QnJl
YWtQcmV2aW91cyhpdCk7CisgICAgICAgICplbmQgPSB1YnJrX2xhc3QoaXQpOworICAgICpzdGFy
dCA9IHVicmtfcHJldmlvdXMoaXQpOwogfQogCiB2b2lkIGZpbmRFbmRXb3JkQm91bmRhcnkoU3Ry
aW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogZW5kKQogewotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJl
YWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3Jk
QnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0
aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0
KTsKKyAgICAgICAgKmVuZCA9IHVicmtfbGFzdChpdCk7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hh
bnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
ZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCmluZGV4IDQxMWM4MDYxNGUyNjdjZmM1MTFm
ZmFkYjBhOTUzNjFjODFiNTQ5MzEuLjYzOGY3NmM0NmNjNmQ4MTJlZTVlOTJjZTNhNTVmMzczZWY0
MDhkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9U
ZXh0Q2hlY2tlckVuY2hhbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
ZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlIDxMYW5ndWFnZS5oPgogI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3Vi
cmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC05MSwxMyArOTIsMTMgQEAgdm9pZCBUZXh0Q2hlY2tlckVuY2hhbnQ6
OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBtaXNzcGUK
ICAgICBpZiAoIWhhc0RpY3Rpb25hcnkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVGV4dEJy
ZWFrSXRlcmF0b3IqIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvcihzdHJpbmcpOworICAgIFVCcmVh
a0l0ZXJhdG9yKiBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3Ioc3RyaW5nKTsKICAgICBpZiAoIWl0
ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHN0cmluZy51
dGY4KCk7Ci0gICAgaW50IHN0YXJ0ID0gdGV4dEJyZWFrRmlyc3QoaXRlcik7Ci0gICAgZm9yIChp
bnQgZW5kID0gdGV4dEJyZWFrTmV4dChpdGVyKTsgZW5kICE9IFRleHRCcmVha0RvbmU7IGVuZCA9
IHRleHRCcmVha05leHQoaXRlcikpIHsKKyAgICBpbnQgc3RhcnQgPSB1YnJrX2ZpcnN0KGl0ZXIp
OworICAgIGZvciAoaW50IGVuZCA9IHVicmtfbmV4dChpdGVyKTsgZW5kICE9IFVCUktfRE9ORTsg
ZW5kID0gdWJya19uZXh0KGl0ZXIpKSB7CiAgICAgICAgIGlmIChpc1dvcmRUZXh0QnJlYWsoaXRl
cikpIHsKICAgICAgICAgICAgIGNoZWNrU3BlbGxpbmdPZldvcmQodXRmOFN0cmluZywgc3RhcnQs
IGVuZCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgICAgICAg
ICAgLy8gU3RvcCBjaGVja2luZyB0aGUgbmV4dCB3b3JkcyBJZiB0aGUgY3VycmVudCB3b3JkIGlz
IG1pc3NwZWxsZWQsIHRvIGRvIG5vdCBvdmVyd3JpdGUgaXRzIG1pc3NwZWxsZWQgbG9jYXRpb24g
YW5kIGxlbmd0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRlMThhNGM4ZmY1NGNiZGUxYmQwYjJjZWY5MTJj
ZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMyOGQyY2VmZTUzZDI1ZjcyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAg
LTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0
ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKICAgICAvLyBmb3IgdGhlIGNvbnRleHRz
IGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25lLCBhbmQgaW4gdGhlIGZ1dHVyZSB3aWxsIGJl
CiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUgaVBob25lLXNwZWNpZmljIGJlaGF2aW9yIGZv
ciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGluZy4KICAgICBpbnQgcG9zID0gcG9zaXRpb247
Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4
dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4
dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAgICAgIGlmIChmb3J3YXJkKSB7CiAgICAgICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrRm9sbG93aW5nKGJvdW5k
YXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfZm9sbG93aW5nKGJvdW5kYXJ5
LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQogICAgICAgICAg
ICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICAgICAgfSB3aGlsZSAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0aCgpICYmIChwb3MgPT0gMCB8fCAh
aXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAmJiBpc1NraXBDaGFyYWN0ZXIodGV4dFtw
b3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3MpOworICAg
ICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAg
ICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3Mg
PSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9zID4gMCAmJiBpc1NraXBDaGFyYWN0ZXIodGV4
dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4IDg4ZDdlOTk1ODIwMzU4OTcwZjBlOGEx
ZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJmNDljOTAxMjFiMDgwMDZlMzE4MDk1NDU2ZmJi
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaApAQCAtMTAyLDEwICsxMDIs
MTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkoTGF6
eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKICAgICAgICAgICAgIGlmICghbmV4dEJyZWFr
IHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewogICAgICAgICAgICAgICAgIC8vIERvbid0IGJy
ZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFyeSBjb250ZXh0IGFuZCB0aGVyZSBp
cyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4
dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogYnJlYWtJ
dGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOworICAg
ICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVh
a0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0
ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBpIC0gMSArIHByaW9yQ29udGV4
dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IFRleHRC
cmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gdWJya19m
b2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNvbnRleHRMZW5ndGgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBVQlJLX0RPTkUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3LDExICsxNDcsMTEgQEAgc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVy
YXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0QnJlYWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkg
PCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBpZiBwb3NpdGlvbmVkIGF0IHN0YXJ0
IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8gcHJpb3IgY29udGV4dC4KICAgICAg
ICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgIFRl
eHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJyZWFrSXRlcmF0b3IuZ2V0KHBy
aW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAgVUJyZWFrSXRlcmF0b3IqIGJyZWFr
SXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKICAg
ICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAxKTsKLSAgICAgICAgICAgICAgICAgICAg
aW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBpICsgcHJp
b3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUg
PT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHVi
cmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBwcmlvckNvbnRleHRMZW5ndGggLSAxKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBVQlJLX0RPTkUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
Y2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXgg
YzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0OGVmMmUzOGQwNS4uYTBlZjgyZWE5NzI5YTJk
YjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hhcGVPdXRzaWRlSW5mby5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVHJhbnNmb3Jt
U3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGEyNWU0MGY4ZWM1NjY3MTVmMmFlYjBkYTQ0
MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0ZDExYzUzNGNlY2M2M2ExMzY0ODA2NmQ1Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTE1Myw3ICsxNTMs
NyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmluZywgVUNoYXIgcHJldmlvdXMp
CiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0gPSBzdHJpbmdJbXBsW2kgLSAxXTsK
ICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogYm91bmRhcnkgPSB3b3JkQnJlYWtJdGVy
YXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0ZXJzKCksIGxlbmd0aCAr
IDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihT
dHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsK
ICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm47CiAKQEAgLTE2MSw4ICsxNjEsOCBA
QCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmluZywgVUNoYXIgcHJldmlvdXMpCiAg
ICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCiAgICAgaW50MzJfdCBlbmRPZldv
cmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHRleHRCcmVha0ZpcnN0KGJvdW5kYXJ5KTsK
LSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpOyBlbmRPZldvcmQg
IT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQgPSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHRl
eHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHVicmtf
Zmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5kT2ZXb3JkID0gdWJya19uZXh0KGJvdW5kYXJ5
KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3RhcnRPZldvcmQgPSBlbmRPZldvcmQsIGVuZE9m
V29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsKICAgICAgICAgaWYgKHN0YXJ0T2ZXb3JkKSAv
LyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBzdHJpbmcKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFdID09IG5vQnJlYWtTcGFjZSA/IG5v
QnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJldmlvdXNbc3RhcnRPZldvcmRdKSk7
CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCArIDE7IGkgPCBlbmRPZldvcmQ7IGkr
KykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0
KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICByZXR1cm4gY3VycmVudCAtIDE7CiAKICAgICBT
dHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5pbXBsKCk7Ci0gICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KHRleHRJbXBs
LT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgpKSk7CisgICAgVUJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KHRleHRJbXBs
LT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgpKSk7CiAgICAgaWYgKCFpdGVyYXRv
cikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCi0gICAgbG9uZyByZXN1bHQgPSB0ZXh0
QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJlbnQpOwotICAgIGlmIChyZXN1bHQgPT0gVGV4
dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9IHVicmtfcHJlY2VkaW5nKGl0ZXJhdG9yLCBj
dXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVCUktfRE9ORSkKICAgICAgICAgcmVzdWx0ID0g
Y3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAgaW50IFJlbmRlclRleHQ6OnBy
ZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3VycmVudCkgY29uc3QKICAgICBB
U1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgU3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQu
aW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2h5IHRoaXMgaGFzIHNvIG11Y2ggaGFu
ZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5nIFRleHRCcmVha0l0ZXJhdG9yLgorICAgIC8v
IEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBzbyBtdWNoIGhhbmRyb2xsZWQgY29kZSByYXRo
ZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4KICAgICAvLyBBbHNvIHVuY2xlYXIgd2h5IHRo
aXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5jZUJ5Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVu
Y2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIGZhbmNpZXIgY2FzZSBjb3VsZCBi
ZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBubwpAQCAtMTY0OSwxMiArMTY0OSwxMiBAQCBp
bnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5nSW1wbCogdGV4dEltcGwgPSBtX3RleHQuaW1w
bCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IGN1cnNvck1vdmVtZW50SXRl
cmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVyczE2KCksIHRleHRJbXBsLT5sZW5n
dGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IGN1cnNvck1vdmVtZW50SXRl
cmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVyczE2KCksIHRleHRJbXBsLT5sZW5n
dGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBjdXJyZW50ICsgMTsK
IAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93aW5nKGl0ZXJhdG9yLCBjdXJyZW50
KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVha0RvbmUpCisgICAgbG9uZyByZXN1bHQgPSB1
YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVudCk7CisgICAgaWYgKHJlc3VsdCA9PSBVQlJL
X0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgKyAxOwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAppbmRleCBhZWU3NWE0NmZhZjA0MTAyMzM0
MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1MzZlNTJiYzVkODQ3ZTcxMTZjNmQyOTUwZmVm
MzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCkBAIC0yOCw3ICsyOCw2IEBA
CiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgog
I2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCmluZGV4IGJmZDk4NjdhNDVl
MWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2IuLjBjOWQ5ZjhjNzg0ZmJhMmZkZTdmNWYyZjMw
YmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJy
ZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVk
ZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBi
L1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCmluZGV4IDg5ZWIyYTMy
OWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0OTUuLmM0ZWZjMmU0ZGUxMGQwMTU3N2Q2NTQ1
ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBw
b3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFj
ZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgotI2ltcG9ydCA8d3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297289</attachid>
            <date>2016-12-15 19:45:13 -0800</date>
            <delta_ts>2016-12-15 20:24:47 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-165931-20161215194420.patch</filename>
            <type>text/plain</type>
            <size>60771</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwMTU2NzdjMGIwYTJmNWFiMTM0YzUw
MjQ4NDI4ODRkMjg1MWQ3NTEuLjc4ZTBlODI1OWIyM2U2NzExYjRlN2NiNTJjZTE5MGU4MDkzODI4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNjUgQEAKIDIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV1RG
OjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnRha2UpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnB1dCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
Ojpjb21wdXRlSW5kZXhFbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6b3BlbkxpbmVCcmVha0l0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OmdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpjYWNoZU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAg
ICAgICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgIChX
VEY6OnRleHRCcmVha0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTGFz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRl
eHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxv
d2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0N1cnJlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjpsYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6OnNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6dXBkYXRlUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cHJpb3JDb250ZXh0TGVuZ3RoKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yOjpvcGVyYXRvciBVQnJlYWtJdGVyYXRvciopOgorICAgICAgICAoV1RGOjpOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBE
ZWxldGVkLgorCisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKICAgICAgICAgU29ydCBYY29kZSBwcm9qZWN0IGZpbGVzCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5MzcKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGRjZGZmNjY3NGI4YjgzYTk0MzczZjM3ZTAwMWMzMjZlN2EzODVhZWMuLjg5YzVkYzhjMjc1M2E3
ZGNkYmJjYTYyODM2MGMwZDI1YTRkMGRjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAor
MjAxNi0xMi0xNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFN0b3AgcmVpbnRlcnByZXRfY2FzdGluZyBVQnJlYWtJdGVyYXRvcnMgdG8gdGhlIHVu
ZGVmaW5lZCB0eXBlIFRleHRCcmVha0l0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5k
TWlzc3BlbGxpbmdzKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNMb2dpY2FsU3RhcnRPZldvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNsb2dpY2FsRW5kT2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFNlbnRlbmNlQm91bmRhcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5kU2VudGVuY2VCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2
aW91c1NlbnRlbmNlUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2Vu
dGVuY2VQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKiBodG1sL1RleHRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0QnJl
YWtBdE9yUHJlY2VkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmJvdW5kZWRUZXh0QnJlYWtGb2xs
b3dpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRDbGlwVG9Xb3JkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRX
b3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVuZFdvcmRCb3VuZGFyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChX
ZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9CcmVh
a0xpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29z
ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNhcGl0YWxpemVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpuZXh0T2Zmc2V0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmg6CisgICAgICAgICog
cmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaDoKKwogMjAxNi0xMi0xNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSBIVE1MIHZhbGlkYXRpb24g
YnViYmxlJ3Mgc3RhdGUgaXMgdXBkYXRlZCBhZnRlciBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRl
eCA1NjMxODMzMmIyNGI2M2I4ZjA3ZjA5ZDU4OGFkZjZmOTA2YmE4NjdlLi45MmNkMGMzYWQ2MDE3
YjAyNDhmMWI3ZWU5ZjMwZDQ4YTcwZTBlZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KKworICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3RpbmcgVUJyZWFrSXRlcmF0b3JzIHRv
IHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5tbToK
KwogMjAxNi0xMS0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gRHVtcFJlbmRlclRyZWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCmluZGV4IDZmOTI3NTk3OWNlMzI2M2EyNGI1Yzk0NWQ2ZDRjNjIwMmNkYWYyOTIuLjY0MDlh
NDE2OTI5MjliY2FkMDdkZDY2NWRiOGUzNzM3NWEyNWQ0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTIw
OCw3ICsxMjA4LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAxICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwCi0jZGVmaW5lIEhBVkVfVE9VQ0hfQkFSIDEKKyNkZWZpbmUgSEFW
RV9UT1VDSF9CQVIgMAogI2RlZmluZSBIQVZFX0FEVkFOQ0VEX1NQRUxMX0NIRUNLSU5HIDEKIAog
I2lmIGRlZmluZWQoX19MUDY0X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaAppbmRleCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJjZTZh
YTIzNzczLi5jMGUwZTU3ZGU5YjZiZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTYwLDEx
ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCi0gICAg
VGV4dEJyZWFrSXRlcmF0b3IqIHRha2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVC
cmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJhdG9yKiB0
YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9k
ZSwgYm9vbCBpc0NKSykKICAgICB7CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlvbmFsQnJl
YWtLZXl3b3JkID0gbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKIAot
ICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAgICAgICBV
QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fcG9vbFtp
XS5maXJzdCA9PSBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAgICAgICAg
ICAgICBpdGVyYXRvciA9IG1fcG9vbFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0KFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRvciogaXRl
cmF0b3IpCiAgICAgewogICAgICAgICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMo
aXRlcmF0b3IpKTsKICAgICAgICAgaWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkpIHsKQEAg
LTk3LDggKzk3LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBjYXBhY2l0eSA9IDQ7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywg
VGV4dEJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRC
cmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1f
cG9vbDsKKyAgICBIYXNoTWFwPFVCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRl
ZEl0ZXJhdG9yczsKIAogICAgIGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0
ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIzMTE3
ZmJiMTZkZjU5NTdhLi5kNzg1NjJlMmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhmZWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5j
bHVkZSAiU3RyaW5nVmlldy5oIgogCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29k
ZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9PSBtX3N0
cmluZ1ZpZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAgICAgICAg
cmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5kZXgpOwor
ICAgICAgICByZXR1cm4gdWJya19mb2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2luZGV4
KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwCmluZGV4IDA1YTUxOTU2MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkzMjcuLjFk
YTBhYjYxOGE1OTk5ODhkYmRkMDc2YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFtZXNwYWNl
IFdURiB7CiAKIC8vIEl0ZXJhdG9yIGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0QnJlYWtJ
dGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25z
dCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRpYyBVQnJl
YWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsKICAgICBV
RXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtf
b3Blbih0eXBlLCBsb2NhbGUsIDAsIDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yID0gdWJya19vcGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNv
dWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVu
U3RhdHVzKSwgb3BlblN0YXR1cyk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAjaWYgIVBM
QVRGT1JNKElPUykKIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0
b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJdGVyYXRv
ciogaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMpCiB7
CiAgICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1bGVz
KTsKICAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVkQ2hh
cmFjdGVycygpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJh
Y3RlcnMsIGxlbmd0aCwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAgIFVC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFj
dGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3Bl
biBhIGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9w
ZW5TdGF0dXMpOwogICAgIHJldHVybiBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3Qg
Y2hhciogYnJlYWtSdWxlcykKIAogLy8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBp
dGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHNldFRl
eHRGb3JJdGVyYXRvcihVQnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5n
KQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVy
IHRleHRMb2NhbDsKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBz
ZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAg
ICAgICAgfQogCiAgICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9y
Kj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJrX3NldFVU
ZXh0KCZpdGVyYXRvciwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlM
VVJFKHNldFRleHRTdGF0dXMpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRl
eHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcK
ICAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUVycm9y
Q29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRleHQo
cmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVi
cmtfc2V0VGV4dCgmaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0
aCgpLCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1
cykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBA
IHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0
ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0KIAotc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIq
IHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGljIFVCcmVh
a0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRlcmF0b3Im
IGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwg
dW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkp
IHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsxMTMsNyBA
QCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRv
cihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVycm9yQ29k
ZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4
dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAmc2V0VGV4
dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKICAgICAg
ICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBz
ZXRUZXh0U3RhdHVzKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAgICBVRXJy
b3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRl
eHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZz
ZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRleHQsICZz
ZXRUZXh0U3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAl
ZCIsIHNldFRleHRTdGF0dXMpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDYs
MjUgKzE0NiwyNSBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRl
eHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMgaXRlcmF0
b3JzCiAKLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0
cmluZykKK1VCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJh
dG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVCcmVha0l0
ZXJhdG9yKiBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJL
X1dPUkQpOwogICAgIGlmICghc3RhdGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29yZEJy
ZWFrSXRlcmF0b3IsIHN0cmluZyk7CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJy
ZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2VudGVuY2VC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0QnJlYWtJ
dGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9y
KFVCUktfU0VOVEVOQ0UpOworICAgIHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVu
Y2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwogICAg
IGlmICghc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJ
dGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1l
bnRJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAg
IC8vIFRoaXMgcnVsZSBzZXQgaXMgYmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1
bGVzIG9mIElDVSA1NwpAQCAtMjkxLDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1
cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIhIXNhZmVf
cmV2ZXJzZTsiCiAgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAgc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlh
bGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9y
KiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1
bGVzKGtSdWxlcyk7CiAjZWxzZSAvLyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRoZSBzcGVj
aWFsIFRoYWkgY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAgIHN0
YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGlu
aXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGljIFVCcmVh
a0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAg
ICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICszMDMsMTYg
QEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBz
dHJpbmcpCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1l
bnRJdGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5l
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRv
ciogYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJp
b3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykK
IHsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRvclBv
b2w6OnNoYXJlZFBvb2woKS50YWtlKGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRh
a2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9y
KCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CiB9
CiAKLXZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvcikKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvcikKIHsKICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAgLTc4MCw3
ICs3ODAsNyBAQCBib29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJ
dGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
IG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9y
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwg
Ym9vbCBpc0NKSykKIHsKICAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAgVUVycm9y
Q29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAgQEAgVGV4
dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrSXRlcik7
CisgICAgcmV0dXJuIHVicmtJdGVyOwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3Io
VGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRv
cihVQnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9yKiB1YnJr
SXRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAg
VUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVicmtJdGVy
KTsKICAgICB1YnJrX2Nsb3NlKHVicmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxwdHI7CiB9
CiAKLXN0YXRpYyBzdGQ6OmF0b21pYzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IgPSBBVE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0aWMgc3Rk
OjphdG9taWM8VUJyZWFrSXRlcmF0b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
ID0gQVRPTUlDX1ZBUl9JTklUKG51bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRCcmVha0l0
ZXJhdG9yKiBnZXROb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRpYyBpbmxp
bmUgVUJyZWFrSXRlcmF0b3IqIGdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQog
ewogICAgIGlmIChhdXRvICpyZXMgPSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLmV4
Y2hhbmdlKG51bGxwdHIsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAgICByZXR1
cm4gcmVzOwogICAgIHJldHVybiBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKFRleHRCcmVha0l0ZXJhdG9yKiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lkIGNhY2hl
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2FjaGVNZSkK
IHsKICAgICBpZiAoYXV0byAqb2xkID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvci5l
eGNoYW5nZShjYWNoZU1lLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAgICAgdWJy
a19jbG9zZShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7CisgICAgICAg
IHVicmtfY2xvc2Uob2xkKTsKIH0KIAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKQEAgLTg0
OCw1MiArODQ4LDExIEBAIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpzd2FwKG1f
aXRlcmF0b3IsIG90aGVyLm1faXRlcmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGltcGxlbWVu
YXRpb24uCiAKLWludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Ip
Ci17Ci0gICAgcmV0dXJuIHVicmtfZmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRv
cio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJl
YWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVycHJl
dF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1By
ZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19w
cmV2aW91cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0K
LQotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGlu
dCBwb3MpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xsb3dp
bmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVybiB1
YnJrX2ZvbGxvd2luZyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
LCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciogaXRl
cmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IsIGludCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19pc0Jv
dW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0
aW9uKTsKLX0KLQotYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yKQorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQogewot
ICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0gdWJya19n
ZXRSdWxlU3RhdHVzKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dP
UkRfTk9ORTsKIH0KIApAQCAtOTIwLDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1
c3RlcnMoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtR3JhcGhl
bWVDbHVzdGVycyA9IDA7Ci0gICAgd2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3IpICE9IFRl
eHRCcmVha0RvbmUpCisgICAgd2hpbGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJSS19ET05F
KQogICAgICAgICArK251bUdyYXBoZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdyYXBoZW1l
Q2x1c3RlcnM7CiB9CkBAIC05NDgsMTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJz
SW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFwaGVt
ZQogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0
ZXJzOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRleHRC
cmVha0RvbmUpCisgICAgICAgIGlmICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktfRE9ORSkK
ICAgICAgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVybiB0ZXh0
QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0ZXJhdG9y
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmgKaW5kZXggOGFmYjU1ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAwNmE5ZS4u
YmNmNDRjMDdhNGVjOTFiNTE0NjdjMjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSByZXR1cm5l
ZCBpdGVyYXRvciBpcyBnb29kIG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3
aXRoIHRoZSBleGNlcHRpb24gb2YgYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBlbnVtIGNs
YXNzIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0cmlj
dCB9OwpAQCAtMzUsMjcgKzMzLDE3IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
IHsgRGVmYXVsdCwgTG9vc2UsIE5vcm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBVSSBjb252
ZW50aW9ucy4gT25lIG5vdGFibGUgZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJlbnQK
IC8vIGZyb20gY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFyYWN0
ZXJzLCBzZWUgYnVnIDI0MzQyLgogLy8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBhbmQg
c2VsZWN0aW9uIG1hbmlwdWxhdGlvbnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRl
cmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9FWFBPUlRf
UFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVy
YXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogY3Vy
c29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFRl
eHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2ln
bmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pL
KTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0
QnJlYWtJdGVyYXRvciopOwotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRv
cihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29s
IGlzQ0pLKTsKLXZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciom
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3Io
U3RyaW5nVmlldyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRlbmNl
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0
QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0
ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50
IHRleHRCcmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgdGV4dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9S
VF9QUklWQVRFIGludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQp
OwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRl
cmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJy
ZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4dEJy
ZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0
b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250
ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKik7
CitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9z
ZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIgaW50IFRl
eHRCcmVha0RvbmUgPSAtMTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRCcmVh
ayhVQnJlYWtJdGVyYXRvciopOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NKS0xvY2Fs
ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1YmxpYzoKIAog
ICAgIFVDaGFyIGxhc3RDaGFyYWN0ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09NUElMRV9B
U1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRl
cmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJh
dG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0dXJuIG1f
cHJpb3JDb250ZXh0WzFdOwogICAgIH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJhY3Rl
cigpIGNvbnN0CiAgICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RI
KG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9y
X2NvbnRleHRfbGVuZ3RoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlfTEVOR1RI
KG1fcHJpb3JDb250ZXh0KSA9PSAyLCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBwcmlvciBj
b250ZXh0IGxlbmd0aCIpOwogICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CiAgICAg
fQogCiAgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9M
YXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4
dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7CiAg
ICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0
ZVByaW9yQ29udGV4dChVQ2hhciBsYXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3Jf
dW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVu
ZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRb
MF0gPSBtX3ByaW9yQ29udGV4dFsxXTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBsYXN0
OwogICAgIH0KIAogICAgIHZvaWQgcmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAgICAgICAg
Q09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4
dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVC
cmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAg
bV9wcmlvckNvbnRleHRbMF0gPSAwOwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7CiAg
ICAgfQpAQCAtMTIwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlvckNvbnRl
eHRMZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoID0gMDsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9y
Q29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0
X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9y
Q29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBs
ZW5ndGgiKTsKICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAgICAgICAr
K3ByaW9yQ29udGV4dExlbmd0aDsKICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFswXSkK
QEAgLTEzMiw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRl
cmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlz
IChvciBoYXMgYmVlbikKICAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkg
c3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZwog
ICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorICAg
IFVCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0
eSk7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5n
dGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRM
ZW5ndGhdIDogMDsKQEAgLTE2NCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgcHJpb3JDb250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmluZ1ZpZXcg
bV9zdHJpbmdWaWV3OwogICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9p
dGVyYXRvciB7IG51bGxwdHIgfTsKICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRl
eHQgeyBudWxscHRyIH07CiAgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7IExpbmVC
cmVha0l0ZXJhdG9yTW9kZTo6RGVmYXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JD
b250ZXh0TGVuZ3RoIHsgMCB9OwpAQCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgogCiAgICAg
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yJiYpOwogCi0gICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVyYXRvcjsgfQorICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvcjsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07CiAKIC8v
IENvdW50cyB0aGUgbnVtYmVyIG9mIGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWly
IG9yIGEgc2VxdWVuY2UKQEAgLTIwNSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdW5z
aWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNpZ25l
ZAogdXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6OkxpbmVCcmVh
a0l0ZXJhdG9yTW9kZTsKIHVzaW5nIFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cjsKLXVzaW5nIFdURjo6VGV4dEJyZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0
b3I7Cit1c2luZyBXVEY6OmlzV29yZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcAppbmRleCA5N2ZhNDVmMTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYzN2QwLi40
ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUyYTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0eWxl
SW5oZXJpdGVkRGF0YS5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0
YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0
LAogICAgIC8vIFdlIG5lZWQgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVhZCB0byBh
Y2NvdW50IGZvciBVVEYtMTYgc3Vycm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVuZ3RoTGlt
aXQgPCBjaGFyYWN0ZXJMZW5ndGgpIHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNoYXJhY3Rl
ckxlbmd0aExpbWl0ICsgMiA+IGNoYXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5ndGggOiBj
aGFyYWN0ZXJMZW5ndGhMaW1pdCArIDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVhayhpdCwg
Y2hhcmFjdGVyTGVuZ3RoTGltaXQpKQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3RoTGltaXQg
PSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICAgICAg
aWYgKCF1YnJrX2lzQm91bmRhcnkoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAgICAgICAg
ICAgIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxl
bmd0aExpbWl0KTsKICAgICB9CiAKICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDBlNWRj
ZDYzYWE5OTYxZjIyNzA1NzQzZTBmZTA0NTk1M2M3YjFhZjEuLjM3OWQ3ZDI5OWU3NjA2NzJjYjU2
YTkzYTY2ODQ1MDRjOTMwOTBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5jcHAKQEAgLTMzLDEyICszMywxMyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxl
UG9zaXRpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKKyNpbmNsdWRlIDx1bmljb2Rl
L3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
NiwxMSArNzcsMTEgQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRDaGVj
a2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogc3RhdGljIHZvaWQgZmlu
ZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQs
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogICAgIGlmICghaXRl
cmF0b3IpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKGludCB3b3JkU3RhcnQgPSB0ZXh0QnJl
YWtDdXJyZW50KGl0ZXJhdG9yKTsgd29yZFN0YXJ0ID49IDA7ICkgewotICAgICAgICBpbnQgd29y
ZEVuZCA9IHRleHRCcmVha05leHQoaXRlcmF0b3IpOworICAgIGZvciAoaW50IHdvcmRTdGFydCA9
IHVicmtfY3VycmVudChpdGVyYXRvcik7IHdvcmRTdGFydCA+PSAwOyApIHsKKyAgICAgICAgaW50
IHdvcmRFbmQgPSB1YnJrX25leHQoaXRlcmF0b3IpOwogICAgICAgICBpZiAod29yZEVuZCA8IDAp
CiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCmluZGV4IDgzY2FlNGMzODY2MmJhODM5ZmYxZjdhZTc4Y2UxMTZhNjZmMDczYmYuLjE1M2Y1
ZWE0ZjRhNzQ1NDAyNzVmYTVjYTRjZmZkYTY0ZWQxYmU4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTM3LDkgKzM3LDEwIEBACiAjaW5jbHVkZSAiUmVuZGVy
ZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmll
cy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUg
PHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg1
LDcgKzI4Niw3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseU5leHRCb3goY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRC
b3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5s
aW5lVGV4dEJveCogdGV4dEJveCwKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRl
cmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQ
b3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKICAgICBpbnQmIHByZXZpb3Vz
Qm94TGVuZ3RoLCBib29sJiBwcmV2aW91c0JveEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hh
ciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJv
eGVzKQogewogICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jayA9IGZhbHNlOwpAQCAtMzA1
LDcgKzMwNiw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JG
b3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zCiAgICAgcmV0dXJuIHdvcmRCcmVh
a0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwogfQog
Ci1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0
Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElu
bGluZVRleHRCb3gqIHRleHRCb3gsCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0
ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCiAgICAgYm9vbCYgbmV4dEJv
eEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9n
aWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJveGVzKQogewogICAgIG5leHRCb3hJbkRpZmZl
cmVudEJsb2NrID0gZmFsc2U7CkBAIC0zMjMsMjAgKzMyNCwyMCBAQCBzdGF0aWMgVGV4dEJyZWFr
SXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlz
aWJsZVBvcwogICAgIHJldHVybiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZy5k
YXRhKCksIHN0cmluZy5zaXplKCkpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRP
ZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGlu
ZUJyZWFrKQorc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRPZldvcmQoVUJyZWFrSXRlcmF0b3Iq
IGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJvb2wgYm91
bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9u
KTsKKyAgICBib29sIGJvdW5kYXJ5ID0gaGFyZExpbmVCcmVhayA/IHRydWUgOiB1YnJrX2lzQm91
bmRhcnkoaXRlciwgcG9zaXRpb24pOwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHRleHRCcmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAg
dWJya19mb2xsb3dpbmcoaXRlciwgcG9zaXRpb24pOwogICAgIC8vIGlzV29yZFRleHRCcmVhayBy
ZXR1cm5zIHRydWUgYWZ0ZXIgbW92aW5nIGFjcm9zcyBhIHdvcmQgYW5kIGZhbHNlIGFmdGVyIG1v
dmluZyBhY3Jvc3MgYSBwdW5jdHVhdGlvbi9zcGFjZS4KICAgICByZXR1cm4gaXNXb3JkVGV4dEJy
ZWFrKGl0ZXIpOwogfQogCi1zdGF0aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQorc3RhdGlj
IGJvb2wgaXNsb2dpY2FsRW5kT2ZXb3JkKFVCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQgcG9zaXRp
b24sIGJvb2wgaGFyZExpbmVCcmVhaykKIHsKLSAgICBib29sIGJvdW5kYXJ5ID0gaXNUZXh0QnJl
YWsoaXRlciwgcG9zaXRpb24pOworICAgIGJvb2wgYm91bmRhcnkgPSB1YnJrX2lzQm91bmRhcnko
aXRlciwgcG9zaXRpb24pOwogICAgIHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3VuZGFyeSkg
JiYgaXNXb3JkVGV4dEJyZWFrKGl0ZXIpOwogfQogCkBAIC0zNTEsNyArMzUyLDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zaXRpb24KICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7
CiAgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IG51bGxwdHI7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXIgPSBudWxscHRyOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0
cjsKIAogICAgIENhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMgbGVhZkJveGVzOwogICAg
IFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpAQCAtMzkwLDcgKzM5MSw3IEBAIHN0YXRpYyBW
aXNpYmxlUG9zaXRpb24gdmlzdWFsV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIGlmICghaXRlcikKICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIHRleHRCcmVha0ZpcnN0KGl0ZXIpOworICAgICAgICB1YnJrX2ZpcnN0KGl0ZXIp
OwogICAgICAgICBpbnQgb2Zmc2V0SW5JdGVyYXRvciA9IG9mZnNldEluQm94IC0gdGV4dEJveC5z
dGFydCgpICsgcHJldmlvdXNCb3hMZW5ndGg7CiAKICAgICAgICAgYm9vbCBpc1dvcmRCcmVhazsK
QEAgLTExMDksNyArMTExMCw3IEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiB1bnNpZ25lZCBz
dGFydFNlbnRlbmNlQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnlT
ZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJikKIHsKICAgICAvLyBGSVhNRTogVGhlIGZv
bGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4KLSAg
ICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwg
dGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJ
dGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBzdGFy
dE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExMTksNyAr
MTEyMCw3IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBwb3NpdGlvbikKIAogdW5zaWduZWQgZW5kU2VudGVuY2VCb3VuZGFyeShTdHJpbmdW
aWV3IHRleHQsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJv
b2wmKQogewotICAgIHJldHVybiB0ZXh0QnJlYWtOZXh0KHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0
ZXh0KSk7CisgICAgcmV0dXJuIHVicmtfbmV4dChzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCkp
OwogfQogCiBWaXNpYmxlUG9zaXRpb24gZW5kT2ZTZW50ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uKQpAQCAtMTEzMiw3ICsxMTMzLDcgQEAgc3RhdGljIHVuc2lnbmVkIHByZXZp
b3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJv
dW4KIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGljYWwgdG8gc3RhcnRTZW50ZW5jZUJv
dW5kYXJ5LiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIG5vdCByaWdodC4KICAgICAvLyBGSVhNRTog
VGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhh
dC4KLSAgICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0
ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNl
QnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
bikKQEAgLTExNDQsNyArMTE0NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXh0U2VudGVuY2VQb3Np
dGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5CiB7CiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgaWRlbnRpY2FsIHRvIGVuZFNlbnRlbmNlQm91bmRhcnkuCiAgICAg
Ly8gVGhhdCBpc24ndCByaWdodC4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBtb3ZlIHRvIHRoZSBl
cXVpdmFsZW50IHBvc2l0aW9uIGluIHRoZSBmb2xsb3dpbmcgc2VudGVuY2UuCi0gICAgcmV0dXJu
IHRleHRCcmVha0ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOworICAg
IHJldHVybiB1YnJrX2ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOwog
fQogCiBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IDZjMWQ4YjNlZDQ1ZTI0NWE3YzdjNDY5NzAwMmJkMTg5NmM5M2Q3MzkuLmQ0M2Q0ZWY5
ZTAxMTkyNmQwZThhMGViZGVjODc1MmQzZWZmZGZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNiBAQAogI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBjNDFiYzhmZmVlZWUwODZjNDU2YzJh
MjA3OGU0ZmYwYzJmMDQ1YWU3Li4zNWE0MmIzZmRjNTdkYjQ0MmNhMTIxZDZlZmUyYjBmZmI5NDhi
NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAg
LTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRy
YXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNkNDdlNDYwMjUxZjMy
OWQyMjZiZTM0YWNkODBiZmEwNGQwZDk2NjUuLmY2YTZiYmM0NjRiOWFmYTM4ZDU3YjRkMWVjNDdj
ZjNjY2E5MjY2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTY5LDcgKzY5LDYg
QEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBlLmgi
CiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAi
VGltZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIlVSTElucHV0VHlwZS5oIgpAQCAtNzgsNiArNzcs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWI3ZDkwMWFmYzAyNWI1OWFm
OTFiYjdlZGFmNGM3YjMwM2NmMTAxOC4uZjM1ZmI0YzI2MTA3YzU1ZjMxMTIxZWU1ZWQyYTY5OWNi
ZjQ4M2E2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApA
QCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAppbmRleCBmNmYw
Mjc2ZDE4ZDg2ODA0MGRiZmI2MjU4ODJiNzA4YzMzNjU4ZTViLi45MDMyZGI2NzU3ZjVjZjJlMTM3
YTk0MGM5NmRjMGUwMTIxZWE0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5j
cHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXggYWZhOGUxMmQ4
MWJkODViZDk2M2Y4ZGNiMmM4YmVjNTQ3OTc0YzAxYi4uODVhM2FkMjlhZTUwOWI5MTA1ZWU1YTk0
NmYyNjJiZDBmYmMzOGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Rm9udENhc2NhZGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
I2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC00MywxOSArNDQsMTkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB0eXBlZGVmIHVuc2lnbmVkIFRydW5jYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZlciwgYm9v
bCBzaG91bGRJbnNlcnRFbGxpcHNpcyk7CiAKLXN0YXRpYyBpbmxpbmUgaW50IHRleHRCcmVha0F0
T3JQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0LCBpbnQgb2Zmc2V0KQorc3RhdGljIGlu
bGluZSBpbnQgdGV4dEJyZWFrQXRPclByZWNlZGluZyhVQnJlYWtJdGVyYXRvciogaXQsIGludCBv
ZmZzZXQpCiB7Ci0gICAgaWYgKGlzVGV4dEJyZWFrKGl0LCBvZmZzZXQpKQorICAgIGlmICh1YnJr
X2lzQm91bmRhcnkoaXQsIG9mZnNldCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKLSAgICBp
bnQgcmVzdWx0ID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiBy
ZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSA/IDAgOiByZXN1bHQ7CisgICAgaW50IHJlc3VsdCA9IHVi
cmtfcHJlY2VkaW5nKGl0LCBvZmZzZXQpOworICAgIHJldHVybiByZXN1bHQgPT0gVUJSS19ET05F
ID8gMCA6IHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgYm91bmRlZFRleHRCcmVha0Zv
bGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCitz
dGF0aWMgaW5saW5lIGludCBib3VuZGVkVGV4dEJyZWFrRm9sbG93aW5nKFVCcmVha0l0ZXJhdG9y
KiBpdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gdGV4dEJy
ZWFrRm9sbG93aW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4dEJyZWFr
RG9uZSA/IGxlbmd0aCA6IHJlc3VsdDsKKyAgICBpbnQgcmVzdWx0ID0gdWJya19mb2xsb3dpbmco
aXQsIG9mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBVQlJLX0RPTkUgPyBsZW5ndGggOiBy
ZXN1bHQ7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNo
YXIqIGJ1ZmZlciwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcykKQEAgLTE0Niw3ICsxNDcsNyBA
QCBzdGF0aWMgdW5zaWduZWQgcmlnaHRDbGlwVG9Xb3JkQnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBsZW5ndGgp
OwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0gICAgVGV4
dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmcp
LnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOwogICAg
IHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291
bnQpOwogICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAppbmRleCA4MGYxYzYzZDA5ZTQ5ZDZmMjg4OTllYWQ0MzFmODIzNjdhNTA0NGFhLi5jZmI1
NjcxZDcwMzU5YTg5MDgxMjE4YzM4YzRiODhiYjlkYjliMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcApAQCAtMzAsMTAgKzMwLDExIEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIK
KyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TKQpAQCAtMTc2LDIxICsxNzcsMjEgQEAgdW5zaWduZWQgQ29tcGxleFRl
eHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1ZGVQYXJ0
aWFsR2wKICAgICAgICAgICAgICAgICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxpZ2F0dXJl
IGNhcmV0cyIuIFRoaXMgaXMgYXZhaWxhYmxlIGluIENvcmVUZXh0IHZpYSBDVEZvbnRHZXRMaWdh
dHVyZUNhcmV0UG9zaXRpb25zKCkuCiAgICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRJbmRleCA9
IGhpdEdseXBoU3RhcnQgKyAoaGl0R2x5cGhFbmQgLSBoaXRHbHlwaFN0YXJ0KSAqIChtX3J1bi5s
dHIoKSA/IHggLyBhZGp1c3RlZEFkdmFuY2UgOiAxIC0geCAvIGFkanVzdGVkQWR2YW5jZSk7CiAg
ICAgICAgICAgICAgICAgaW50IHN0cmluZ0xlbmd0aCA9IGNvbXBsZXhUZXh0UnVuLnN0cmluZ0xl
bmd0aCgpOwotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JQb3NpdGlv
bkl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KGNvbXBsZXhUZXh0
UnVuLmNoYXJhY3RlcnMoKSwgc3RyaW5nTGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgVUJyZWFr
SXRlcmF0b3IqIGN1cnNvclBvc2l0aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9y
KFN0cmluZ1ZpZXcoY29tcGxleFRleHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5ndGgpKTsK
ICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlclN0YXJ0OwotICAgICAgICAgICAgICAgIGlmIChp
c1RleHRCcmVhayhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCisgICAgICAgICAg
ICAgICAgaWYgKHVicmtfaXNCb3VuZGFyeShjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRl
eCkpCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4OwogICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSB0ZXh0
QnJlYWtQcmVjZWRpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoY2x1c3RlclN0YXJ0ID09IFRleHRCcmVha0RvbmUpCisgICAgICAg
ICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IHVicmtfcHJlY2VkaW5nKGN1cnNvclBvc2l0aW9u
SXRlcmF0b3IsIGhpdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJTdGFy
dCA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSAw
OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZVBhcnRp
YWxHbHlwaHMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV4VGV4dFJ1bi5zdHJp
bmdMb2NhdGlvbigpICsgY2x1c3RlclN0YXJ0OwogCi0gICAgICAgICAgICAgICAgaW50IGNsdXN0
ZXJFbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5k
ZXgpOwotICAgICAgICAgICAgICAgIGlmIChjbHVzdGVyRW5kID09IFRleHRCcmVha0RvbmUpCisg
ICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJFbmQgPSB1YnJrX2ZvbGxvd2luZyhjdXJzb3JQb3Np
dGlvbkl0ZXJhdG9yLCBoaXRJbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmQg
PT0gVUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyRW5kID0gc3RyaW5nTGVu
Z3RoOwogCiAgICAgICAgICAgICAgICAgQ0dGbG9hdCBjbHVzdGVyV2lkdGg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IDQ3ZDI0NDc1
YWMwOTg5NGUwMzg4NTFhNDhiYjljMDVlZGRlZjM3YzIuLmU3ODBmZjY4MjBmMDlhNzYxMzc3ZjEy
YTk0MzkxMjRhZDJhYWI0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEJvdW5kYXJpZXMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKIAorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC02MiwyNyArNjMsMjcgQEAgdW5zaWduZWQgc3RhcnRP
Zkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KFN0cmluZ1ZpZXcgdGV4dCkKIAogaW50IGZpbmROZXh0
V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJk
KQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQp
OworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogCiAg
ICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmco
aXQsIHBvc2l0aW9uKTsKLSAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFRleHRCcmVha0RvbmUp
IHsKKyAgICAgICAgcG9zaXRpb24gPSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAg
ICAgICB3aGlsZSAocG9zaXRpb24gIT0gVUJSS19ET05FKSB7CiAgICAgICAgICAgICAvLyBXZSBz
dG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgYnJlYWsgaXMg
YWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3Np
dGlvbikgPCB0ZXh0Lmxlbmd0aCgpICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uIC0gMV0pKQog
ICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKIAotICAgICAgICAgICAgcG9zaXRpb24g
PSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9uID0gdGV4
dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlvbik7Ci0gICAgICAgIHdoaWxlIChwb3NpdGlvbiAh
PSBUZXh0QnJlYWtEb25lKSB7CisgICAgICAgIHBvc2l0aW9uID0gdWJya19wcmVjZWRpbmcoaXQs
IHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFVCUktfRE9ORSkgewogICAg
ICAgICAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZvbGxvd2lu
ZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHBvc2l0aW9uICYm
IHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOwogCi0gICAgICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha1ByZWNlZGluZyhpdCwgcG9z
aXRpb24pOworICAgICAgICAgICAgcG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhpdCwgcG9zaXRp
b24pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSwxOSArOTIsMTkgQEAg
aW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwg
Ym9vbCBmb3J3YXJkKQogCiB2b2lkIGZpbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBp
bnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludCogZW5kKQogewotICAgIFRleHRCcmVha0l0ZXJh
dG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJlYWtG
b2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJl
YWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9u
KTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsK
LSAgICAqc3RhcnQgPSB0ZXh0QnJlYWtQcmV2aW91cyhpdCk7CisgICAgICAgICplbmQgPSB1YnJr
X2xhc3QoaXQpOworICAgICpzdGFydCA9IHVicmtfcHJldmlvdXMoaXQpOwogfQogCiB2b2lkIGZp
bmRFbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogZW5k
KQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQp
OwotICAgICplbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJl
YWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJy
a19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICpl
bmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsKKyAgICAgICAgKmVuZCA9IHVicmtfbGFzdChpdCk7CiB9
CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCmluZGV4
IDQxMWM4MDYxNGUyNjdjZmM1MTFmZmFkYjBhOTUzNjFjODFiNTQ5MzEuLjYzOGY3NmM0NmNjNmQ4
MTJlZTVlOTJjZTNhNTVmMzczZWY0MDhkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCkBAIC0y
NCw2ICsyNCw3IEBACiAKICNpbmNsdWRlIDxMYW5ndWFnZS5oPgogI2luY2x1ZGUgPGdsaWIuaD4K
KyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MSwxMyArOTIsMTMgQEAgdm9p
ZCBUZXh0Q2hlY2tlckVuY2hhbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZywgaW50JiBtaXNzcGUKICAgICBpZiAoIWhhc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRv
cihzdHJpbmcpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3Io
c3RyaW5nKTsKICAgICBpZiAoIWl0ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcg
dXRmOFN0cmluZyA9IHN0cmluZy51dGY4KCk7Ci0gICAgaW50IHN0YXJ0ID0gdGV4dEJyZWFrRmly
c3QoaXRlcik7Ci0gICAgZm9yIChpbnQgZW5kID0gdGV4dEJyZWFrTmV4dChpdGVyKTsgZW5kICE9
IFRleHRCcmVha0RvbmU7IGVuZCA9IHRleHRCcmVha05leHQoaXRlcikpIHsKKyAgICBpbnQgc3Rh
cnQgPSB1YnJrX2ZpcnN0KGl0ZXIpOworICAgIGZvciAoaW50IGVuZCA9IHVicmtfbmV4dChpdGVy
KTsgZW5kICE9IFVCUktfRE9ORTsgZW5kID0gdWJya19uZXh0KGl0ZXIpKSB7CiAgICAgICAgIGlm
IChpc1dvcmRUZXh0QnJlYWsoaXRlcikpIHsKICAgICAgICAgICAgIGNoZWNrU3BlbGxpbmdPZldv
cmQodXRmOFN0cmluZywgc3RhcnQsIGVuZCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxp
bmdMZW5ndGgpOwogICAgICAgICAgICAgLy8gU3RvcCBjaGVja2luZyB0aGUgbmV4dCB3b3JkcyBJ
ZiB0aGUgY3VycmVudCB3b3JkIGlzIG1pc3NwZWxsZWQsIHRvIGRvIG5vdCBvdmVyd3JpdGUgaXRz
IG1pc3NwZWxsZWQgbG9jYXRpb24gYW5kIGxlbmd0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRlMThhNGM4
ZmY1NGNiZGUxYmQwYjJjZWY5MTJjZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMyOGQyY2Vm
ZTUzZDI1ZjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4dFdvcmRG
cm9tSW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKICAg
ICAvLyBmb3IgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25lLCBhbmQg
aW4gdGhlIGZ1dHVyZSB3aWxsIGJlCiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUgaVBob25l
LXNwZWNpZmljIGJlaGF2aW9yIGZvciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGluZy4KICAg
ICBpbnQgcG9zID0gcG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0g
d29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0g
d29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAgICAgIGlm
IChmb3J3YXJkKSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4
dEJyZWFrRm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVi
cmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0g
VUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwogICAg
ICAgICAgICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0
aCgpICYmIChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAmJiBp
c1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJlY2VkaW5n
KGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJv
dW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQogICAg
ICAgICAgICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9zID4gMCAm
JiBpc1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRl
eHRbcG9zIC0gMV0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVh
a0xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4IDg4
ZDdlOTk1ODIwMzU4OTcwZjBlOGExZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJmNDljOTAx
MjFiMDgwMDZlMzE4MDk1NDU2ZmJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGlu
ZXMuaApAQCAtMTAyLDEwICsxMDIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQ
b3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKICAgICAg
ICAgICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewogICAgICAg
ICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFy
eSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAgICAgICAg
IGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBUZXh0
QnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlv
ckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciogYnJl
YWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9y
LCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlv
ckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9
PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3LDExICsx
NDcsMTEgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29z
ZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0QnJlYWsg
fHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBp
ZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8g
cHJpb3IgY29udGV4dC4KICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkg
ewotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6
eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAg
VUJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJp
b3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAxKTsK
LSAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhi
cmVha0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAgICAg
ICAgaW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBwcmlv
ckNvbnRleHRMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9
PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggYzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0OGVmMmUz
OGQwNS4uYTBlZjgyZWE5NzI5YTJkYjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBACiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hh
cGVPdXRzaWRlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGEyNWU0
MGY4ZWM1NjY3MTVmMmFlYjBkYTQ0MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0ZDExYzUz
NGNlY2M2M2ExMzY0ODA2NmQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0
cmluZywgVUNoYXIgcHJldmlvdXMpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0g
PSBzdHJpbmdJbXBsW2kgLSAxXTsKICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogYm91
bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5j
aGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkg
PSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0
ZXJzKCksIGxlbmd0aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm47
CiAKQEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmlu
ZywgVUNoYXIgcHJldmlvdXMpCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwog
CiAgICAgaW50MzJfdCBlbmRPZldvcmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHRleHRC
cmVha0ZpcnN0KGJvdW5kYXJ5KTsKLSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVha05leHQo
Ym91bmRhcnkpOyBlbmRPZldvcmQgIT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQgPSBlbmRP
ZldvcmQsIGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAgaW50MzJf
dCBzdGFydE9mV29yZCA9IHVicmtfZmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5kT2ZXb3Jk
ID0gdWJya19uZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3RhcnRPZldv
cmQgPSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsKICAgICAg
ICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBzdHJp
bmcKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFd
ID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJl
dmlvdXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCAr
IDE7IGkgPCBlbmRPZldvcmQ7IGkrKykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50IFJlbmRl
clRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICByZXR1cm4g
Y3VycmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5pbXBsKCk7
Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRv
cihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgp
KSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRv
cihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgp
KSk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCi0g
ICAgbG9uZyByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJlbnQpOwot
ICAgIGlmIChyZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9IHVicmtf
cHJlY2VkaW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVCUktfRE9O
RSkKICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsxNTIzLDcg
QEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQg
Y3VycmVudCkgY29uc3QKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgU3RyaW5n
SW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2h5
IHRoaXMgaGFzIHNvIG11Y2ggaGFuZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5nIFRleHRC
cmVha0l0ZXJhdG9yLgorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBzbyBtdWNo
IGhhbmRyb2xsZWQgY29kZSByYXRoZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4KICAgICAv
LyBBbHNvIHVuY2xlYXIgd2h5IHRoaXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5jZUJ5Q29t
YmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlz
IGZhbmNpZXIgY2FzZSBjb3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBubwpAQCAt
MTY0OSwxMiArMTY0OSwxMiBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVu
dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5nSW1wbCog
dGV4dEltcGwgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVy
czE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVy
czE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAg
IHJldHVybiBjdXJyZW50ICsgMTsKIAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93
aW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVha0RvbmUp
CisgICAgbG9uZyByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVudCk7Cisg
ICAgaWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgKyAx
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAppbmRl
eCBhZWU3NWE0NmZhZjA0MTAyMzM0MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1MzZlNTJi
YzVkODQ3ZTcxMTZjNmQyOTUwZmVmMzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRv
ci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUg
IlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oCmluZGV4IGJmZDk4NjdhNDVlMWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2IuLjBjOWQ5
ZjhjNzg0ZmJhMmZkZTdmNWYyZjMwYmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUg
IkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNj
L1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBw
b3J0Lm1tCmluZGV4IDg5ZWIyYTMyOWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0OTUuLmM0
ZWZjMmU0ZGUxMGQwMTU3N2Q2NTQ1ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQ
SS5oPgotI2ltcG9ydCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2ltcG9ydCA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKaW5kZXggOGUyOTQyNTkzNGU0YmJmYjc4ZWQ4
ZmVjOGI4NzY5NmUzNzUxNmIzYi4uM2RmODM2NGQ1NGZhOWE4MjJhOWMzNGZjNDQ2ODMwYWIxZDgw
YmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tl
ckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVm
bC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpjbG9zZVNwZWxsRG9j
dW1lbnRXaXRoVGFnKGludDY0X3QgdGFnKQogc3RhdGljIHVuc2lnbmVkIG5leHRXb3JkT2Zmc2V0
KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAgICAvLyBGSVhN
RTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBjb3VsZCBiZSBw
YXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFrKCkgbGVhdmVz
IHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQK
KyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVyYXRvciBwb2lu
dGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAgICAgICAgb3Ig
YWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAgICAgLy8gICAg
ICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0IHByb3Blcmx5
IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0IHJlc2V0dGlu
ZyB0aGUgaXRlcmF0b3IuCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHVuc2lnbmVkIG5leHRX
b3JkT2Zmc2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKICAgICAg
ICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7CiAKICAgICB1bnNpZ25lZCB3b3JkT2Zmc2V0ID0gY3Vy
cmVudE9mZnNldDsKLSAgICB3aGlsZSAod29yZE9mZnNldCA8IHRleHQubGVuZ3RoKCkgJiYgaXNU
ZXh0QnJlYWsodGV4dEl0ZXJhdG9yLCB3b3JkT2Zmc2V0KSkKKyAgICB3aGlsZSAod29yZE9mZnNl
dCA8IHRleHQubGVuZ3RoKCkgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgd29yZE9m
ZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0cmVhdCB0aGUg
d29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMTc1LDcgKzE3NSw3IEBAIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChp
bnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgICAgIC8vIGludm9sdmUgdGhlIGNsaWVudCB0byBjaGVj
ayBzcGVsbGluZyBmb3IgdGhlbS4KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbmV4dFdvcmRP
ZmZzZXQodGV4dCwgMCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aFN0cmlwID0gdGV4dC5sZW5n
dGgoKTsKLSAgICAgICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiBpc1RleHRCcmVhayh0ZXh0
SXRlcmF0b3IsIGxlbmd0aFN0cmlwIC0gMSkpCisgICAgICAgIHdoaWxlIChsZW5ndGhTdHJpcCA+
IDAgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgbGVuZ3RoU3RyaXAgLSAxKSkKICAg
ICAgICAgICAgIC0tbGVuZ3RoU3RyaXA7CiAKICAgICAgICAgd2hpbGUgKG9mZnNldCA8IGxlbmd0
aFN0cmlwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1RleHRD
aGVja2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJH
dGsuY3BwCmluZGV4IGM2ZGNmMTM4NWUxNzQ5YzY0Nzk3NDkwM2Y2ZTgyMjg3MDdiNmU5MDYuLjlh
NjQxMDA1OWM1NTc2YmRiMzhmNTRkNjAwNDE3ZGU5NGQyYTYzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0yMjYsMTYgKzIyNiwx
NiBAQCB2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRy
PFRleHRDaGVja2VyQ29tcGxldGlvbj4gY29tcAogc3RhdGljIHVuc2lnbmVkIG5leHRXb3JkT2Zm
c2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAgICAvLyBG
SVhNRTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBjb3VsZCBi
ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFrKCkgbGVh
dmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24g
YXQKKyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVyYXRvciBw
b2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAgICAgICAg
b3IgYWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAgICAgLy8g
ICAgICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0IHByb3Bl
cmx5IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0IHJlc2V0
dGluZyB0aGUgaXRlcmF0b3IuCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRleHRJdGVyYXRvciA9
IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9ycyogdGV4dEl0ZXJh
dG9yID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKCF0ZXh0SXRlcmF0b3IpCiAg
ICAgICAgIHJldHVybiBjdXJyZW50T2Zmc2V0OwogCiAgICAgdW5zaWduZWQgd29yZE9mZnNldCA9
IGN1cnJlbnRPZmZzZXQ7Ci0gICAgd2hpbGUgKHdvcmRPZmZzZXQgPCB0ZXh0Lmxlbmd0aCgpICYm
IGlzVGV4dEJyZWFrKHRleHRJdGVyYXRvciwgd29yZE9mZnNldCkpCisgICAgd2hpbGUgKHdvcmRP
ZmZzZXQgPCB0ZXh0Lmxlbmd0aCgpICYmIHVicmtfaXNCb3VuZGFyeSh0ZXh0SXRlcmF0b3IsIHdv
cmRPZmZzZXQpKQogICAgICAgICArK3dvcmRPZmZzZXQ7CiAKICAgICAvLyBEbyBub3QgdHJlYXQg
dGhlIHdvcmQncyBib3VuZGFyeSBhcyBhIHNlcGFyYXRvci4KQEAgLTI1OCw3ICsyNTgsNyBAQCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoaW50NjRfdCBzcGVsbERvY3VtZQogICAgIGlmICghKGNoZWNraW5nVHlwZXMgJiBUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmcpKQogICAgICAgICByZXR1cm4gVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4oKTsKIAotICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0ZXh0SXRlcmF0b3IgPSB3b3JkQnJl
YWtJdGVyYXRvcih0ZXh0KTsKKyAgICBVQnJlYWtJdGVyYXRvcnMqIHRleHRJdGVyYXRvciA9IHdv
cmRCcmVha0l0ZXJhdG9yKHRleHQpOwogICAgIGlmICghdGV4dEl0ZXJhdG9yKQogICAgICAgICBy
ZXR1cm4gVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4oKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBA
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFn
cmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgLy8gaW52b2x2ZSB0aGUgY2xpZW50IHRvIGNo
ZWNrIHNwZWxsaW5nIGZvciB0aGVtLgogICAgIHVuc2lnbmVkIG9mZnNldCA9IG5leHRXb3JkT2Zm
c2V0KHRleHQsIDApOwogICAgIHVuc2lnbmVkIGxlbmd0aFN0cmlwID0gdGV4dC5sZW5ndGgoKTsK
LSAgICB3aGlsZSAobGVuZ3RoU3RyaXAgPiAwICYmIGlzVGV4dEJyZWFrKHRleHRJdGVyYXRvciwg
bGVuZ3RoU3RyaXAgLSAxKSkKKyAgICB3aGlsZSAobGVuZ3RoU3RyaXAgPiAwICYmIHVicmtfaXNC
b3VuZGFyeSh0ZXh0SXRlcmF0b3IsIGxlbmd0aFN0cmlwIC0gMSkpCiAgICAgICAgIC0tbGVuZ3Ro
U3RyaXA7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBwYXJhZ3JhcGhDaGVja2lu
Z1Jlc3VsdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297295</attachid>
            <date>2016-12-15 20:24:58 -0800</date>
            <delta_ts>2016-12-15 20:41:17 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-165931-20161215202405.patch</filename>
            <type>text/plain</type>
            <size>60997</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwMTU2NzdjMGIwYTJmNWFiMTM0YzUw
MjQ4NDI4ODRkMjg1MWQ3NTEuLjc4ZTBlODI1OWIyM2U2NzExYjRlN2NiNTJjZTE5MGU4MDkzODI4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNjUgQEAKIDIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV1RG
OjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnRha2UpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnB1dCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
Ojpjb21wdXRlSW5kZXhFbmQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToK
KyAgICAgICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6b3BlbkxpbmVCcmVha0l0
ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OmdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpjYWNoZU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAg
ICAgICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgIChX
VEY6OnRleHRCcmVha0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTGFz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRl
eHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxv
d2luZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0N1cnJlbnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaDoKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjpsYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6OnNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6dXBkYXRlUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cHJpb3JDb250ZXh0TGVuZ3RoKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpnZXQpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yOjpvcGVyYXRvciBVQnJlYWtJdGVyYXRvciopOgorICAgICAgICAoV1RGOjpOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBE
ZWxldGVkLgorCisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKICAgICAgICAgU29ydCBYY29kZSBwcm9qZWN0IGZpbGVzCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5MzcKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGRjZGZmNjY3NGI4YjgzYTk0MzczZjM3ZTAwMWMzMjZlN2EzODVhZWMuLjg5YzVkYzhjMjc1M2E3
ZGNkYmJjYTYyODM2MGMwZDI1YTRkMGRjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAor
MjAxNi0xMi0xNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFN0b3AgcmVpbnRlcnByZXRfY2FzdGluZyBVQnJlYWtJdGVyYXRvcnMgdG8gdGhlIHVu
ZGVmaW5lZCB0eXBlIFRleHRCcmVha0l0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5k
TWlzc3BlbGxpbmdzKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNMb2dpY2FsU3RhcnRPZldvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNsb2dpY2FsRW5kT2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFNlbnRlbmNlQm91bmRhcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5kU2VudGVuY2VCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2
aW91c1NlbnRlbmNlUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2Vu
dGVuY2VQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKiBodG1sL1RleHRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0QnJl
YWtBdE9yUHJlY2VkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmJvdW5kZWRUZXh0QnJlYWtGb2xs
b3dpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRDbGlwVG9Xb3JkQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRX
b3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEVuZFdvcmRCb3VuZGFyeSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChX
ZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9CcmVh
a0xpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29z
ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNhcGl0YWxpemVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpuZXh0T2Zmc2V0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmg6CisgICAgICAgICog
cmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaDoKKwogMjAxNi0xMi0xNSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSBIVE1MIHZhbGlkYXRpb24g
YnViYmxlJ3Mgc3RhdGUgaXMgdXBkYXRlZCBhZnRlciBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRl
eCA1NjMxODMzMmIyNGI2M2I4ZjA3ZjA5ZDU4OGFkZjZmOTA2YmE4NjdlLi45MmNkMGMzYWQ2MDE3
YjAyNDhmMWI3ZWU5ZjMwZDQ4YTcwZTBlZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KKworICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3RpbmcgVUJyZWFrSXRlcmF0b3JzIHRv
IHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5tbToK
KwogMjAxNi0xMS0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gRHVtcFJlbmRlclRyZWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCmluZGV4IDZmOTI3NTk3OWNlMzI2M2EyNGI1Yzk0NWQ2ZDRjNjIwMmNkYWYyOTIuLjY0MDlh
NDE2OTI5MjliY2FkMDdkZDY2NWRiOGUzNzM3NWEyNWQ0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTIw
OCw3ICsxMjA4LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAxICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwCi0jZGVmaW5lIEhBVkVfVE9VQ0hfQkFSIDEKKyNkZWZpbmUgSEFW
RV9UT1VDSF9CQVIgMAogI2RlZmluZSBIQVZFX0FEVkFOQ0VEX1NQRUxMX0NIRUNLSU5HIDEKIAog
I2lmIGRlZmluZWQoX19MUDY0X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaAppbmRleCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJjZTZh
YTIzNzczLi5jMGUwZTU3ZGU5YjZiZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTYwLDEx
ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCi0gICAg
VGV4dEJyZWFrSXRlcmF0b3IqIHRha2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVC
cmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJhdG9yKiB0
YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9k
ZSwgYm9vbCBpc0NKSykKICAgICB7CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlvbmFsQnJl
YWtLZXl3b3JkID0gbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKIAot
ICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAgICAgICBV
QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fcG9vbFtp
XS5maXJzdCA9PSBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAgICAgICAg
ICAgICBpdGVyYXRvciA9IG1fcG9vbFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0KFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRvciogaXRl
cmF0b3IpCiAgICAgewogICAgICAgICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMo
aXRlcmF0b3IpKTsKICAgICAgICAgaWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkpIHsKQEAg
LTk3LDggKzk3LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBjYXBhY2l0eSA9IDQ7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywg
VGV4dEJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRC
cmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1f
cG9vbDsKKyAgICBIYXNoTWFwPFVCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRl
ZEl0ZXJhdG9yczsKIAogICAgIGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0
ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIzMTE3
ZmJiMTZkZjU5NTdhLi5kNzg1NjJlMmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhmZWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5j
bHVkZSAiU3RyaW5nVmlldy5oIgogCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pY29k
ZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9PSBtX3N0
cmluZ1ZpZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAgICAgICAg
cmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5kZXgpOwor
ICAgICAgICByZXR1cm4gdWJya19mb2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2luZGV4
KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwCmluZGV4IDA1YTUxOTU2MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkzMjcuLjFk
YTBhYjYxOGE1OTk5ODhkYmRkMDc2YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFtZXNwYWNl
IFdURiB7CiAKIC8vIEl0ZXJhdG9yIGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0QnJlYWtJ
dGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25z
dCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRpYyBVQnJl
YWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsKICAgICBV
RXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtf
b3Blbih0eXBlLCBsb2NhbGUsIDAsIDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yID0gdWJya19vcGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNv
dWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVu
U3RhdHVzKSwgb3BlblN0YXR1cyk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAjaWYgIVBM
QVRGT1JNKElPUykKIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0
b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJdGVyYXRv
ciogaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMpCiB7
CiAgICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1bGVz
KTsKICAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVkQ2hh
cmFjdGVycygpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJh
Y3RlcnMsIGxlbmd0aCwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAgIFVC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFj
dGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3Bl
biBhIGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9w
ZW5TdGF0dXMpOwogICAgIHJldHVybiBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcgQEAgc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3Qg
Y2hhciogYnJlYWtSdWxlcykKIAogLy8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBp
dGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHNldFRl
eHRGb3JJdGVyYXRvcihVQnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5n
KQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVy
IHRleHRMb2NhbDsKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBz
ZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcKICAg
ICAgICAgfQogCiAgICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9y
Kj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJrX3NldFVU
ZXh0KCZpdGVyYXRvciwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlM
VVJFKHNldFRleHRTdGF0dXMpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRl
eHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcK
ICAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUVycm9y
Q29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRleHQo
cmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVi
cmtfc2V0VGV4dCgmaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0
aCgpLCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1
cykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBA
IHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0
ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0KIAotc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIq
IHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGljIFVCcmVh
a0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRlcmF0b3Im
IGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwg
dW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkp
IHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsxMTMsNyBA
QCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRv
cihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVycm9yQ29k
ZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4
dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAmc2V0VGV4
dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKICAgICAg
ICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBz
ZXRUZXh0U3RhdHVzKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAgICBVRXJy
b3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRl
eHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZz
ZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRleHQsICZz
ZXRUZXh0U3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAl
ZCIsIHNldFRleHRTdGF0dXMpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNDYs
MjUgKzE0NiwyNSBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRl
eHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMgaXRlcmF0
b3JzCiAKLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0
cmluZykKK1VCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmlu
ZykKIHsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJh
dG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVCcmVha0l0
ZXJhdG9yKiBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJL
X1dPUkQpOwogICAgIGlmICghc3RhdGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29yZEJy
ZWFrSXRlcmF0b3IsIHN0cmluZyk7CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJy
ZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2VudGVuY2VC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0QnJlYWtJ
dGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9y
KFVCUktfU0VOVEVOQ0UpOworICAgIHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVu
Y2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwogICAg
IGlmICghc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJ
dGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1l
bnRJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9TKQogICAg
IC8vIFRoaXMgcnVsZSBzZXQgaXMgYmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1
bGVzIG9mIElDVSA1NwpAQCAtMjkxLDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1
cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIhIXNhZmVf
cmV2ZXJzZTsiCiAgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAgc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlh
bGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJhdG9y
KiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1
bGVzKGtSdWxlcyk7CiAjZWxzZSAvLyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRoZSBzcGVj
aWFsIFRoYWkgY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAgIHN0
YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGlu
aXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGljIFVCcmVh
a0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAg
ICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICszMDMsMTYg
QEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBz
dHJpbmcpCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1l
bnRJdGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5l
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRv
ciogYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJp
b3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykK
IHsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRvclBv
b2w6OnNoYXJlZFBvb2woKS50YWtlKGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRh
a2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9y
KCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CiB9
CiAKLXZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvcikKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvcikKIHsKICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAgLTc4MCw3
ICs3ODAsNyBAQCBib29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJ
dGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
IG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9y
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwg
Ym9vbCBpc0NKSykKIHsKICAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAgVUVycm9y
Q29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAgQEAgVGV4
dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrSXRlcik7
CisgICAgcmV0dXJuIHVicmtJdGVyOwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3Io
VGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRv
cihVQnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9yKiB1YnJr
SXRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7CisgICAg
VUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVicmtJdGVy
KTsKICAgICB1YnJrX2Nsb3NlKHVicmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxwdHI7CiB9
CiAKLXN0YXRpYyBzdGQ6OmF0b21pYzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IgPSBBVE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0aWMgc3Rk
OjphdG9taWM8VUJyZWFrSXRlcmF0b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
ID0gQVRPTUlDX1ZBUl9JTklUKG51bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRCcmVha0l0
ZXJhdG9yKiBnZXROb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRpYyBpbmxp
bmUgVUJyZWFrSXRlcmF0b3IqIGdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQog
ewogICAgIGlmIChhdXRvICpyZXMgPSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLmV4
Y2hhbmdlKG51bGxwdHIsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAgICByZXR1
cm4gcmVzOwogICAgIHJldHVybiBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKFRleHRCcmVha0l0ZXJhdG9yKiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lkIGNhY2hl
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2FjaGVNZSkK
IHsKICAgICBpZiAoYXV0byAqb2xkID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvci5l
eGNoYW5nZShjYWNoZU1lLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAgICAgdWJy
a19jbG9zZShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7CisgICAgICAg
IHVicmtfY2xvc2Uob2xkKTsKIH0KIAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKQEAgLTg0
OCw1MiArODQ4LDExIEBAIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpzd2FwKG1f
aXRlcmF0b3IsIG90aGVyLm1faXRlcmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGltcGxlbWVu
YXRpb24uCiAKLWludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Ip
Ci17Ci0gICAgcmV0dXJuIHVicmtfZmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRv
cio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJl
YWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVycHJl
dF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha1By
ZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19w
cmV2aW91cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0K
LQotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGlu
dCBwb3MpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xsb3dp
bmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVybiB1
YnJrX2ZvbGxvd2luZyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
LCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciogaXRl
cmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IsIGludCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19pc0Jv
dW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0
aW9uKTsKLX0KLQotYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yKQorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQogewot
ICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0gdWJya19n
ZXRSdWxlU3RhdHVzKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dP
UkRfTk9ORTsKIH0KIApAQCAtOTIwLDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1
c3RlcnMoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtR3JhcGhl
bWVDbHVzdGVycyA9IDA7Ci0gICAgd2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3IpICE9IFRl
eHRCcmVha0RvbmUpCisgICAgd2hpbGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJSS19ET05F
KQogICAgICAgICArK251bUdyYXBoZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdyYXBoZW1l
Q2x1c3RlcnM7CiB9CkBAIC05NDgsMTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJz
SW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFwaGVt
ZQogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0
ZXJzOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRleHRC
cmVha0RvbmUpCisgICAgICAgIGlmICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktfRE9ORSkK
ICAgICAgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVybiB0ZXh0
QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0ZXJhdG9y
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmgKaW5kZXggOGFmYjU1ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAwNmE5ZS4u
YmNmNDRjMDdhNGVjOTFiNTE0NjdjMjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSByZXR1cm5l
ZCBpdGVyYXRvciBpcyBnb29kIG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3
aXRoIHRoZSBleGNlcHRpb24gb2YgYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBlbnVtIGNs
YXNzIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0cmlj
dCB9OwpAQCAtMzUsMjcgKzMzLDE3IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
IHsgRGVmYXVsdCwgTG9vc2UsIE5vcm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBVSSBjb252
ZW50aW9ucy4gT25lIG5vdGFibGUgZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJlbnQK
IC8vIGZyb20gY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFyYWN0
ZXJzLCBzZWUgYnVnIDI0MzQyLgogLy8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBhbmQg
c2VsZWN0aW9uIG1hbmlwdWxhdGlvbnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRl
cmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9FWFBPUlRf
UFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVy
YXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogY3Vy
c29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFRl
eHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2ln
bmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pL
KTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0
QnJlYWtJdGVyYXRvciopOwotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRv
cihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29s
IGlzQ0pLKTsKLXZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciom
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3Io
U3RyaW5nVmlldyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRlbmNl
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0
QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0
ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50
IHRleHRCcmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFURSBp
bnQgdGV4dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9S
VF9QUklWQVRFIGludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQp
OwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRl
cmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJy
ZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4dEJy
ZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0
b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250
ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKik7
CitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9z
ZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIgaW50IFRl
eHRCcmVha0RvbmUgPSAtMTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRCcmVh
ayhVQnJlYWtJdGVyYXRvciopOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NKS0xvY2Fs
ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1YmxpYzoKIAog
ICAgIFVDaGFyIGxhc3RDaGFyYWN0ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09NUElMRV9B
U1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRl
cmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJh
dG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0dXJuIG1f
cHJpb3JDb250ZXh0WzFdOwogICAgIH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJhY3Rl
cigpIGNvbnN0CiAgICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RI
KG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9y
X2NvbnRleHRfbGVuZ3RoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlfTEVOR1RI
KG1fcHJpb3JDb250ZXh0KSA9PSAyLCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBwcmlvciBj
b250ZXh0IGxlbmd0aCIpOwogICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CiAgICAg
fQogCiAgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9M
YXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4
dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7CiAg
ICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0
ZVByaW9yQ29udGV4dChVQ2hhciBsYXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3Jf
dW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVu
ZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRb
MF0gPSBtX3ByaW9yQ29udGV4dFsxXTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBsYXN0
OwogICAgIH0KIAogICAgIHZvaWQgcmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAgICAgICAg
Q09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4
dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVC
cmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAg
bV9wcmlvckNvbnRleHRbMF0gPSAwOwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7CiAg
ICAgfQpAQCAtMTIwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlvckNvbnRl
eHRMZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoID0gMDsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9y
Q29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0
X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9y
Q29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBs
ZW5ndGgiKTsKICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAgICAgICAr
K3ByaW9yQ29udGV4dExlbmd0aDsKICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFswXSkK
QEAgLTEzMiw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRl
cmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlz
IChvciBoYXMgYmVlbikKICAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkg
c3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZwog
ICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorICAg
IFVCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0
eSk7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5n
dGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRM
ZW5ndGhdIDogMDsKQEAgLTE2NCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgcHJpb3JDb250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmluZ1ZpZXcg
bV9zdHJpbmdWaWV3OwogICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9p
dGVyYXRvciB7IG51bGxwdHIgfTsKICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRl
eHQgeyBudWxscHRyIH07CiAgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7IExpbmVC
cmVha0l0ZXJhdG9yTW9kZTo6RGVmYXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JD
b250ZXh0TGVuZ3RoIHsgMCB9OwpAQCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgogCiAgICAg
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yJiYpOwogCi0gICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVyYXRvcjsgfQorICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvcjsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07CiAKIC8v
IENvdW50cyB0aGUgbnVtYmVyIG9mIGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWly
IG9yIGEgc2VxdWVuY2UKQEAgLTIwNSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdW5z
aWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNpZ25l
ZAogdXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6OkxpbmVCcmVh
a0l0ZXJhdG9yTW9kZTsKIHVzaW5nIFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cjsKLXVzaW5nIFdURjo6VGV4dEJyZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0
b3I7Cit1c2luZyBXVEY6OmlzV29yZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmNwcAppbmRleCA5N2ZhNDVmMTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYzN2QwLi40
ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUyYTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0eWxl
SW5oZXJpdGVkRGF0YS5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0
YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0
LAogICAgIC8vIFdlIG5lZWQgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVhZCB0byBh
Y2NvdW50IGZvciBVVEYtMTYgc3Vycm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVuZ3RoTGlt
aXQgPCBjaGFyYWN0ZXJMZW5ndGgpIHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNoYXJhY3Rl
ckxlbmd0aExpbWl0ICsgMiA+IGNoYXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5ndGggOiBj
aGFyYWN0ZXJMZW5ndGhMaW1pdCArIDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVhayhpdCwg
Y2hhcmFjdGVyTGVuZ3RoTGltaXQpKQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3RoTGltaXQg
PSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICAgICAg
aWYgKCF1YnJrX2lzQm91bmRhcnkoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAgICAgICAg
ICAgIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxl
bmd0aExpbWl0KTsKICAgICB9CiAKICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDBlNWRj
ZDYzYWE5OTYxZjIyNzA1NzQzZTBmZTA0NTk1M2M3YjFhZjEuLjM3OWQ3ZDI5OWU3NjA2NzJjYjU2
YTkzYTY2ODQ1MDRjOTMwOTBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5jcHAKQEAgLTMzLDEyICszMywxMyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxl
UG9zaXRpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKKyNpbmNsdWRlIDx1bmljb2Rl
L3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
NiwxMSArNzcsMTEgQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRDaGVj
a2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogc3RhdGljIHZvaWQgZmlu
ZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQs
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogICAgIGlmICghaXRl
cmF0b3IpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKGludCB3b3JkU3RhcnQgPSB0ZXh0QnJl
YWtDdXJyZW50KGl0ZXJhdG9yKTsgd29yZFN0YXJ0ID49IDA7ICkgewotICAgICAgICBpbnQgd29y
ZEVuZCA9IHRleHRCcmVha05leHQoaXRlcmF0b3IpOworICAgIGZvciAoaW50IHdvcmRTdGFydCA9
IHVicmtfY3VycmVudChpdGVyYXRvcik7IHdvcmRTdGFydCA+PSAwOyApIHsKKyAgICAgICAgaW50
IHdvcmRFbmQgPSB1YnJrX25leHQoaXRlcmF0b3IpOwogICAgICAgICBpZiAod29yZEVuZCA8IDAp
CiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCmluZGV4IDgzY2FlNGMzODY2MmJhODM5ZmYxZjdhZTc4Y2UxMTZhNjZmMDczYmYuLjE1M2Y1
ZWE0ZjRhNzQ1NDAyNzVmYTVjYTRjZmZkYTY0ZWQxYmU4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTM3LDkgKzM3LDEwIEBACiAjaW5jbHVkZSAiUmVuZGVy
ZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmll
cy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUg
PHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjg1
LDcgKzI4Niw3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseU5leHRCb3goY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRC
b3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5s
aW5lVGV4dEJveCogdGV4dEJveCwKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRl
cmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQ
b3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKICAgICBpbnQmIHByZXZpb3Vz
Qm94TGVuZ3RoLCBib29sJiBwcmV2aW91c0JveEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hh
ciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJv
eGVzKQogewogICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jayA9IGZhbHNlOwpAQCAtMzA1
LDcgKzMwNiw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JG
b3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zCiAgICAgcmV0dXJuIHdvcmRCcmVh
a0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwogfQog
Ci1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0
Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElu
bGluZVRleHRCb3gqIHRleHRCb3gsCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0
ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCiAgICAgYm9vbCYgbmV4dEJv
eEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9n
aWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJveGVzKQogewogICAgIG5leHRCb3hJbkRpZmZl
cmVudEJsb2NrID0gZmFsc2U7CkBAIC0zMjMsMjAgKzMyNCwyMCBAQCBzdGF0aWMgVGV4dEJyZWFr
SXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlz
aWJsZVBvcwogICAgIHJldHVybiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZy5k
YXRhKCksIHN0cmluZy5zaXplKCkpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRP
ZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGlu
ZUJyZWFrKQorc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRPZldvcmQoVUJyZWFrSXRlcmF0b3Iq
IGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJvb2wgYm91
bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9u
KTsKKyAgICBib29sIGJvdW5kYXJ5ID0gaGFyZExpbmVCcmVhayA/IHRydWUgOiB1YnJrX2lzQm91
bmRhcnkoaXRlciwgcG9zaXRpb24pOwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHRleHRCcmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAg
dWJya19mb2xsb3dpbmcoaXRlciwgcG9zaXRpb24pOwogICAgIC8vIGlzV29yZFRleHRCcmVhayBy
ZXR1cm5zIHRydWUgYWZ0ZXIgbW92aW5nIGFjcm9zcyBhIHdvcmQgYW5kIGZhbHNlIGFmdGVyIG1v
dmluZyBhY3Jvc3MgYSBwdW5jdHVhdGlvbi9zcGFjZS4KICAgICByZXR1cm4gaXNXb3JkVGV4dEJy
ZWFrKGl0ZXIpOwogfQogCi1zdGF0aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQorc3RhdGlj
IGJvb2wgaXNsb2dpY2FsRW5kT2ZXb3JkKFVCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQgcG9zaXRp
b24sIGJvb2wgaGFyZExpbmVCcmVhaykKIHsKLSAgICBib29sIGJvdW5kYXJ5ID0gaXNUZXh0QnJl
YWsoaXRlciwgcG9zaXRpb24pOworICAgIGJvb2wgYm91bmRhcnkgPSB1YnJrX2lzQm91bmRhcnko
aXRlciwgcG9zaXRpb24pOwogICAgIHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3VuZGFyeSkg
JiYgaXNXb3JkVGV4dEJyZWFrKGl0ZXIpOwogfQogCkBAIC0zNTEsNyArMzUyLDcgQEAgc3RhdGlj
IFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zaXRpb24KICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7
CiAgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IG51bGxwdHI7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXIgPSBudWxscHRyOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0
cjsKIAogICAgIENhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMgbGVhZkJveGVzOwogICAg
IFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpAQCAtMzkwLDcgKzM5MSw3IEBAIHN0YXRpYyBW
aXNpYmxlUG9zaXRpb24gdmlzdWFsV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIGlmICghaXRlcikKICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIHRleHRCcmVha0ZpcnN0KGl0ZXIpOworICAgICAgICB1YnJrX2ZpcnN0KGl0ZXIp
OwogICAgICAgICBpbnQgb2Zmc2V0SW5JdGVyYXRvciA9IG9mZnNldEluQm94IC0gdGV4dEJveC5z
dGFydCgpICsgcHJldmlvdXNCb3hMZW5ndGg7CiAKICAgICAgICAgYm9vbCBpc1dvcmRCcmVhazsK
QEAgLTExMDksNyArMTExMCw3IEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiB1bnNpZ25lZCBz
dGFydFNlbnRlbmNlQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRhcnlT
ZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJikKIHsKICAgICAvLyBGSVhNRTogVGhlIGZv
bGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4KLSAg
ICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwg
dGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJ
dGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBzdGFy
dE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExMTksNyAr
MTEyMCw3IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBwb3NpdGlvbikKIAogdW5zaWduZWQgZW5kU2VudGVuY2VCb3VuZGFyeShTdHJpbmdW
aWV3IHRleHQsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJv
b2wmKQogewotICAgIHJldHVybiB0ZXh0QnJlYWtOZXh0KHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0
ZXh0KSk7CisgICAgcmV0dXJuIHVicmtfbmV4dChzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCkp
OwogfQogCiBWaXNpYmxlUG9zaXRpb24gZW5kT2ZTZW50ZW5jZShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uKQpAQCAtMTEzMiw3ICsxMTMzLDcgQEAgc3RhdGljIHVuc2lnbmVkIHByZXZp
b3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJv
dW4KIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGljYWwgdG8gc3RhcnRTZW50ZW5jZUJv
dW5kYXJ5LiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIG5vdCByaWdodC4KICAgICAvLyBGSVhNRTog
VGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhh
dC4KLSAgICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0
ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNl
QnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
bikKQEAgLTExNDQsNyArMTE0NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXh0U2VudGVuY2VQb3Np
dGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5CiB7CiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgaWRlbnRpY2FsIHRvIGVuZFNlbnRlbmNlQm91bmRhcnkuCiAgICAg
Ly8gVGhhdCBpc24ndCByaWdodC4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBtb3ZlIHRvIHRoZSBl
cXVpdmFsZW50IHBvc2l0aW9uIGluIHRoZSBmb2xsb3dpbmcgc2VudGVuY2UuCi0gICAgcmV0dXJu
IHRleHRCcmVha0ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOworICAg
IHJldHVybiB1YnJrX2ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOwog
fQogCiBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IDZjMWQ4YjNlZDQ1ZTI0NWE3YzdjNDY5NzAwMmJkMTg5NmM5M2Q3MzkuLmQ0M2Q0ZWY5
ZTAxMTkyNmQwZThhMGViZGVjODc1MmQzZWZmZGZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNiBAQAogI2luY2x1ZGUgIlN0eWxlUmVz
b2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBjNDFiYzhmZmVlZWUwODZjNDU2YzJh
MjA3OGU0ZmYwYzJmMDQ1YWU3Li4zNWE0MmIzZmRjNTdkYjQ0MmNhMTIxZDZlZmUyYjBmZmI5NDhi
NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAg
LTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRy
YXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNkNDdlNDYwMjUxZjMy
OWQyMjZiZTM0YWNkODBiZmEwNGQwZDk2NjUuLmY2YTZiYmM0NjRiOWFmYTM4ZDU3YjRkMWVjNDdj
ZjNjY2E5MjY2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTY5LDcgKzY5LDYg
QEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBlLmgi
CiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAi
VGltZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIlVSTElucHV0VHlwZS5oIgpAQCAtNzgsNiArNzcs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWI3ZDkwMWFmYzAyNWI1OWFm
OTFiYjdlZGFmNGM3YjMwM2NmMTAxOC4uZjM1ZmI0YzI2MTA3YzU1ZjMxMTIxZWU1ZWQyYTY5OWNi
ZjQ4M2E2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApA
QCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAppbmRleCBmNmYw
Mjc2ZDE4ZDg2ODA0MGRiZmI2MjU4ODJiNzA4YzMzNjU4ZTViLi45MDMyZGI2NzU3ZjVjZjJlMTM3
YTk0MGM5NmRjMGUwMTIxZWE0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5j
cHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXggYWZhOGUxMmQ4
MWJkODViZDk2M2Y4ZGNiMmM4YmVjNTQ3OTc0YzAxYi4uODVhM2FkMjlhZTUwOWI5MTA1ZWU1YTk0
NmYyNjJiZDBmYmMzOGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Rm9udENhc2NhZGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
I2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC00MywxOSArNDQsMTkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB0eXBlZGVmIHVuc2lnbmVkIFRydW5jYXRpb25GdW5jdGlvbihjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZlciwgYm9v
bCBzaG91bGRJbnNlcnRFbGxpcHNpcyk7CiAKLXN0YXRpYyBpbmxpbmUgaW50IHRleHRCcmVha0F0
T3JQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0LCBpbnQgb2Zmc2V0KQorc3RhdGljIGlu
bGluZSBpbnQgdGV4dEJyZWFrQXRPclByZWNlZGluZyhVQnJlYWtJdGVyYXRvciogaXQsIGludCBv
ZmZzZXQpCiB7Ci0gICAgaWYgKGlzVGV4dEJyZWFrKGl0LCBvZmZzZXQpKQorICAgIGlmICh1YnJr
X2lzQm91bmRhcnkoaXQsIG9mZnNldCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKLSAgICBp
bnQgcmVzdWx0ID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiBy
ZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSA/IDAgOiByZXN1bHQ7CisgICAgaW50IHJlc3VsdCA9IHVi
cmtfcHJlY2VkaW5nKGl0LCBvZmZzZXQpOworICAgIHJldHVybiByZXN1bHQgPT0gVUJSS19ET05F
ID8gMCA6IHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgYm91bmRlZFRleHRCcmVha0Zv
bGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCitz
dGF0aWMgaW5saW5lIGludCBib3VuZGVkVGV4dEJyZWFrRm9sbG93aW5nKFVCcmVha0l0ZXJhdG9y
KiBpdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gdGV4dEJy
ZWFrRm9sbG93aW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4dEJyZWFr
RG9uZSA/IGxlbmd0aCA6IHJlc3VsdDsKKyAgICBpbnQgcmVzdWx0ID0gdWJya19mb2xsb3dpbmco
aXQsIG9mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBVQlJLX0RPTkUgPyBsZW5ndGggOiBy
ZXN1bHQ7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNo
YXIqIGJ1ZmZlciwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcykKQEAgLTE0Niw3ICsxNDcsNyBA
QCBzdGF0aWMgdW5zaWduZWQgcmlnaHRDbGlwVG9Xb3JkQnVmZmVyKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBsZW5ndGgp
OwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0gICAgVGV4
dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmcp
LnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOwogICAg
IHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291
bnQpOwogICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAppbmRleCA4MGYxYzYzZDA5ZTQ5ZDZmMjg4OTllYWQ0MzFmODIzNjdhNTA0NGFhLi5jZmI1
NjcxZDcwMzU5YTg5MDgxMjE4YzM4YzRiODhiYjlkYjliMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcApAQCAtMzAsMTAgKzMwLDExIEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIK
KyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAj
aWYgUExBVEZPUk0oSU9TKQpAQCAtMTc2LDIxICsxNzcsMjEgQEAgdW5zaWduZWQgQ29tcGxleFRl
eHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1ZGVQYXJ0
aWFsR2wKICAgICAgICAgICAgICAgICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxpZ2F0dXJl
IGNhcmV0cyIuIFRoaXMgaXMgYXZhaWxhYmxlIGluIENvcmVUZXh0IHZpYSBDVEZvbnRHZXRMaWdh
dHVyZUNhcmV0UG9zaXRpb25zKCkuCiAgICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRJbmRleCA9
IGhpdEdseXBoU3RhcnQgKyAoaGl0R2x5cGhFbmQgLSBoaXRHbHlwaFN0YXJ0KSAqIChtX3J1bi5s
dHIoKSA/IHggLyBhZGp1c3RlZEFkdmFuY2UgOiAxIC0geCAvIGFkanVzdGVkQWR2YW5jZSk7CiAg
ICAgICAgICAgICAgICAgaW50IHN0cmluZ0xlbmd0aCA9IGNvbXBsZXhUZXh0UnVuLnN0cmluZ0xl
bmd0aCgpOwotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JQb3NpdGlv
bkl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KGNvbXBsZXhUZXh0
UnVuLmNoYXJhY3RlcnMoKSwgc3RyaW5nTGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgVUJyZWFr
SXRlcmF0b3IqIGN1cnNvclBvc2l0aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9y
KFN0cmluZ1ZpZXcoY29tcGxleFRleHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5ndGgpKTsK
ICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlclN0YXJ0OwotICAgICAgICAgICAgICAgIGlmIChp
c1RleHRCcmVhayhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCisgICAgICAgICAg
ICAgICAgaWYgKHVicmtfaXNCb3VuZGFyeShjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRl
eCkpCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4OwogICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSB0ZXh0
QnJlYWtQcmVjZWRpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoY2x1c3RlclN0YXJ0ID09IFRleHRCcmVha0RvbmUpCisgICAgICAg
ICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IHVicmtfcHJlY2VkaW5nKGN1cnNvclBvc2l0aW9u
SXRlcmF0b3IsIGhpdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJTdGFy
dCA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSAw
OwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZVBhcnRp
YWxHbHlwaHMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV4VGV4dFJ1bi5zdHJp
bmdMb2NhdGlvbigpICsgY2x1c3RlclN0YXJ0OwogCi0gICAgICAgICAgICAgICAgaW50IGNsdXN0
ZXJFbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5k
ZXgpOwotICAgICAgICAgICAgICAgIGlmIChjbHVzdGVyRW5kID09IFRleHRCcmVha0RvbmUpCisg
ICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJFbmQgPSB1YnJrX2ZvbGxvd2luZyhjdXJzb3JQb3Np
dGlvbkl0ZXJhdG9yLCBoaXRJbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJFbmQg
PT0gVUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyRW5kID0gc3RyaW5nTGVu
Z3RoOwogCiAgICAgICAgICAgICAgICAgQ0dGbG9hdCBjbHVzdGVyV2lkdGg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IDQ3ZDI0NDc1
YWMwOTg5NGUwMzg4NTFhNDhiYjljMDVlZGRlZjM3YzIuLmU3ODBmZjY4MjBmMDlhNzYxMzc3ZjEy
YTk0MzkxMjRhZDJhYWI0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEJvdW5kYXJpZXMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKIAorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC02MiwyNyArNjMsMjcgQEAgdW5zaWduZWQgc3RhcnRP
Zkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KFN0cmluZ1ZpZXcgdGV4dCkKIAogaW50IGZpbmROZXh0
V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJk
KQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQp
OworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogCiAg
ICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmco
aXQsIHBvc2l0aW9uKTsKLSAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFRleHRCcmVha0RvbmUp
IHsKKyAgICAgICAgcG9zaXRpb24gPSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOworICAg
ICAgICB3aGlsZSAocG9zaXRpb24gIT0gVUJSS19ET05FKSB7CiAgICAgICAgICAgICAvLyBXZSBz
dG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgYnJlYWsgaXMg
YWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3Np
dGlvbikgPCB0ZXh0Lmxlbmd0aCgpICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uIC0gMV0pKQog
ICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKIAotICAgICAgICAgICAgcG9zaXRpb24g
PSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9uID0gdGV4
dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlvbik7Ci0gICAgICAgIHdoaWxlIChwb3NpdGlvbiAh
PSBUZXh0QnJlYWtEb25lKSB7CisgICAgICAgIHBvc2l0aW9uID0gdWJya19wcmVjZWRpbmcoaXQs
IHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFVCUktfRE9ORSkgewogICAg
ICAgICAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZvbGxvd2lu
ZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHBvc2l0aW9uICYm
IHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOwogCi0gICAgICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha1ByZWNlZGluZyhpdCwgcG9z
aXRpb24pOworICAgICAgICAgICAgcG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhpdCwgcG9zaXRp
b24pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSwxOSArOTIsMTkgQEAg
aW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwg
Ym9vbCBmb3J3YXJkKQogCiB2b2lkIGZpbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBp
bnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludCogZW5kKQogewotICAgIFRleHRCcmVha0l0ZXJh
dG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJlYWtG
b2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJl
YWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9u
KTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsK
LSAgICAqc3RhcnQgPSB0ZXh0QnJlYWtQcmV2aW91cyhpdCk7CisgICAgICAgICplbmQgPSB1YnJr
X2xhc3QoaXQpOworICAgICpzdGFydCA9IHVicmtfcHJldmlvdXMoaXQpOwogfQogCiB2b2lkIGZp
bmRFbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCogZW5k
KQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQp
OwotICAgICplbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJl
YWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJy
a19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICpl
bmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsKKyAgICAgICAgKmVuZCA9IHVicmtfbGFzdChpdCk7CiB9
CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCmluZGV4
IDQxMWM4MDYxNGUyNjdjZmM1MTFmZmFkYjBhOTUzNjFjODFiNTQ5MzEuLjYzOGY3NmM0NmNjNmQ4
MTJlZTVlOTJjZTNhNTVmMzczZWY0MDhkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCkBAIC0y
NCw2ICsyNCw3IEBACiAKICNpbmNsdWRlIDxMYW5ndWFnZS5oPgogI2luY2x1ZGUgPGdsaWIuaD4K
KyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MSwxMyArOTIsMTMgQEAgdm9p
ZCBUZXh0Q2hlY2tlckVuY2hhbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZywgaW50JiBtaXNzcGUKICAgICBpZiAoIWhhc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRv
cihzdHJpbmcpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3Io
c3RyaW5nKTsKICAgICBpZiAoIWl0ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcg
dXRmOFN0cmluZyA9IHN0cmluZy51dGY4KCk7Ci0gICAgaW50IHN0YXJ0ID0gdGV4dEJyZWFrRmly
c3QoaXRlcik7Ci0gICAgZm9yIChpbnQgZW5kID0gdGV4dEJyZWFrTmV4dChpdGVyKTsgZW5kICE9
IFRleHRCcmVha0RvbmU7IGVuZCA9IHRleHRCcmVha05leHQoaXRlcikpIHsKKyAgICBpbnQgc3Rh
cnQgPSB1YnJrX2ZpcnN0KGl0ZXIpOworICAgIGZvciAoaW50IGVuZCA9IHVicmtfbmV4dChpdGVy
KTsgZW5kICE9IFVCUktfRE9ORTsgZW5kID0gdWJya19uZXh0KGl0ZXIpKSB7CiAgICAgICAgIGlm
IChpc1dvcmRUZXh0QnJlYWsoaXRlcikpIHsKICAgICAgICAgICAgIGNoZWNrU3BlbGxpbmdPZldv
cmQodXRmOFN0cmluZywgc3RhcnQsIGVuZCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3BlbGxp
bmdMZW5ndGgpOwogICAgICAgICAgICAgLy8gU3RvcCBjaGVja2luZyB0aGUgbmV4dCB3b3JkcyBJ
ZiB0aGUgY3VycmVudCB3b3JkIGlzIG1pc3NwZWxsZWQsIHRvIGRvIG5vdCBvdmVyd3JpdGUgaXRz
IG1pc3NwZWxsZWQgbG9jYXRpb24gYW5kIGxlbmd0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRlMThhNGM4
ZmY1NGNiZGUxYmQwYjJjZWY5MTJjZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMyOGQyY2Vm
ZTUzZDI1ZjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4dFdvcmRG
cm9tSW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkKICAg
ICAvLyBmb3IgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25lLCBhbmQg
aW4gdGhlIGZ1dHVyZSB3aWxsIGJlCiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUgaVBob25l
LXNwZWNpZmljIGJlaGF2aW9yIGZvciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGluZy4KICAg
ICBpbnQgcG9zID0gcG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0g
d29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5ID0g
d29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAgICAgIGlm
IChmb3J3YXJkKSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4
dEJyZWFrRm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVi
cmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0g
VUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwogICAg
ICAgICAgICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxlbmd0
aCgpICYmIChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAmJiBp
c1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJlY2VkaW5n
KGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5nKGJv
dW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQogICAg
ICAgICAgICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9zID4gMCAm
JiBpc1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRl
eHRbcG9zIC0gMV0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVh
a0xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4IDg4
ZDdlOTk1ODIwMzU4OTcwZjBlOGExZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJmNDljOTAx
MjFiMDgwMDZlMzE4MDk1NDU2ZmJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGlu
ZXMuaApAQCAtMTAyLDEwICsxMDIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQ
b3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKICAgICAg
ICAgICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewogICAgICAg
ICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFy
eSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAgICAgICAg
IGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBUZXh0
QnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlv
ckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciogYnJl
YWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9y
LCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlv
ckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9
PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3LDExICsx
NDcsMTEgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29z
ZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0QnJlYWsg
fHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBicmVhayBp
ZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMgbm8g
cHJpb3IgY29udGV4dC4KICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkg
ewotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6
eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAgICAg
VUJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQocHJp
b3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAxKTsK
LSAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhi
cmVha0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAgICAg
ICAgaW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBwcmlv
ckNvbnRleHRMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9
PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggYzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0OGVmMmUz
OGQwNS4uYTBlZjgyZWE5NzI5YTJkYjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBACiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2hh
cGVPdXRzaWRlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGEyNWU0
MGY4ZWM1NjY3MTVmMmFlYjBkYTQ0MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0ZDExYzUz
NGNlY2M2M2ExMzY0ODA2NmQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0
cmluZywgVUNoYXIgcHJldmlvdXMpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNbaV0g
PSBzdHJpbmdJbXBsW2kgLSAxXTsKICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogYm91
bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5j
aGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91bmRhcnkg
PSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFyYWN0
ZXJzKCksIGxlbmd0aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm47
CiAKQEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0cmlu
ZywgVUNoYXIgcHJldmlvdXMpCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwog
CiAgICAgaW50MzJfdCBlbmRPZldvcmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHRleHRC
cmVha0ZpcnN0KGJvdW5kYXJ5KTsKLSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVha05leHQo
Ym91bmRhcnkpOyBlbmRPZldvcmQgIT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQgPSBlbmRP
ZldvcmQsIGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAgaW50MzJf
dCBzdGFydE9mV29yZCA9IHVicmtfZmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5kT2ZXb3Jk
ID0gdWJya19uZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3RhcnRPZldv
cmQgPSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsKICAgICAg
ICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBzdHJp
bmcKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAtIDFd
ID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRoUHJl
dmlvdXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29yZCAr
IDE7IGkgPCBlbmRPZldvcmQ7IGkrKykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50IFJlbmRl
clRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICByZXR1cm4g
Y3VycmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5pbXBsKCk7
Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRv
cihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgp
KSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRv
cihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0aCgp
KSk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCi0g
ICAgbG9uZyByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJlbnQpOwot
ICAgIGlmIChyZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9IHVicmtf
cHJlY2VkaW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVCUktfRE9O
RSkKICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsxNTIzLDcg
QEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQg
Y3VycmVudCkgY29uc3QKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgU3RyaW5n
SW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2h5
IHRoaXMgaGFzIHNvIG11Y2ggaGFuZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5nIFRleHRC
cmVha0l0ZXJhdG9yLgorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBzbyBtdWNo
IGhhbmRyb2xsZWQgY29kZSByYXRoZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4KICAgICAv
LyBBbHNvIHVuY2xlYXIgd2h5IHRoaXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5jZUJ5Q29t
YmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlz
IGZhbmNpZXIgY2FzZSBjb3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBubwpAQCAt
MTY0OSwxMiArMTY0OSwxMiBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVu
dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5nSW1wbCog
dGV4dEltcGwgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVy
czE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFjdGVy
czE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAg
IHJldHVybiBjdXJyZW50ICsgMTsKIAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFrRm9sbG93
aW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVha0RvbmUp
CisgICAgbG9uZyByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVudCk7Cisg
ICAgaWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQgKyAx
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaAppbmRl
eCBhZWU3NWE0NmZhZjA0MTAyMzM0MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1MzZlNTJi
YzVkODQ3ZTcxMTZjNmQyOTUwZmVmMzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRv
ci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1ZGUg
IlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oCmluZGV4IGJmZDk4NjdhNDVlMWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2IuLjBjOWQ5
ZjhjNzg0ZmJhMmZkZTdmNWYyZjMwYmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUg
IkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNj
L1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBw
b3J0Lm1tCmluZGV4IDg5ZWIyYTMyOWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0OTUuLmM0
ZWZjMmU0ZGUxMGQwMTU3N2Q2NTQ1ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQ
SS5oPgotI2ltcG9ydCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2ltcG9ydCA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKaW5kZXggOGUyOTQyNTkzNGU0YmJmYjc4ZWQ4
ZmVjOGI4NzY5NmUzNzUxNmIzYi4uM2RmODM2NGQ1NGZhOWE4MjJhOWMzNGZjNDQ2ODMwYWIxZDgw
YmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tl
ckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVm
bC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpjbG9zZVNwZWxsRG9j
dW1lbnRXaXRoVGFnKGludDY0X3QgdGFnKQogc3RhdGljIHVuc2lnbmVkIG5leHRXb3JkT2Zmc2V0
KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAgICAvLyBGSVhN
RTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBjb3VsZCBiZSBw
YXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFrKCkgbGVhdmVz
IHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQK
KyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVyYXRvciBwb2lu
dGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAgICAgICAgb3Ig
YWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAgICAgLy8gICAg
ICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0IHByb3Blcmx5
IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0IHJlc2V0dGlu
ZyB0aGUgaXRlcmF0b3IuCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHVuc2lnbmVkIG5leHRX
b3JkT2Zmc2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKICAgICAg
ICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7CiAKICAgICB1bnNpZ25lZCB3b3JkT2Zmc2V0ID0gY3Vy
cmVudE9mZnNldDsKLSAgICB3aGlsZSAod29yZE9mZnNldCA8IHRleHQubGVuZ3RoKCkgJiYgaXNU
ZXh0QnJlYWsodGV4dEl0ZXJhdG9yLCB3b3JkT2Zmc2V0KSkKKyAgICB3aGlsZSAod29yZE9mZnNl
dCA8IHRleHQubGVuZ3RoKCkgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgd29yZE9m
ZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0cmVhdCB0aGUg
d29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMTc1LDcgKzE3NSw3IEBAIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChp
bnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgICAgIC8vIGludm9sdmUgdGhlIGNsaWVudCB0byBjaGVj
ayBzcGVsbGluZyBmb3IgdGhlbS4KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbmV4dFdvcmRP
ZmZzZXQodGV4dCwgMCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aFN0cmlwID0gdGV4dC5sZW5n
dGgoKTsKLSAgICAgICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiBpc1RleHRCcmVhayh0ZXh0
SXRlcmF0b3IsIGxlbmd0aFN0cmlwIC0gMSkpCisgICAgICAgIHdoaWxlIChsZW5ndGhTdHJpcCA+
IDAgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgbGVuZ3RoU3RyaXAgLSAxKSkKICAg
ICAgICAgICAgIC0tbGVuZ3RoU3RyaXA7CiAKICAgICAgICAgd2hpbGUgKG9mZnNldCA8IGxlbmd0
aFN0cmlwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1RleHRD
aGVja2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJH
dGsuY3BwCmluZGV4IGM2ZGNmMTM4NWUxNzQ5YzY0Nzk3NDkwM2Y2ZTgyMjg3MDdiNmU5MDYuLjI1
MTNjYmQ2OTFjYmI0NTI3NjY4ZDg2YjU0NTMwMjVhZWNlNjczZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckVuY2hhbnQuaD4KKyNpbmNs
dWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC0yMjYsMTYgKzIyNywx
NiBAQCB2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRy
PFRleHRDaGVja2VyQ29tcGxldGlvbj4gY29tcAogc3RhdGljIHVuc2lnbmVkIG5leHRXb3JkT2Zm
c2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAgICAvLyBG
SVhNRTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBjb3VsZCBi
ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFrKCkgbGVh
dmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24g
YXQKKyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVyYXRvciBw
b2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAgICAgICAg
b3IgYWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAgICAgLy8g
ICAgICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0IHByb3Bl
cmx5IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0IHJlc2V0
dGluZyB0aGUgaXRlcmF0b3IuCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRleHRJdGVyYXRvciA9
IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiB0ZXh0SXRlcmF0
b3IgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKICAgICBpZiAoIXRleHRJdGVyYXRvcikKICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7CiAKICAgICB1bnNpZ25lZCB3b3JkT2Zmc2V0ID0g
Y3VycmVudE9mZnNldDsKLSAgICB3aGlsZSAod29yZE9mZnNldCA8IHRleHQubGVuZ3RoKCkgJiYg
aXNUZXh0QnJlYWsodGV4dEl0ZXJhdG9yLCB3b3JkT2Zmc2V0KSkKKyAgICB3aGlsZSAod29yZE9m
ZnNldCA8IHRleHQubGVuZ3RoKCkgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgd29y
ZE9mZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0cmVhdCB0
aGUgd29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMjU4LDcgKzI1OSw3IEBAIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFw
aChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgaWYgKCEoY2hlY2tpbmdUeXBlcyAmIFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZykpCiAgICAgICAgIHJldHVybiBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PigpOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRleHRJdGVyYXRvciA9IHdvcmRCcmVh
a0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiB0ZXh0SXRlcmF0b3IgPSB3b3Jk
QnJlYWtJdGVyYXRvcih0ZXh0KTsKICAgICBpZiAoIXRleHRJdGVyYXRvcikKICAgICAgICAgcmV0
dXJuIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCk7CiAKQEAgLTI2Niw3ICsyNjcsNyBAQCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoaW50NjRfdCBzcGVsbERvY3VtZQogICAgIC8vIGludm9sdmUgdGhlIGNsaWVudCB0byBjaGVj
ayBzcGVsbGluZyBmb3IgdGhlbS4KICAgICB1bnNpZ25lZCBvZmZzZXQgPSBuZXh0V29yZE9mZnNl
dCh0ZXh0LCAwKTsKICAgICB1bnNpZ25lZCBsZW5ndGhTdHJpcCA9IHRleHQubGVuZ3RoKCk7Ci0g
ICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiBpc1RleHRCcmVhayh0ZXh0SXRlcmF0b3IsIGxl
bmd0aFN0cmlwIC0gMSkpCisgICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiB1YnJrX2lzQm91
bmRhcnkodGV4dEl0ZXJhdG9yLCBsZW5ndGhTdHJpcCAtIDEpKQogICAgICAgICAtLWxlbmd0aFN0
cmlwOwogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcGFyYWdyYXBoQ2hlY2tpbmdS
ZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297296</attachid>
            <date>2016-12-15 20:41:45 -0800</date>
            <delta_ts>2016-12-15 20:42:46 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-165931-20161215204051.patch</filename>
            <type>text/plain</type>
            <size>61000</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwMTU2NzdjMGIwYTJmNWFiMTM0YzUw
MjQ4NDI4ODRkMjg1MWQ3NTEuLjg2ODQ5OWVhZWRmYTNkM2YyNGViN2E2MTY1YjRkYWRjYWEwMWRl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNjUgQEAKIDIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzZW5zZW4uCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDoKKyAgICAgICAgKFdU
Rjo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjp0YWtlKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFr
SXRlcmF0b3JQb29sOjpwdXQpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgor
ICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1w
bDo6Y29tcHV0ZUluZGV4RW5kKToKKyAgICAgICAgKiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OmluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyk6CisgICAgICAgIChXVEY6OnNldFRleHRGb3JJ
dGVyYXRvcik6CisgICAgICAgIChXVEY6OnNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcik6
CisgICAgICAgIChXVEY6OndvcmRCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6c2VudGVu
Y2VCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y3Vyc29yTW92ZW1lbnRJdGVyYXRvcik6
CisgICAgICAgIChXVEY6OmFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OnJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6Om9wZW5MaW5lQnJlYWtJ
dGVyYXRvcik6CisgICAgICAgIChXVEY6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAg
ICAoV1RGOjpnZXROb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdU
Rjo6Y2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6
aXNXb3JkVGV4dEJyZWFrKToKKyAgICAgICAgKFdURjo6bnVtR3JhcGhlbWVDbHVzdGVycyk6Cisg
ICAgICAgIChXVEY6Om51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMpOgorICAgICAgICAo
V1RGOjp0ZXh0QnJlYWtGaXJzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnRleHRCcmVha0xh
c3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtOZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6dGV4dEJyZWFrUHJldmlvdXMpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp0
ZXh0QnJlYWtQcmVjZWRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtGb2xs
b3dpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtDdXJyZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6aXNUZXh0QnJlYWspOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6bGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVyYXRv
cjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjpzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6OnVwZGF0ZVByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFr
SXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJl
YWtJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcjo6b3BlcmF0b3IgVUJyZWFrSXRlcmF0b3IqKToKKyAgICAgICAgKFdURjo6Tm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6b3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKTog
RGVsZXRlZC4KKworMjAxNi0xMi0xNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCiAgICAgICAgIFNvcnQgWGNvZGUgcHJvamVjdCBmaWxlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTM3CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBkY2RmZjY2NzRiOGI4M2E5NDM3M2YzN2UwMDFjMzI2ZTdhMzg1YWVjLi5iOWUwMDJiMzM2NTUz
ZTRiMWUzNmIwNzU2ZTllNmQ0ZjU1YTY1NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAK
KzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3RpbmcgVUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1
bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eCBDaHJpc2Vuc2VuLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnBhcnNlckFwcGVuZERhdGEpOgorICAgICAg
ICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRNaXNzcGVsbGluZ3MpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjppc0xvZ2ljYWxTdGFydE9mV29yZCk6CisgICAgICAgIChXZWJD
b3JlOjppc2xvZ2ljYWxFbmRPZldvcmQpOgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsV29yZFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0U2VudGVuY2VCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjplbmRTZW50ZW5jZUJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnBy
ZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRT
ZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRC
cmVha0F0T3JQcmVjZWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Ym91bmRlZFRleHRCcmVha0Zv
bGxvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpyaWdodENsaXBUb1dvcmRCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRW5kV29yZEJvdW5kYXJ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisgICAgICAgICogcmVuZGVyaW5nL0Jy
ZWFrTGluZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxv
b3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ2FwaXRhbGl6ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6cHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om5leHRPZmZzZXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oOgorCiAyMDE2LTEyLTE1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIEhUTUwgdmFsaWRhdGlv
biBidWJibGUncyBzdGF0ZSBpcyB1cGRhdGVkIGFmdGVyIGxheW91dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmlu
ZGV4IDU2MzE4MzMyYjI0YjYzYjhmMDdmMDlkNTg4YWRmNmY5MDZiYTg2N2UuLjZiYjdmYTkxN2Rm
YTU1ZjZhNmM1OWIyZTE2MjIwOGI0ZDE3ZTFlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
aW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxNi0xMi0xNSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIFN0b3AgcmVpbnRlcnByZXRfY2FzdGluZyBVQnJlYWtJdGVyYXRvcnMg
dG8gdGhlIHVuZGVmaW5lZCB0eXBlIFRleHRCcmVha0l0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5MzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzZW5zZW4uCisKKyAgICAgICAgKiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5t
bToKKwogMjAxNi0xMS0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gRHVtcFJlbmRlclRyZWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCmluZGV4IDZmOTI3NTk3OWNlMzI2M2EyNGI1Yzk0NWQ2ZDRjNjIwMmNkYWYyOTIuLjY0
MDlhNDE2OTI5MjliY2FkMDdkZDY2NWRiOGUzNzM3NWEyNWQ0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAt
MTIwOCw3ICsxMjA4LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAxICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMjAwCi0jZGVmaW5lIEhBVkVfVE9VQ0hfQkFSIDEKKyNkZWZpbmUg
SEFWRV9UT1VDSF9CQVIgMAogI2RlZmluZSBIQVZFX0FEVkFOQ0VEX1NQRUxMX0NIRUNLSU5HIDEK
IAogI2lmIGRlZmluZWQoX19MUDY0X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuaAppbmRleCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUwYmJj
ZTZhYTIzNzczLi5jMGUwZTU3ZGU5YjZiZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTYw
LDExICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQogCi0g
ICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRha2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExp
bmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJhdG9y
KiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUg
bW9kZSwgYm9vbCBpc0NKSykKICAgICB7CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlvbmFs
QnJlYWtLZXl3b3JkID0gbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsK
IAotICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAgICAg
ICBVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fcG9v
bFtpXS5maXJzdCA9PSBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAgICAg
ICAgICAgICBpdGVyYXRvciA9IG1fcG9vbFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0KFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRvciog
aXRlcmF0b3IpCiAgICAgewogICAgICAgICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29udGFp
bnMoaXRlcmF0b3IpKTsKICAgICAgICAgaWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkpIHsK
QEAgLTk3LDggKzk3LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmlu
ZywgVGV4dEJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFwPFRl
eHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAgICBW
ZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+
IG1fcG9vbDsKKyAgICBIYXNoTWFwPFVCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3Zl
bmRlZEl0ZXJhdG9yczsKIAogICAgIGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVh
a0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIz
MTE3ZmJiMTZkZjU5NTdhLi5kNzg1NjJlMmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhmZWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAj
aW5jbHVkZSAiU3RyaW5nVmlldy5oIgogCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5p
Y29kZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9PSBt
X3N0cmluZ1ZpZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAgICAg
ICAgcmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5kZXgp
OworICAgICAgICByZXR1cm4gdWJya19mb2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2lu
ZGV4KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRl
cmF0b3IuY3BwCmluZGV4IDA1YTUxOTU2MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkzMjcu
LjFkYTBhYjYxOGE1OTk5ODhkYmRkMDc2YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFtZXNw
YWNlIFdURiB7CiAKIC8vIEl0ZXJhdG9yIGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRpYyBV
QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBl
LCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsKICAg
ICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVi
cmtfb3Blbih0eXBlLCBsb2NhbGUsIDAsIDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yID0gdWJya19vcGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0
dXMpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNV
IGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShv
cGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAjaWYg
IVBMQVRGT1JNKElPUykKIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRl
cmF0b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJdGVy
YXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMp
CiB7CiAgICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVuU3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1
bGVzKTsKICAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVk
Q2hhcmFjdGVycygpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENo
YXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOworICAg
IFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hh
cmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qg
b3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyks
IG9wZW5TdGF0dXMpOwogICAgIHJldHVybiBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcgQEAg
c3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29u
c3QgY2hhciogYnJlYWtSdWxlcykKIAogLy8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9y
JiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHNl
dFRleHRGb3JJdGVyYXRvcihVQnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVm
ZmVyIHRleHRMb2NhbDsKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9y
KiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmcK
ICAgICAgICAgfQogCiAgICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19F
UlJPUjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJh
dG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJrX3Nl
dFVUZXh0KCZpdGVyYXRvciwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAoVV9G
QUlMVVJFKHNldFRleHRTdGF0dXMpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0
VVRleHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJh
dG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJp
bmcKICAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUVy
cm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRl
eHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5j
aGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAg
IHVicmtfc2V0VGV4dCgmaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0
YXR1cykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3
IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVh
a0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0KIAot
c3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3Io
VGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNo
YXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGljIFVC
cmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRlcmF0
b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4
dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsxMTMs
NyBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVy
YXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVycm9y
Q29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0
KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0
VGV4dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAmc2V0
VGV4dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKICAg
ICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQi
LCBzZXRUZXh0U3RhdHVzKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMxLDcg
KzEzMSw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZv
ckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAgICBV
RXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0
VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQs
ICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRleHQs
ICZzZXRUZXh0U3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkg
ewogICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1
cyAlZCIsIHNldFRleHRTdGF0dXMpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
NDYsMjUgKzE0NiwyNSBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2Fy
ZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMgaXRl
cmF0b3JzCiAKLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKK1VCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0
cmluZykKIHsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0
ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVCcmVh
a0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihV
QlJLX1dPUkQpOwogICAgIGlmICghc3RhdGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29y
ZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5j
ZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2VudGVu
Y2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfU0VOVEVOQ0UpOworICAgIHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGljU2Vu
dGVuY2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwog
ICAgIGlmICghc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJl
YWtJdGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVt
ZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29yTW92
ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMgYmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9y
IHJ1bGVzIG9mIElDVSA1NwpAQCAtMjkxLDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIhIXNh
ZmVfcmV2ZXJzZTsiCiAgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAgc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5p
dGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0ZXJh
dG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0
aFJ1bGVzKGtSdWxlcyk7CiAjZWxzZSAvLyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRoZSBz
cGVjaWFsIFRoYWkgY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAg
IHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9
IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGljIFVC
cmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQog
CiAgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICszMDMs
MTYgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpbmcpCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92
ZW1lbnRJdGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVM
aW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExl
bmd0aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVy
YXRvciogYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQg
cHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NK
SykKIHsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRv
clBvb2w6OnNoYXJlZFBvb2woKS50YWtlKGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVCcmVh
a0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgp
LnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJh
dG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7
CiB9CiAKLXZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvcikKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvcikKIHsKICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAgLTc4
MCw3ICs3ODAsNyBAQCBib29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJl
YWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJh
dG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9k
ZSwgYm9vbCBpc0NKSykKIHsKICAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAgVUVy
cm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAgQEAg
VGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZSwgTGluZUJyZWFrSXQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrSXRl
cik7CisgICAgcmV0dXJuIHVicmtJdGVyOwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0
b3IoVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJdGVy
YXRvcihVQnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9yKiB1
YnJrSXRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7Cisg
ICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVicmtJ
dGVyKTsKICAgICB1YnJrX2Nsb3NlKHVicmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxwdHI7
CiB9CiAKLXN0YXRpYyBzdGQ6OmF0b21pYzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3IgPSBBVE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0aWMg
c3RkOjphdG9taWM8VUJyZWFrSXRlcmF0b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yID0gQVRPTUlDX1ZBUl9JTklUKG51bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRCcmVh
a0l0ZXJhdG9yKiBnZXROb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRpYyBp
bmxpbmUgVUJyZWFrSXRlcmF0b3IqIGdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Io
KQogewogICAgIGlmIChhdXRvICpyZXMgPSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
LmV4Y2hhbmdlKG51bGxwdHIsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAgICBy
ZXR1cm4gcmVzOwogICAgIHJldHVybiBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIp
OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lkIGNh
Y2hlTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2FjaGVN
ZSkKIHsKICAgICBpZiAoYXV0byAqb2xkID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
ci5leGNoYW5nZShjYWNoZU1lLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAgICAg
dWJya19jbG9zZShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7CisgICAg
ICAgIHVicmtfY2xvc2Uob2xkKTsKIH0KIAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKQEAg
LTg0OCw1MiArODQ4LDExIEBAIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpzd2Fw
KG1faXRlcmF0b3IsIG90aGVyLm1faXRlcmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGltcGxl
bWVuYXRpb24uCiAKLWludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfZmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVy
YXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0
QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVy
cHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVh
a1ByZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJy
a19wcmV2aW91cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsK
LX0KLQotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Is
IGludCBwb3MpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xs
b3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVy
biB1YnJrX2ZvbGxvd2luZyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0
b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciog
aXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVC
cmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJl
YWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19p
c0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBv
c2l0aW9uKTsKLX0KLQotYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yKQorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQog
ewotICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0gdWJy
a19nZXRSdWxlU3RhdHVzKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJL
X1dPUkRfTk9ORTsKIH0KIApAQCAtOTIwLDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBoZW1l
Q2x1c3RlcnMoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtR3Jh
cGhlbWVDbHVzdGVycyA9IDA7Ci0gICAgd2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3IpICE9
IFRleHRCcmVha0RvbmUpCisgICAgd2hpbGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJSS19E
T05FKQogICAgICAgICArK251bUdyYXBoZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdyYXBo
ZW1lQ2x1c3RlcnM7CiB9CkBAIC05NDgsMTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFyYWN0
ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1HcmFw
aGVtZQogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNs
dXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09IFRl
eHRCcmVha0RvbmUpCisgICAgICAgIGlmICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktfRE9O
RSkKICAgICAgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVybiB0
ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0ZXJh
dG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmgKaW5kZXggOGFmYjU1ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAwNmE5
ZS4uYmNmNDRjMDdhNGVjOTFiNTE0NjdjMjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAotY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSByZXR1
cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9y
LCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBlbnVt
IGNsYXNzIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWwsIFN0
cmljdCB9OwpAQCAtMzUsMjcgKzMzLDE3IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIHsgRGVmYXVsdCwgTG9vc2UsIE5vcm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBVSSBj
b252ZW50aW9ucy4gT25lIG5vdGFibGUgZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJl
bnQKIC8vIGZyb20gY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFy
YWN0ZXJzLCBzZWUgYnVnIDI0MzQyLgogLy8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBh
bmQgc2VsZWN0aW9uIG1hbmlwdWxhdGlvbnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFr
SXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9FWFBP
UlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciog
Y3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRF
IFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVu
c2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlz
Q0pLKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihU
ZXh0QnJlYWtJdGVyYXRvciopOwotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVy
YXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBi
b29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRv
ciomKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0
b3IoU3RyaW5nVmlldyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNlbnRl
bmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0
ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRFIGlu
dCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
aW50IHRleHRCcmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgdGV4dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRf
UFJJVkFURSBpbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VY
UE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBp
bnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFr
SXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWsoVGV4
dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3JkVGV4
dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRl
cmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JD
b250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9y
Kik7CitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBj
bG9zZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIgaW50
IFRleHRCcmVha0RvbmUgPSAtMTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRC
cmVhayhVQnJlYWtJdGVyYXRvciopOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NKS0xv
Y2FsZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1YmxpYzoK
IAogICAgIFVDaGFyIGxhc3RDaGFyYWN0ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09NUElM
RV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFr
SXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0
ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0dXJu
IG1fcHJpb3JDb250ZXh0WzFdOwogICAgIH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJh
Y3RlcigpIGNvbnN0CiAgICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVO
R1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3By
aW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlfTEVO
R1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBwcmlv
ciBjb250ZXh0IGxlbmd0aCIpOwogICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25k
VG9MYXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSCht
X3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9j
b250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSCht
X3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29u
dGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7
CiAgICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lkIHVw
ZGF0ZVByaW9yQ29udGV4dChVQ2hhciBsYXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NF
UlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0
b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9y
IHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRl
eHRbMF0gPSBtX3ByaW9yQ29udGV4dFsxXTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBs
YXN0OwogICAgIH0KIAogICAgIHZvaWQgcmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAgICAg
ICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwg
VGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwg
IlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAg
ICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7
CiAgICAgfQpAQCAtMTIwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlvckNv
bnRleHRMZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoID0gMDsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4
dCBsZW5ndGgiKTsKICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAgICAg
ICArK3ByaW9yQ29udGV4dExlbmd0aDsKICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFsw
XSkKQEAgLTEzMiw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJlYWsg
aXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9y
IGlzIChvciBoYXMgYmVlbikKICAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3Vz
bHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2lu
ZwogICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5Lgot
ICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQor
ICAgIFVCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBh
Y2l0eSk7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRM
ZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRl
eHRMZW5ndGhdIDogMDsKQEAgLTE2NCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgcHJpb3JDb250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmluZ1Zp
ZXcgbV9zdHJpbmdWaWV3OwogICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJl
YWtJdGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRvciog
bV9pdGVyYXRvciB7IG51bGxwdHIgfTsKICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNv
bnRleHQgeyBudWxscHRyIH07CiAgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7IExp
bmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVmYXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJp
b3JDb250ZXh0TGVuZ3RoIHsgMCB9OwpAQCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgogCiAg
ICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yJiYpOwogCi0gICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVyYXRvcjsgfQorICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigpIGNv
bnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVy
YXRvciogbV9pdGVyYXRvcjsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07CiAK
IC8vIENvdW50cyB0aGUgbnVtYmVyIG9mIGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBw
YWlyIG9yIGEgc2VxdWVuY2UKQEAgLTIwNSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUg
dW5zaWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1bnNp
Z25lZAogdXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6OkxpbmVC
cmVha0l0ZXJhdG9yTW9kZTsKIHVzaW5nIFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcjsKLXVzaW5nIFdURjo6VGV4dEJyZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFrSXRl
cmF0b3I7Cit1c2luZyBXVEY6OmlzV29yZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcAppbmRleCA5N2ZhNDVmMTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYzN2Qw
Li40ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUyYTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0
eWxlSW5oZXJpdGVkRGF0YS5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFjdGVy
RGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zm
c2V0LAogICAgIC8vIFdlIG5lZWQgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVhZCB0
byBhY2NvdW50IGZvciBVVEYtMTYgc3Vycm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVuZ3Ro
TGltaXQgPCBjaGFyYWN0ZXJMZW5ndGgpIHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNoYXJh
Y3Rlckxlbmd0aExpbWl0ICsgMiA+IGNoYXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5ndGgg
OiBjaGFyYWN0ZXJMZW5ndGhMaW1pdCArIDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVhayhp
dCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQpKQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3RoTGlt
aXQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAgICAg
ICAgaWYgKCF1YnJrX2lzQm91bmRhcnkoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAgICAg
ICAgICAgIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJhY3Rl
ckxlbmd0aExpbWl0KTsKICAgICB9CiAKICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDBl
NWRjZDYzYWE5OTYxZjIyNzA1NzQzZTBmZTA0NTk1M2M3YjFhZjEuLjM3OWQ3ZDI5OWU3NjA2NzJj
YjU2YTkzYTY2ODQ1MDRjOTMwOTBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzLDEyICszMywxMyBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENo
ZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNp
YmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKKyNpbmNsdWRlIDx1bmlj
b2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC03NiwxMSArNzcsMTEgQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRleHRD
aGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogc3RhdGljIHZvaWQg
ZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRl
eHQsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVh
a0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogICAgIGlmICgh
aXRlcmF0b3IpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKGludCB3b3JkU3RhcnQgPSB0ZXh0
QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsgd29yZFN0YXJ0ID49IDA7ICkgewotICAgICAgICBpbnQg
d29yZEVuZCA9IHRleHRCcmVha05leHQoaXRlcmF0b3IpOworICAgIGZvciAoaW50IHdvcmRTdGFy
dCA9IHVicmtfY3VycmVudChpdGVyYXRvcik7IHdvcmRTdGFydCA+PSAwOyApIHsKKyAgICAgICAg
aW50IHdvcmRFbmQgPSB1YnJrX25leHQoaXRlcmF0b3IpOwogICAgICAgICBpZiAod29yZEVuZCA8
IDApCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5p
dHMuY3BwCmluZGV4IDgzY2FlNGMzODY2MmJhODM5ZmYxZjdhZTc4Y2UxMTZhNjZmMDczYmYuLjE1
M2Y1ZWE0ZjRhNzQ1NDAyNzVmYTVjYTRjZmZkYTY0ZWQxYmU4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTM3LDkgKzM3LDEwIEBACiAjaW5jbHVkZSAiUmVu
ZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRh
cmllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgorI2luY2x1
ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
Lmg+CiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
Mjg1LDcgKzI4Niw3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseU5leHRCb3go
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZz
ZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3Qg
SW5saW5lVGV4dEJveCogdGV4dEJveCwKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFr
SXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKICAgICBpbnQmIHByZXZp
b3VzQm94TGVuZ3RoLCBib29sJiBwcmV2aW91c0JveEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxV
Q2hhciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVh
ZkJveGVzKQogewogICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jayA9IGZhbHNlOwpAQCAt
MzA1LDcgKzMwNiw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0
b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zCiAgICAgcmV0dXJuIHdvcmRC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSkpOwog
fQogCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zm
c2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0
IElubGluZVRleHRCb3gqIHRleHRCb3gsCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRCcmVh
a0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCiAgICAgYm9vbCYgbmV4
dEJveEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2FjaGVk
TG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJveGVzKQogewogICAgIG5leHRCb3hJbkRp
ZmZlcmVudEJsb2NrID0gZmFsc2U7CkBAIC0zMjMsMjAgKzMyNCwyMCBAQCBzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3Qg
VmlzaWJsZVBvcwogICAgIHJldHVybiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmlu
Zy5kYXRhKCksIHN0cmluZy5zaXplKCkpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb2dpY2FsU3Rh
cnRPZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJk
TGluZUJyZWFrKQorc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRPZldvcmQoVUJyZWFrSXRlcmF0
b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJvb2wg
Ym91bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0
aW9uKTsKKyAgICBib29sIGJvdW5kYXJ5ID0gaGFyZExpbmVCcmVhayA/IHRydWUgOiB1YnJrX2lz
Qm91bmRhcnkoaXRlciwgcG9zaXRpb24pOwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHRleHRCcmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7Cisg
ICAgdWJya19mb2xsb3dpbmcoaXRlciwgcG9zaXRpb24pOwogICAgIC8vIGlzV29yZFRleHRCcmVh
ayByZXR1cm5zIHRydWUgYWZ0ZXIgbW92aW5nIGFjcm9zcyBhIHdvcmQgYW5kIGZhbHNlIGFmdGVy
IG1vdmluZyBhY3Jvc3MgYSBwdW5jdHVhdGlvbi9zcGFjZS4KICAgICByZXR1cm4gaXNXb3JkVGV4
dEJyZWFrKGl0ZXIpOwogfQogCi1zdGF0aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVGV4dEJy
ZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQorc3Rh
dGljIGJvb2wgaXNsb2dpY2FsRW5kT2ZXb3JkKFVCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQgcG9z
aXRpb24sIGJvb2wgaGFyZExpbmVCcmVhaykKIHsKLSAgICBib29sIGJvdW5kYXJ5ID0gaXNUZXh0
QnJlYWsoaXRlciwgcG9zaXRpb24pOworICAgIGJvb2wgYm91bmRhcnkgPSB1YnJrX2lzQm91bmRh
cnkoaXRlciwgcG9zaXRpb24pOwogICAgIHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3VuZGFy
eSkgJiYgaXNXb3JkVGV4dEJyZWFrKGl0ZXIpOwogfQogCkBAIC0zNTEsNyArMzUyLDcgQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24KICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0g
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQo
KSk7CiAgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IG51bGxwdHI7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247Ci0gICAgVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXIgPSBudWxscHRyOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gbnVs
bHB0cjsKIAogICAgIENhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMgbGVhZkJveGVzOwog
ICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpAQCAtMzkwLDcgKzM5MSw3IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gdmlzdWFsV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgdmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIGlmICghaXRlcikKICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIHRleHRCcmVha0ZpcnN0KGl0ZXIpOworICAgICAgICB1YnJrX2ZpcnN0KGl0
ZXIpOwogICAgICAgICBpbnQgb2Zmc2V0SW5JdGVyYXRvciA9IG9mZnNldEluQm94IC0gdGV4dEJv
eC5zdGFydCgpICsgcHJldmlvdXNCb3hMZW5ndGg7CiAKICAgICAgICAgYm9vbCBpc1dvcmRCcmVh
azsKQEAgLTExMDksNyArMTExMCw3IEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiB1bnNpZ25l
ZCBzdGFydFNlbnRlbmNlQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91bmRh
cnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJikKIHsKICAgICAvLyBGSVhNRTogVGhl
IGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhhdC4K
LSAgICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0
KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNlQnJl
YWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBz
dGFydE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExMTks
NyArMTEyMCw3IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbikKIAogdW5zaWduZWQgZW5kU2VudGVuY2VCb3VuZGFyeShTdHJp
bmdWaWV3IHRleHQsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHks
IGJvb2wmKQogewotICAgIHJldHVybiB0ZXh0QnJlYWtOZXh0KHNlbnRlbmNlQnJlYWtJdGVyYXRv
cih0ZXh0KSk7CisgICAgcmV0dXJuIHVicmtfbmV4dChzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4
dCkpOwogfQogCiBWaXNpYmxlUG9zaXRpb24gZW5kT2ZTZW50ZW5jZShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHBvc2l0aW9uKQpAQCAtMTEzMiw3ICsxMTMzLDcgQEAgc3RhdGljIHVuc2lnbmVkIHBy
ZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQs
IEJvdW4KIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGljYWwgdG8gc3RhcnRTZW50ZW5j
ZUJvdW5kYXJ5LiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIG5vdCByaWdodC4KICAgICAvLyBGSVhN
RTogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUg
dGhhdC4KLSAgICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRv
cih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRl
bmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
dGlvbikKQEAgLTExNDQsNyArMTE0NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXh0U2VudGVuY2VQ
b3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5CiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgaWRlbnRpY2FsIHRvIGVuZFNlbnRlbmNlQm91bmRhcnkuCiAg
ICAgLy8gVGhhdCBpc24ndCByaWdodC4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBtb3ZlIHRvIHRo
ZSBlcXVpdmFsZW50IHBvc2l0aW9uIGluIHRoZSBmb2xsb3dpbmcgc2VudGVuY2UuCi0gICAgcmV0
dXJuIHRleHRCcmVha0ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDApOwor
ICAgIHJldHVybiB1YnJrX2ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDAp
OwogfQogCiBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCmluZGV4IDZjMWQ4YjNlZDQ1ZTI0NWE3YzdjNDY5NzAwMmJkMTg5NmM5M2Q3MzkuLmQ0M2Q0
ZWY5ZTAxMTkyNmQwZThhMGViZGVjODc1MmQzZWZmZGZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNiBAQAogI2luY2x1ZGUgIlN0eWxl
UmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiAjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBjNDFiYzhmZmVlZWUwODZjNDU2
YzJhMjA3OGU0ZmYwYzJmMDQ1YWU3Li4zNWE0MmIzZmRjNTdkYjQ0MmNhMTIxZDZlZmUyYjBmZmI5
NDhiNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
QEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVy
RWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Tm9k
ZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNkNDdlNDYwMjUx
ZjMyOWQyMjZiZTM0YWNkODBiZmEwNGQwZDk2NjUuLmY2YTZiYmM0NjRiOWFmYTM4ZDU3YjRkMWVj
NDdjZjNjY2E5MjY2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTY5LDcgKzY5
LDYgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBl
LmgiCiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCiAjaW5jbHVk
ZSAiVGltZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIlVSTElucHV0VHlwZS5oIgpAQCAtNzgsNiAr
NzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWI3ZDkwMWFmYzAyNWI1
OWFmOTFiYjdlZGFmNGM3YjMwM2NmMTAxOC4uZjM1ZmI0YzI2MTA3YzU1ZjMxMTIxZWU1ZWQyYTY5
OWNiZjQ4M2E2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cApAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAppbmRleCBm
NmYwMjc2ZDE4ZDg2ODA0MGRiZmI2MjU4ODJiNzA4YzMzNjU4ZTViLi45MDMyZGI2NzU3ZjVjZjJl
MTM3YTk0MGM5NmRjMGUwMTIxZWE0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlw
ZS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXggYWZhOGUx
MmQ4MWJkODViZDk2M2Y4ZGNiMmM4YmVjNTQ3OTc0YzAxYi4uODVhM2FkMjlhZTUwOWI5MTA1ZWU1
YTk0NmYyNjJiZDBmYmMzOGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogI2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC00MywxOSArNDQsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB0eXBlZGVmIHVuc2lnbmVkIFRydW5jYXRpb25GdW5jdGlvbihjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZlciwg
Ym9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcyk7CiAKLXN0YXRpYyBpbmxpbmUgaW50IHRleHRCcmVh
a0F0T3JQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0LCBpbnQgb2Zmc2V0KQorc3RhdGlj
IGlubGluZSBpbnQgdGV4dEJyZWFrQXRPclByZWNlZGluZyhVQnJlYWtJdGVyYXRvciogaXQsIGlu
dCBvZmZzZXQpCiB7Ci0gICAgaWYgKGlzVGV4dEJyZWFrKGl0LCBvZmZzZXQpKQorICAgIGlmICh1
YnJrX2lzQm91bmRhcnkoaXQsIG9mZnNldCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKLSAg
ICBpbnQgcmVzdWx0ID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVy
biByZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSA/IDAgOiByZXN1bHQ7CisgICAgaW50IHJlc3VsdCA9
IHVicmtfcHJlY2VkaW5nKGl0LCBvZmZzZXQpOworICAgIHJldHVybiByZXN1bHQgPT0gVUJSS19E
T05FID8gMCA6IHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgYm91bmRlZFRleHRCcmVh
a0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQsIGludCBsZW5ndGgp
CitzdGF0aWMgaW5saW5lIGludCBib3VuZGVkVGV4dEJyZWFrRm9sbG93aW5nKFVCcmVha0l0ZXJh
dG9yKiBpdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkKIHsKLSAgICBpbnQgcmVzdWx0ID0gdGV4
dEJyZWFrRm9sbG93aW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4dEJy
ZWFrRG9uZSA/IGxlbmd0aCA6IHJlc3VsdDsKKyAgICBpbnQgcmVzdWx0ID0gdWJya19mb2xsb3dp
bmcoaXQsIG9mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBVQlJLX0RPTkUgPyBsZW5ndGgg
OiByZXN1bHQ7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwg
VUNoYXIqIGJ1ZmZlciwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcykKQEAgLTE0Niw3ICsxNDcs
NyBAQCBzdGF0aWMgdW5zaWduZWQgcmlnaHRDbGlwVG9Xb3JkQnVmZmVyKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBsZW5n
dGgpOwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0gICAg
VGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJp
bmcpLnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3Jk
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOwog
ICAgIHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVw
Q291bnQpOwogICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCku
Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAppbmRleCA4MGYxYzYzZDA5ZTQ5ZDZmMjg4OTllYWQ0MzFmODIzNjdhNTA0NGFhLi5j
ZmI1NjcxZDcwMzU5YTg5MDgxMjE4YzM4YzRiODhiYjlkYjliMzgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcApAQCAtMzAsMTAgKzMwLDExIEBACiAjaW5jbHVkZSAiRm9udENhc2NhZGUu
aCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4u
aCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgog
CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTc2LDIxICsxNzcsMjEgQEAgdW5zaWduZWQgQ29tcGxl
eFRleHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1ZGVQ
YXJ0aWFsR2wKICAgICAgICAgICAgICAgICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxpZ2F0
dXJlIGNhcmV0cyIuIFRoaXMgaXMgYXZhaWxhYmxlIGluIENvcmVUZXh0IHZpYSBDVEZvbnRHZXRM
aWdhdHVyZUNhcmV0UG9zaXRpb25zKCkuCiAgICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRJbmRl
eCA9IGhpdEdseXBoU3RhcnQgKyAoaGl0R2x5cGhFbmQgLSBoaXRHbHlwaFN0YXJ0KSAqIChtX3J1
bi5sdHIoKSA/IHggLyBhZGp1c3RlZEFkdmFuY2UgOiAxIC0geCAvIGFkanVzdGVkQWR2YW5jZSk7
CiAgICAgICAgICAgICAgICAgaW50IHN0cmluZ0xlbmd0aCA9IGNvbXBsZXhUZXh0UnVuLnN0cmlu
Z0xlbmd0aCgpOwotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JQb3Np
dGlvbkl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KGNvbXBsZXhU
ZXh0UnVuLmNoYXJhY3RlcnMoKSwgc3RyaW5nTGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgVUJy
ZWFrSXRlcmF0b3IqIGN1cnNvclBvc2l0aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0ZXJh
dG9yKFN0cmluZ1ZpZXcoY29tcGxleFRleHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5ndGgp
KTsKICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlclN0YXJ0OwotICAgICAgICAgICAgICAgIGlm
IChpc1RleHRCcmVhayhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCisgICAgICAg
ICAgICAgICAgaWYgKHVicmtfaXNCb3VuZGFyeShjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJ
bmRleCkpCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4OwogICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSB0
ZXh0QnJlYWtQcmVjZWRpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoY2x1c3RlclN0YXJ0ID09IFRleHRCcmVha0RvbmUpCisgICAg
ICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IHVicmtfcHJlY2VkaW5nKGN1cnNvclBvc2l0
aW9uSXRlcmF0b3IsIGhpdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJT
dGFydCA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQg
PSAwOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZVBh
cnRpYWxHbHlwaHMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV4VGV4dFJ1bi5z
dHJpbmdMb2NhdGlvbigpICsgY2x1c3RlclN0YXJ0OwogCi0gICAgICAgICAgICAgICAgaW50IGNs
dXN0ZXJFbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0
SW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChjbHVzdGVyRW5kID09IFRleHRCcmVha0RvbmUp
CisgICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJFbmQgPSB1YnJrX2ZvbGxvd2luZyhjdXJzb3JQ
b3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKGNsdXN0ZXJF
bmQgPT0gVUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyRW5kID0gc3RyaW5n
TGVuZ3RoOwogCiAgICAgICAgICAgICAgICAgQ0dGbG9hdCBjbHVzdGVyV2lkdGg7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IDQ3ZDI0
NDc1YWMwOTg5NGUwMzg4NTFhNDhiYjljMDVlZGRlZjM3YzIuLmU3ODBmZjY4MjBmMDlhNzYxMzc3
ZjEyYTk0MzkxMjRhZDJhYWI0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKIAorI2luY2x1ZGUgPHVuaWNvZGUvdWJy
ay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC02MiwyNyArNjMsMjcgQEAgdW5zaWduZWQgc3Rh
cnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KFN0cmluZ1ZpZXcgdGV4dCkKIAogaW50IGZpbmRO
ZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3
YXJkKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRl
eHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwog
CiAgICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dp
bmcoaXQsIHBvc2l0aW9uKTsKLSAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFRleHRCcmVha0Rv
bmUpIHsKKyAgICAgICAgcG9zaXRpb24gPSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24pOwor
ICAgICAgICB3aGlsZSAocG9zaXRpb24gIT0gVUJSS19ET05FKSB7CiAgICAgICAgICAgICAvLyBX
ZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgYnJlYWsg
aXMgYWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
b3NpdGlvbikgPCB0ZXh0Lmxlbmd0aCgpICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uIC0gMV0p
KQogICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKIAotICAgICAgICAgICAgcG9zaXRp
b24gPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHBvc2l0
aW9uID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9uID0g
dGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlvbik7Ci0gICAgICAgIHdoaWxlIChwb3NpdGlv
biAhPSBUZXh0QnJlYWtEb25lKSB7CisgICAgICAgIHBvc2l0aW9uID0gdWJya19wcmVjZWRpbmco
aXQsIHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFVCUktfRE9ORSkgewog
ICAgICAgICAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZvbGxv
d2luZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHBvc2l0aW9u
ICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOwogCi0gICAgICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha1ByZWNlZGluZyhpdCwg
cG9zaXRpb24pOworICAgICAgICAgICAgcG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhpdCwgcG9z
aXRpb24pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSwxOSArOTIsMTkg
QEAgaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlv
biwgYm9vbCBmb3J3YXJkKQogCiB2b2lkIGZpbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0
LCBpbnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludCogZW5kKQogewotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJl
YWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3Jk
QnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0
aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0
KTsKLSAgICAqc3RhcnQgPSB0ZXh0QnJlYWtQcmV2aW91cyhpdCk7CisgICAgICAgICplbmQgPSB1
YnJrX2xhc3QoaXQpOworICAgICpzdGFydCA9IHVicmtfcHJldmlvdXMoaXQpOwogfQogCiB2b2lk
IGZpbmRFbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGludCog
ZW5kKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRl
eHQpOwotICAgICplbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBV
QnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0g
dWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAg
ICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsKKyAgICAgICAgKmVuZCA9IHVicmtfbGFzdChpdCk7
CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCmlu
ZGV4IDQxMWM4MDYxNGUyNjdjZmM1MTFmZmFkYjBhOTUzNjFjODFiNTQ5MzEuLjYzOGY3NmM0NmNj
NmQ4MTJlZTVlOTJjZTNhNTVmMzczZWY0MDhkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCkBA
IC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlIDxMYW5ndWFnZS5oPgogI2luY2x1ZGUgPGdsaWIu
aD4KKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MSwxMyArOTIsMTMgQEAg
dm9pZCBUZXh0Q2hlY2tlckVuY2hhbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgaW50JiBtaXNzcGUKICAgICBpZiAoIWhhc0RpY3Rpb25hcnkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSB3b3JkQnJlYWtJdGVy
YXRvcihzdHJpbmcpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gd29yZEJyZWFrSXRlcmF0
b3Ioc3RyaW5nKTsKICAgICBpZiAoIWl0ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJp
bmcgdXRmOFN0cmluZyA9IHN0cmluZy51dGY4KCk7Ci0gICAgaW50IHN0YXJ0ID0gdGV4dEJyZWFr
Rmlyc3QoaXRlcik7Ci0gICAgZm9yIChpbnQgZW5kID0gdGV4dEJyZWFrTmV4dChpdGVyKTsgZW5k
ICE9IFRleHRCcmVha0RvbmU7IGVuZCA9IHRleHRCcmVha05leHQoaXRlcikpIHsKKyAgICBpbnQg
c3RhcnQgPSB1YnJrX2ZpcnN0KGl0ZXIpOworICAgIGZvciAoaW50IGVuZCA9IHVicmtfbmV4dChp
dGVyKTsgZW5kICE9IFVCUktfRE9ORTsgZW5kID0gdWJya19uZXh0KGl0ZXIpKSB7CiAgICAgICAg
IGlmIChpc1dvcmRUZXh0QnJlYWsoaXRlcikpIHsKICAgICAgICAgICAgIGNoZWNrU3BlbGxpbmdP
ZldvcmQodXRmOFN0cmluZywgc3RhcnQsIGVuZCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlzc3Bl
bGxpbmdMZW5ndGgpOwogICAgICAgICAgICAgLy8gU3RvcCBjaGVja2luZyB0aGUgbmV4dCB3b3Jk
cyBJZiB0aGUgY3VycmVudCB3b3JkIGlzIG1pc3NwZWxsZWQsIHRvIGRvIG5vdCBvdmVyd3JpdGUg
aXRzIG1pc3NwZWxsZWQgbG9jYXRpb24gYW5kIGxlbmd0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRlMThh
NGM4ZmY1NGNiZGUxYmQwYjJjZWY5MTJjZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMyOGQy
Y2VmZTUzZDI1ZjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4dFdv
cmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkK
ICAgICAvLyBmb3IgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25lLCBh
bmQgaW4gdGhlIGZ1dHVyZSB3aWxsIGJlCiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUgaVBo
b25lLXNwZWNpZmljIGJlaGF2aW9yIGZvciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGluZy4K
ICAgICBpbnQgcG9zID0gcG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5
ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5kYXJ5
ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAgICAg
IGlmIChmb3J3YXJkKSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0g
dGV4dEJyZWFrRm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9
IHVicmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3Mg
PT0gVUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgpOwog
ICAgICAgICAgICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0Lmxl
bmd0aCgpICYmIChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0pKSAm
JiBpc1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJlY2Vk
aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2VkaW5n
KGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05FKQog
ICAgICAgICAgICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9zID4g
MCAmJiBpc1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFjdGVy
KHRleHRbcG9zIC0gMV0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9C
cmVha0xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4
IDg4ZDdlOTk1ODIwMzU4OTcwZjBlOGExZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJmNDlj
OTAxMjFiMDgwMDZlMzE4MDk1NDU2ZmJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFr
TGluZXMuaApAQCAtMTAyLDEwICsxMDIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2Fi
bGVQb3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKICAg
ICAgICAgICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewogICAg
ICAgICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJp
bWFyeSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAgICAg
ICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBU
ZXh0QnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChw
cmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRvciog
YnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJh
dG9yLCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBw
cmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZSA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3LDEx
ICsxNDcsMTEgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25M
b29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0QnJl
YWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBicmVh
ayBpZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUgaXMg
bm8gcHJpb3IgY29udGV4dC4KICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0
aCkgewotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0g
bGF6eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAgICAg
ICAgVUJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5nZXQo
cHJpb3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikg
ewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+PSAx
KTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2lu
ZyhicmVha0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAgICAg
ICAgICAgaW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBw
cmlvckNvbnRleHRMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZSA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggYzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0OGVm
MmUzOGQwNS4uYTBlZjgyZWE5NzI5YTJkYjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBACiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAi
U2hhcGVPdXRzaWRlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
Lmg+CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGEy
NWU0MGY4ZWM1NjY3MTVmMmFlYjBkYTQ0MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0ZDEx
YzUzNGNlY2M2M2ExMzY0ODA2NmQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcq
IHN0cmluZywgVUNoYXIgcHJldmlvdXMpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlvdXNb
aV0gPSBzdHJpbmdJbXBsW2kgLSAxXTsKICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRvciog
Ym91bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91
cy5jaGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91bmRh
cnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5jaGFy
YWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1
cm47CiAKQEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcqIHN0
cmluZywgVUNoYXIgcHJldmlvdXMpCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgp
OwogCiAgICAgaW50MzJfdCBlbmRPZldvcmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9IHRl
eHRCcmVha0ZpcnN0KGJvdW5kYXJ5KTsKLSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVha05l
eHQoYm91bmRhcnkpOyBlbmRPZldvcmQgIT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQgPSBl
bmRPZldvcmQsIGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAgaW50
MzJfdCBzdGFydE9mV29yZCA9IHVicmtfZmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5kT2ZX
b3JkID0gdWJya19uZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3RhcnRP
ZldvcmQgPSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsKICAg
ICAgICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91cyBz
dHJpbmcKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29yZCAt
IDFdID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdXaXRo
UHJldmlvdXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9mV29y
ZCArIDE7IGkgPCBlbmRPZldvcmQ7IGkrKykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50IFJl
bmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICByZXR1
cm4gY3VycmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5pbXBs
KCk7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVy
YXRvcihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0
aCgpKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVy
YXRvcihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxlbmd0
aCgpKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwog
Ci0gICAgbG9uZyByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJlbnQp
OwotICAgIGlmIChyZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9IHVi
cmtfcHJlY2VkaW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVCUktf
RE9ORSkKICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsxNTIz
LDcgQEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihp
bnQgY3VycmVudCkgY29uc3QKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgU3Ry
aW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xlYXIg
d2h5IHRoaXMgaGFzIHNvIG11Y2ggaGFuZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5nIFRl
eHRCcmVha0l0ZXJhdG9yLgorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBzbyBt
dWNoIGhhbmRyb2xsZWQgY29kZSByYXRoZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4KICAg
ICAvLyBBbHNvIHVuY2xlYXIgd2h5IHRoaXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5jZUJ5
Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0
aGlzIGZhbmNpZXIgY2FzZSBjb3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBubwpA
QCAtMTY0OSwxMiArMTY0OSwxMiBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3Vy
cmVudCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5nSW1w
bCogdGV4dEltcGwgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFj
dGVyczE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hhcmFj
dGVyczE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAg
ICAgIHJldHVybiBjdXJyZW50ICsgMTsKIAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFrRm9s
bG93aW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVha0Rv
bmUpCisgICAgbG9uZyByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVudCk7
CisgICAgaWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnQg
KyAxOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaApp
bmRleCBhZWU3NWE0NmZhZjA0MTAyMzM0MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1MzZl
NTJiYzVkODQ3ZTcxMTZjNmQyOTUwZmVmMzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVy
YXRvci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2luY2x1
ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29u
dGVudHMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJl
YWtlci5oCmluZGV4IGJmZDk4NjdhNDVlMWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2IuLjBj
OWQ5ZjhjNzg0ZmJhMmZkZTdmNWYyZjMwYmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9N
aXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRT
dXBwb3J0Lm1tCmluZGV4IDg5ZWIyYTMyOWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0OTUu
LmM0ZWZjMmU0ZGUxMGQwMTU3N2Q2NTQ1ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHls
ZFNQSS5oPgotI2ltcG9ydCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2ltcG9y
dCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKaW5kZXggOGUyOTQyNTkzNGU0YmJmYjc4
ZWQ4ZmVjOGI4NzY5NmUzNzUxNmIzYi4uM2RmODM2NGQ1NGZhOWE4MjJhOWMzNGZjNDQ2ODMwYWIx
ZDgwYmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hl
Y2tlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tl
ckVmbC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpjbG9zZVNwZWxs
RG9jdW1lbnRXaXRoVGFnKGludDY0X3QgdGFnKQogc3RhdGljIHVuc2lnbmVkIG5leHRXb3JkT2Zm
c2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAgICAvLyBG
SVhNRTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBjb3VsZCBi
ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFrKCkgbGVh
dmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24g
YXQKKyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVyYXRvciBw
b2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAgICAgICAg
b3IgYWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAgICAgLy8g
ICAgICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0IHByb3Bl
cmx5IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0IHJlc2V0
dGluZyB0aGUgaXRlcmF0b3IuCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHVuc2lnbmVkIG5l
eHRXb3JkT2Zmc2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7CiAKICAgICB1bnNpZ25lZCB3b3JkT2Zmc2V0ID0g
Y3VycmVudE9mZnNldDsKLSAgICB3aGlsZSAod29yZE9mZnNldCA8IHRleHQubGVuZ3RoKCkgJiYg
aXNUZXh0QnJlYWsodGV4dEl0ZXJhdG9yLCB3b3JkT2Zmc2V0KSkKKyAgICB3aGlsZSAod29yZE9m
ZnNldCA8IHRleHQubGVuZ3RoKCkgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgd29y
ZE9mZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0cmVhdCB0
aGUgd29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMTc1LDcgKzE3NSw3IEBAIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFw
aChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgICAgIC8vIGludm9sdmUgdGhlIGNsaWVudCB0byBj
aGVjayBzcGVsbGluZyBmb3IgdGhlbS4KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbmV4dFdv
cmRPZmZzZXQodGV4dCwgMCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aFN0cmlwID0gdGV4dC5s
ZW5ndGgoKTsKLSAgICAgICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiBpc1RleHRCcmVhayh0
ZXh0SXRlcmF0b3IsIGxlbmd0aFN0cmlwIC0gMSkpCisgICAgICAgIHdoaWxlIChsZW5ndGhTdHJp
cCA+IDAgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgbGVuZ3RoU3RyaXAgLSAxKSkK
ICAgICAgICAgICAgIC0tbGVuZ3RoU3RyaXA7CiAKICAgICAgICAgd2hpbGUgKG9mZnNldCA8IGxl
bmd0aFN0cmlwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1Rl
eHRDaGVja2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNr
ZXJHdGsuY3BwCmluZGV4IGM2ZGNmMTM4NWUxNzQ5YzY0Nzk3NDkwM2Y2ZTgyMjg3MDdiNmU5MDYu
LjI1MTNjYmQ2OTFjYmI0NTI3NjY4ZDg2YjU0NTMwMjVhZWNlNjczZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckVuY2hhbnQuaD4KKyNp
bmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC0yMjYsMTYgKzIy
NywxNiBAQCB2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVm
UHRyPFRleHRDaGVja2VyQ29tcGxldGlvbj4gY29tcAogc3RhdGljIHVuc2lnbmVkIG5leHRXb3Jk
T2Zmc2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAgICAv
LyBGSVhNRTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBjb3Vs
ZCBiZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFrKCkg
bGVhdmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRp
b24gYXQKKyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVyYXRv
ciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAgICAg
ICAgb3IgYWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAgICAg
Ly8gICAgICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0IHBy
b3Blcmx5IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0IHJl
c2V0dGluZyB0aGUgaXRlcmF0b3IuCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRleHRJdGVyYXRv
ciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiB0ZXh0SXRl
cmF0b3IgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKICAgICBpZiAoIXRleHRJdGVyYXRvcikK
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7CiAKICAgICB1bnNpZ25lZCB3b3JkT2Zmc2V0
ID0gY3VycmVudE9mZnNldDsKLSAgICB3aGlsZSAod29yZE9mZnNldCA8IHRleHQubGVuZ3RoKCkg
JiYgaXNUZXh0QnJlYWsodGV4dEl0ZXJhdG9yLCB3b3JkT2Zmc2V0KSkKKyAgICB3aGlsZSAod29y
ZE9mZnNldCA8IHRleHQubGVuZ3RoKCkgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwg
d29yZE9mZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0cmVh
dCB0aGUgd29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMjU4LDcgKzI1OSw3IEBA
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFn
cmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgaWYgKCEoY2hlY2tpbmdUeXBlcyAmIFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZykpCiAgICAgICAgIHJldHVybiBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PigpOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRleHRJdGVyYXRvciA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiB0ZXh0SXRlcmF0b3IgPSB3
b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKICAgICBpZiAoIXRleHRJdGVyYXRvcikKICAgICAgICAg
cmV0dXJuIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCk7CiAKQEAgLTI2Niw3ICsyNjcsNyBA
QCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZQogICAgIC8vIGludm9sdmUgdGhlIGNsaWVudCB0byBj
aGVjayBzcGVsbGluZyBmb3IgdGhlbS4KICAgICB1bnNpZ25lZCBvZmZzZXQgPSBuZXh0V29yZE9m
ZnNldCh0ZXh0LCAwKTsKICAgICB1bnNpZ25lZCBsZW5ndGhTdHJpcCA9IHRleHQubGVuZ3RoKCk7
Ci0gICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiBpc1RleHRCcmVhayh0ZXh0SXRlcmF0b3Is
IGxlbmd0aFN0cmlwIC0gMSkpCisgICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiB1YnJrX2lz
Qm91bmRhcnkodGV4dEl0ZXJhdG9yLCBsZW5ndGhTdHJpcCAtIDEpKQogICAgICAgICAtLWxlbmd0
aFN0cmlwOwogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcGFyYWdyYXBoQ2hlY2tp
bmdSZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297297</attachid>
            <date>2016-12-15 20:42:37 -0800</date>
            <delta_ts>2016-12-15 21:20:10 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-165931-20161215204144.patch</filename>
            <type>text/plain</type>
            <size>61003</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwMTU2NzdjMGIwYTJmNWFiMTM0YzUw
MjQ4NDI4ODRkMjg1MWQ3NTEuLmI2MTZkZmEyZjc0YjdlNjNlNmQ5NmRkYTQ2YjE2MDg5ZmZiNjgw
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNjUgQEAKIDIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBTdG9wIHJlaW50ZXJwcmV0X2Nhc3Rpbmcg
VUJyZWFrSXRlcmF0b3JzIHRvIHRoZSB1bmRlZmluZWQgdHlwZSBUZXh0QnJlYWtJdGVyYXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1OTMxCisK
KyAgICAgICAgV2UgaGF2ZSBhIGNsYXNzIGRlY2xhcmF0aW9uIGZvciBUZXh0QnJlYWtJdGVyYXRv
ciBidXQgbm8gZGVmaW5pdGlvbiBmb3IgaXQuIFdoZW4gd2UKKyAgICAgICAgY3JlYXRlIGFuIElD
VSBVQnJlYWtJdGVyYXRvciwgd2UgaW1tZWRpYXRlbHkgcmVpbnRlcnByZXRfY2FzdCBpdCB0byB0
aGlzIHVuZGVmaW5lZAorICAgICAgICB0eXBlLCBhbmQgcGFzcyBpdCBhcm91bmQgb3VyIGNvZGUg
aW5zaWRlIFdlYkNvcmUuIFRoZW4sIHdoZW5ldmVyIHdlIHdhbnQgdG8gYWN0dWFsbHkKKyAgICAg
ICAgdXNlIHRoaXMgaXRlcmF0b3IsIHdlIHJlaW50ZXJwcmV0X2Nhc3QgaXQgYmFjayB0byBVQnJl
YWtJdGVyYXRvci4gVGhpcyBpcyBsaWtlbHkgZHVlCisgICAgICAgIHRvIHNvbWUgcG9ydHMgaGlz
dG9yaWNhbGx5IGltcGxlbWVudGluZyBicmVha2luZyBpbnRlcmF0b3JzIG9uIHRvcCBvZiBvdGhl
ciBsaWJyYXJpZXMKKyAgICAgICAgb3RoZXIgdGhhbiBJQ1U7IGhvd2V2ZXIsIG5vdywgYWxsIHBv
cnRzIHVzZSBJQ1UuIEJlY2F1c2UgdGhpcyBpbnRlcm5hbCB0eXBlIGlzIG5vdAorICAgICAgICBo
ZWxwZnVsIGFuZCBqdXN0IGFkZHMgY29uZnVzaW9uLCB3ZSBzaG91bGQganVzdCBjYWxsIG91ciBi
cmVha2luZyBpdGVyYXRvcnMgd2hhdAorICAgICAgICB0aGV5IGFyZTogVUJyZWFrSXRlcmF0b3Jz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYSBtZWNoYW5pY2FsIHJlcGxhY2VtZW50IG9mIFRl
eHRCcmVha0l0ZXJhdG9yIHRvIFVCcmVha0l0ZXJhdG9yIGFuZAorICAgICAgICByZW1vdmVzIHRo
ZSBmdW5jdGlvbnMgd2Ugd2VyZSBjYWxsaW5nIHdoaWNoIHBhc3MgdGhyb3VnaCBkaXJlY3RseSB0
byB1YnJrXyooKS4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgICogd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CisgICAgICAgIChX
VEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6dGFrZSk6CisgICAgICAgIChXVEY6OkxpbmVCcmVh
a0l0ZXJhdG9yUG9vbDo6cHV0KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoK
KyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Oklt
cGw6OmNvbXB1dGVJbmRleEVuZCk6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplSXRlcmF0b3IpOgorICAgICAgICAoV1RG
Ojppbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOgorICAgICAgICAoV1RGOjpzZXRUZXh0Rm9y
SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OnNlbnRl
bmNlQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmN1cnNvck1vdmVtZW50SXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpyZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpvcGVuTGluZUJyZWFr
SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6Z2V0Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChX
VEY6OmNhY2hlTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXVEY6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOgor
ICAgICAgICAoV1RGOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAgICAg
KFdURjo6dGV4dEJyZWFrRmlyc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtM
YXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTmV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6OnRleHRCcmVha1ByZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
dGV4dEJyZWFrUHJlY2VkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrRm9s
bG93aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrQ3VycmVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OmlzVGV4dEJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRl
cmF0b3I6Omxhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0
b3I6OnNlY29uZFRvTGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6c2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVha0l0
ZXJhdG9yOjp1cGRhdGVQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFr
SXRlcmF0b3I6OnJlc2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpwcmlvckNvbnRleHRMZW5ndGgpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJy
ZWFrSXRlcmF0b3I6OmdldCk6CisgICAgICAgIChXVEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I6Om9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKik6CisgICAgICAgIChXVEY6Ok5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yKik6
IERlbGV0ZWQuCisKKzIwMTYtMTItMTUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKwogICAgICAgICBTb3J0IFhjb2RlIHByb2plY3QgZmlsZXMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzNwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZGNkZmY2Njc0YjhiODNhOTQzNzNmMzdlMDAxYzMyNmU3YTM4NWFlYy4uM2NiYTcyNWE0ZDQ0
ZGIyNDA1MDBlMmMzM2FlZDRjNjkxNmNmYWY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBA
CisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0ZXJhdG9ycyB0byB0aGUg
dW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMg
bm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YSk6CisgICAg
ICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZE1pc3NwZWxsaW5ncyk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTG9naWNhbFN0YXJ0T2ZXb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzbG9naWNhbEVuZE9mV29yZCk6CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxXb3Jk
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRTZW50ZW5jZUJvdW5kYXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmVuZFNlbnRlbmNlQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6
cHJldmlvdXNTZW50ZW5jZVBvc2l0aW9uQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dFNlbnRlbmNlUG9zaXRpb25Cb3VuZGFyeSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAg
ICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4
dEJyZWFrQXRPclByZWNlZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpib3VuZGVkVGV4dEJyZWFr
Rm9sbG93aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbmROZXh0V29yZEZyb21JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpm
aW5kV29yZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRFbmRXb3JkQm91bmRhcnkp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluZE5leHRXb3JkRnJvbUluZGV4KToKKyAgICAgICAgKiByZW5kZXJpbmcv
QnJlYWtMaW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9u
TG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDYXBpdGFsaXplZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bmV4dE9mZnNldCk6CisgICAgICAgICog
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmg6CisKIDIwMTYtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgSFRNTCB2YWxpZGF0
aW9uIGJ1YmJsZSdzIHN0YXRlIGlzIHVwZGF0ZWQgYWZ0ZXIgbGF5b3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
aW5kZXggNTYzMTgzMzJiMjRiNjNiOGYwN2YwOWQ1ODhhZGY2ZjkwNmJhODY3ZS4uNGI3NzNlYjkx
ODY0ZTg0YzhiMDlmNDhiOWE4NDBlMDk4ZTg2NmY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE2LTEyLTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RvcCByZWludGVycHJldF9jYXN0aW5nIFVCcmVha0l0ZXJhdG9y
cyB0byB0aGUgdW5kZWZpbmVkIHR5cGUgVGV4dEJyZWFrSXRlcmF0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBNaXNjL1dlYlVJS2l0U3VwcG9y
dC5tbToKKwogMjAxNi0xMS0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBQYXNzUmVmUHRyIGZyb20gRHVtcFJlbmRlclRyZWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IDZmOTI3NTk3OWNlMzI2M2EyNGI1Yzk0NWQ2ZDRjNjIwMmNkYWYyOTIu
LjY0MDlhNDE2OTI5MjliY2FkMDdkZDY2NWRiOGUzNzM3NWEyNWQ0NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApA
QCAtMTIwOCw3ICsxMjA4LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAxICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCi0jZGVmaW5lIEhBVkVfVE9VQ0hfQkFSIDEKKyNkZWZp
bmUgSEFWRV9UT1VDSF9CQVIgMAogI2RlZmluZSBIQVZFX0FEVkFOQ0VEX1NQRUxMX0NIRUNLSU5H
IDEKIAogI2lmIGRlZmluZWQoX19MUDY0X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaAppbmRleCAxNTFlYWRmZmIyNmYyNzQyYTQzMDZlYjU5NmUw
YmJjZTZhYTIzNzczLi5jMGUwZTU3ZGU5YjZiZjkxYWFjYmY4Y2MxNjhjM2UyMjNiYzM1MGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAg
LTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsb2NhbGU7CiAgICAgfQog
Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRha2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUs
IExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQorICAgIFVCcmVha0l0ZXJh
dG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1v
ZGUgbW9kZSwgYm9vbCBpc0NKSykKICAgICB7CiAgICAgICAgIGF1dG8gbG9jYWxlV2l0aE9wdGlv
bmFsQnJlYWtLZXl3b3JkID0gbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2Rl
KTsKIAotICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOworICAg
ICAgICBVQnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBudWxscHRyOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1f
cG9vbFtpXS5maXJzdCA9PSBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQpIHsKICAgICAg
ICAgICAgICAgICBpdGVyYXRvciA9IG1fcG9vbFtpXS5zZWNvbmQ7CkBAIC04NCw3ICs4NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yOwogICAgIH0KIAotICAgIHZvaWQgcHV0
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKKyAgICB2b2lkIHB1dChVQnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IpCiAgICAgewogICAgICAgICBBU1NFUlQobV92ZW5kZWRJdGVyYXRvcnMuY29u
dGFpbnMoaXRlcmF0b3IpKTsKICAgICAgICAgaWYgKG1fcG9vbC5zaXplKCkgPT0gY2FwYWNpdHkp
IHsKQEAgLTk3LDggKzk3LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBjYXBhY2l0eSA9IDQ7CiAKLSAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0
cmluZywgVGV4dEJyZWFrSXRlcmF0b3IqPiwgY2FwYWNpdHk+IG1fcG9vbDsKLSAgICBIYXNoTWFw
PFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKyAg
ICBWZWN0b3I8c3RkOjpwYWlyPEF0b21pY1N0cmluZywgVUJyZWFrSXRlcmF0b3IqPiwgY2FwYWNp
dHk+IG1fcG9vbDsKKyAgICBIYXNoTWFwPFVCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBt
X3ZlbmRlZEl0ZXJhdG9yczsKIAogICAgIGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVC
cmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA1OTY1ZDY5YjgwMjAxOTVlMmQxNDlj
ODIzMTE3ZmJiMTZkZjU5NTdhLi5kNzg1NjJlMmJjNTcwZTg4Y2Q5NjRlNjAyOTc1ZWE5NjhkMjhm
ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAjaW5jbHVkZSAiU3RyaW5nVmlldy5oIgogCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8
dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTMxLDcgKzEzMiw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pbmRleCA9
PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKLSAg
ICAgICAgcmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhtX2l0ZXJhdG9yLnZhbHVlKCksIG1faW5k
ZXgpOworICAgICAgICByZXR1cm4gdWJya19mb2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBt
X2luZGV4KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuY3BwCmluZGV4IDA1YTUxOTU2MDVlMWQ4ZmJmNzYyMzEzOTdkODljMDgxNTMyMDkz
MjcuLjFkYTBhYjYxOGE1OTk5ODhkYmRkMDc2YjFiNDVjMjc0MzcxNGY4NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC0zOCwyMyArMzgsMjMgQEAgbmFt
ZXNwYWNlIFdURiB7CiAKIC8vIEl0ZXJhdG9yIGluaXRpYWxpemF0aW9uCiAKLXN0YXRpYyBUZXh0
QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBl
LCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3N0YXRp
YyBVQnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0
eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKIHsK
ICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+
KHVicmtfb3Blbih0eXBlLCBsb2NhbGUsIDAsIDAsICZvcGVuU3RhdHVzKSk7CisgICAgVUJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gdWJya19vcGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5T
dGF0dXMpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAi
SUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFt
ZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7CiAgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCiAj
aWYgIVBMQVRGT1JNKElPUykKIAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXpl
SXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKK3N0YXRpYyBVQnJlYWtJ
dGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVs
ZXMpCiB7CiAgICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7CiAgICAgVUVycm9yQ29kZSBvcGVu
U3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVh
a1J1bGVzKTsKICAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVy
dGVkQ2hhcmFjdGVycygpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRl
ZENoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOwor
ICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVk
Q2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBu
b3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1
cyksIG9wZW5TdGF0dXMpOwogICAgIHJldHVybiBpdGVyYXRvcjsKIH0KQEAgLTY0LDcgKzY0LDcg
QEAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMo
Y29uc3QgY2hhciogYnJlYWtSdWxlcykKIAogLy8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCiAKLXN0
YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJh
dG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcpCitzdGF0aWMgVUJyZWFrSXRlcmF0b3Iq
IHNldFRleHRGb3JJdGVyYXRvcihVQnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcg
c3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRo
QnVmZmVyIHRleHRMb2NhbDsKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIFRleHRCcmVha0l0ZXJh
dG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJp
bmcKICAgICAgICAgfQogCiAgICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOworICAgICAgICB1YnJr
X3NldFVUZXh0KCZpdGVyYXRvciwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwogICAgICAgICBpZiAo
VV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoInVicmtf
c2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIFRleHRCcmVha0l0
ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBT
dHJpbmcKICAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
VUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3Nl
dFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CisgICAg
ICAgIHVicmtfc2V0VGV4dCgmaXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5n
Lmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4
dFN0YXR1cykpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05Nyw3ICs5
Nyw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nCiAgICAgcmV0dXJuICZpdGVyYXRvcjsKIH0K
IAotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0
b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3Qg
VUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorc3RhdGlj
IFVCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVUJyZWFrSXRl
cmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29u
dGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQogewogICAgIGlmIChzdHJpbmcuaXM4
Qml0KCkpIHsKICAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKQEAgLTExMyw3ICsx
MTMsNyBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJ
dGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogICAgICAgICB9CiAKICAgICAgICAgVUVy
cm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVU
ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAm
c2V0VGV4dFN0YXR1cyk7CisgICAgICAgIHVicmtfc2V0VVRleHQoJml0ZXJhdG9yLCB0ZXh0LCAm
c2V0VGV4dFN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMg
JWQiLCBzZXRUZXh0U3RhdHVzKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4
dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyCiAgICAgICAgIH0KIAogICAgICAg
ICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtf
c2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRl
eHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgdWJya19zZXRVVGV4dCgmaXRlcmF0b3IsIHRl
eHQsICZzZXRUZXh0U3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVz
KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0
YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xNDYsMjUgKzE0NiwyNSBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRB
d2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcgogCiAvLyBTdGF0aWMg
aXRlcmF0b3JzCiAKLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3IHN0cmluZykKK1VCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKIHsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVh
a0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgc3RhdGljIFVC
cmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRv
cihVQlJLX1dPUkQpOwogICAgIGlmICghc3RhdGljV29yZEJyZWFrSXRlcmF0b3IpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGlj
V29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7CiB9CiAKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50
ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogc2Vu
dGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHN0YXRpYyBUZXh0
QnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOworICAgIHN0YXRpYyBVQnJlYWtJdGVyYXRvciogc3RhdGlj
U2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0Up
OwogICAgIGlmICghc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNl
QnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1v
dmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCitVQnJlYWtJdGVyYXRvciogY3Vyc29y
TW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMgYmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJh
dG9yIHJ1bGVzIG9mIElDVSA1NwpAQCAtMjkxLDEwICsyOTEsMTAgQEAgVGV4dEJyZWFrSXRlcmF0
b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAgICIh
IXNhZmVfcmV2ZXJzZTsiCiAgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiOwogI2VuZGlmCi0gICAg
c3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0g
aW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7CisgICAgc3RhdGljIFVCcmVha0l0
ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9y
V2l0aFJ1bGVzKGtSdWxlcyk7CiAjZWxzZSAvLyBQTEFURk9STShJT1MpCiAgICAgLy8gVXNlIHRo
ZSBzcGVjaWFsIFRoYWkgY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwot
ICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRv
ciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUiwgInRoIik7CisgICAgc3RhdGlj
IFVCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQogCiAgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQpAQCAtMzAzLDE2ICsz
MDMsMTYgQEAgVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5n
VmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29y
TW92ZW1lbnRJdGVyYXRvciwgc3RyaW5nKTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVp
cmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4
dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJ
dGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWdu
ZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBp
c0NKSykKIHsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVy
YXRvclBvb2w6OnNoYXJlZFBvb2woKS50YWtlKGxvY2FsZSwgbW9kZSwgaXNDSkspOworICAgIFVC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9v
bCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0
ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0
aCk7CiB9CiAKLXZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKIHsKICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CiAKQEAg
LTc4MCw3ICs3ODAsNyBAQCBib29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5l
QnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0
b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0
ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUg
bW9kZSwgYm9vbCBpc0NKSykKIHsKICAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXI7CiAgICAg
VUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtODA0LDMwICs4MDQsMzAg
QEAgVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJr
SXRlcik7CisgICAgcmV0dXJuIHVicmtJdGVyOwogfQogCi12b2lkIGNsb3NlTGluZUJyZWFrSXRl
cmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvcikKK3ZvaWQgY2xvc2VMaW5lQnJlYWtJ
dGVyYXRvcihVQnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yKQogewotICAgIFVCcmVha0l0ZXJhdG9y
KiB1YnJrSXRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7
CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0gaXRlcmF0b3I7CiAgICAgQVNTRVJUKHVi
cmtJdGVyKTsKICAgICB1YnJrX2Nsb3NlKHVicmtJdGVyKTsKICAgICBpdGVyYXRvciA9IG51bGxw
dHI7CiB9CiAKLXN0YXRpYyBzdGQ6OmF0b21pYzxUZXh0QnJlYWtJdGVyYXRvcio+IG5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgPSBBVE9NSUNfVkFSX0lOSVQobnVsbHB0cik7CitzdGF0
aWMgc3RkOjphdG9taWM8VUJyZWFrSXRlcmF0b3IqPiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yID0gQVRPTUlDX1ZBUl9JTklUKG51bGxwdHIpOwogCi1zdGF0aWMgaW5saW5lIFRleHRC
cmVha0l0ZXJhdG9yKiBnZXROb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKK3N0YXRp
YyBpbmxpbmUgVUJyZWFrSXRlcmF0b3IqIGdldE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoKQogewogICAgIGlmIChhdXRvICpyZXMgPSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yLmV4Y2hhbmdlKG51bGxwdHIsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKQogICAgICAg
ICByZXR1cm4gcmVzOwogICAgIHJldHVybiBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNU
RVIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY2FjaGVOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBjYWNoZU1lKQorc3RhdGljIGlubGluZSB2b2lk
IGNhY2hlTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihVQnJlYWtJdGVyYXRvciogY2Fj
aGVNZSkKIHsKICAgICBpZiAoYXV0byAqb2xkID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvci5leGNoYW5nZShjYWNoZU1lLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKSkKLSAgICAg
ICAgdWJya19jbG9zZShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4ob2xkKSk7Cisg
ICAgICAgIHVicmtfY2xvc2Uob2xkKTsKIH0KIAogTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykK
QEAgLTg0OCw1MiArODQ4LDExIEBAIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoTm9uU2hhcmVkQ2hhcmFjCiAgICAgc3RkOjpz
d2FwKG1faXRlcmF0b3IsIG90aGVyLm1faXRlcmF0b3IpOwogfQogCi0KIC8vIEl0ZXJhdG9yIGlt
cGxlbWVuYXRpb24uCiAKLWludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRl
cmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfZmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJ
dGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChU
ZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWlu
dGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRC
cmVha1ByZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4g
dWJya19wcmV2aW91cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
KTsKLX0KLQotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtG
b2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJl
dHVybiB1YnJrX2ZvbGxvd2luZyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRl
cmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0
PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0
QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJy
a19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciks
IHBvc2l0aW9uKTsKLX0KLQotYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3Iq
IGl0ZXJhdG9yKQorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9y
KQogewotICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0
X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworICAgIGludCBydWxlU3RhdHVzID0g
dWJya19nZXRSdWxlU3RhdHVzKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBV
QlJLX1dPUkRfTk9ORTsKIH0KIApAQCAtOTIwLDcgKzg3OSw3IEBAIHVuc2lnbmVkIG51bUdyYXBo
ZW1lQ2x1c3RlcnMoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVt
R3JhcGhlbWVDbHVzdGVycyA9IDA7Ci0gICAgd2hpbGUgKHRleHRCcmVha05leHQoaXRlcmF0b3Ip
ICE9IFRleHRCcmVha0RvbmUpCisgICAgd2hpbGUgKHVicmtfbmV4dChpdGVyYXRvcikgIT0gVUJS
S19ET05FKQogICAgICAgICArK251bUdyYXBoZW1lQ2x1c3RlcnM7CiAgICAgcmV0dXJuIG51bUdy
YXBoZW1lQ2x1c3RlcnM7CiB9CkBAIC05NDgsMTAgKzkwNywxMCBAQCB1bnNpZ25lZCBudW1DaGFy
YWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKFN0cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBudW1H
cmFwaGVtZQogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVt
ZUNsdXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHRCcmVha05leHQoaXRlcmF0b3IpID09
IFRleHRCcmVha0RvbmUpCisgICAgICAgIGlmICh1YnJrX25leHQoaXRlcmF0b3IpID09IFVCUktf
RE9ORSkKICAgICAgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CiAgICAgfQotICAgIHJldHVy
biB0ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gdWJya19jdXJyZW50KGl0
ZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmgKaW5kZXggOGFmYjU1ODAyMDEwMDJiYmQyZWRkNTc1NjViYzM0MWIxYTAw
NmE5ZS4uYmNmNDRjMDdhNGVjOTFiNTE0NjdjMjRmNGZlNzE2ZWQzNGRiY2MxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApAQCAtMjUsOCArMjUsNiBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3I7Ci0KIC8vIE5vdGU6IFRoZSBy
ZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJh
dG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgogCiBl
bnVtIGNsYXNzIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7IERlZmF1bHQsIExvb3NlLCBOb3JtYWws
IFN0cmljdCB9OwpAQCAtMzUsMjcgKzMzLDE3IEBAIGVudW0gY2xhc3MgTGluZUJyZWFrSXRlcmF0
b3JNb2RlIHsgRGVmYXVsdCwgTG9vc2UsIE5vcm1hbCwgU3RyaWN0IH07CiAvLyBwbGF0Zm9ybSBV
SSBjb252ZW50aW9ucy4gT25lIG5vdGFibGUgZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZm
ZXJlbnQKIC8vIGZyb20gY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBj
aGFyYWN0ZXJzLCBzZWUgYnVnIDI0MzQyLgogLy8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2lu
dCBhbmQgc2VsZWN0aW9uIG1hbmlwdWxhdGlvbnMuCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJy
ZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVdURl9F
WFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5n
Vmlldyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRv
ciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklW
QVRFIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQs
IHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29s
IGlzQ0pLKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRv
cihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJ
dGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
LCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVy
YXRvciomKTsKK1dURl9FWFBPUlRfUFJJVkFURSBVQnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRl
cmF0b3IoU3RyaW5nVmlldyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFrSXRlcmF0b3IqIHNl
bnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGlu
dCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RGX0VYUE9SVF9QUklWQVRF
IGludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1XVEZfRVhQT1JUX1BSSVZB
VEUgaW50IHRleHRCcmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdGV4dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciopOwotV1RG
X0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3Iq
LCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJy
ZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNUZXh0QnJlYWso
VGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNXb3Jk
VGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVUJyZWFr
SXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJp
b3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJh
dG9yKik7CitVQnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9p
ZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yKiYpOwogCi1jb25zdGV4cHIg
aW50IFRleHRCcmVha0RvbmUgPSAtMTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRl
eHRCcmVhayhVQnJlYWtJdGVyYXRvciopOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0NK
S0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmKTsKIApAQCAtODYsMzMgKzc0LDMzIEBAIHB1Ymxp
YzoKIAogICAgIFVDaGFyIGxhc3RDaGFyYWN0ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQ09N
UElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJy
ZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVh
a0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgcmV0
dXJuIG1fcHJpb3JDb250ZXh0WzFdOwogICAgIH0KIAogICAgIFVDaGFyIHNlY29uZFRvTGFzdENo
YXJhY3RlcigpIGNvbnN0CiAgICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlf
TEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVk
X3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChXVEZfQVJSQVlf
TEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCAiVUJyZWFrSXRlcmF0b3IgdW5leHBlY3RlZCBw
cmlvciBjb250ZXh0IGxlbmd0aCIpOwogICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07
CiAgICAgfQogCiAgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vj
b25kVG9MYXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlv
cl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3Ig
Y29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xh
c3Q7CiAgICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKICAgICB9CiAKICAgICB2b2lk
IHVwZGF0ZVByaW9yQ29udGV4dChVQ2hhciBsYXN0KQogICAgIHsKLSAgICAgICAgQ09NUElMRV9B
U1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRl
cmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJh
dG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAgICAgICAgbV9wcmlvckNv
bnRleHRbMF0gPSBtX3ByaW9yQ29udGV4dFsxXTsKICAgICAgICAgbV9wcmlvckNvbnRleHRbMV0g
PSBsYXN0OwogICAgIH0KIAogICAgIHZvaWQgcmVzZXRQcmlvckNvbnRleHQoKQogICAgIHsKLSAg
ICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0g
MiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0g
MiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29udGV4dCBsZW5ndGgiKTsKICAg
ICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOwogICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9
IDA7CiAgICAgfQpAQCAtMTIwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwcmlv
ckNvbnRleHRMZW5ndGgoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgcHJpb3JDb250
ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSCht
X3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9j
b250ZXh0X2xlbmd0aCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoV1RGX0FSUkFZX0xFTkdUSCht
X3ByaW9yQ29udGV4dCkgPT0gMiwgIlVCcmVha0l0ZXJhdG9yIHVuZXhwZWN0ZWQgcHJpb3IgY29u
dGV4dCBsZW5ndGgiKTsKICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzFdKSB7CiAgICAgICAg
ICAgICArK3ByaW9yQ29udGV4dExlbmd0aDsKICAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4
dFswXSkKQEAgLTEzMiw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gT2J0YWluIHRleHQgYnJl
YWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJh
dG9yIGlzIChvciBoYXMgYmVlbikKICAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZp
b3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1
c2luZwogICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5
LgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3Ro
KQorICAgIFVCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRD
YXBhY2l0eSk7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRl
eHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNv
bnRleHRMZW5ndGhdIDogMDsKQEAgLTE2NCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgcHJpb3JDb250ZXh0Q2FwYWNpdHkgPSAyOwogICAgIFN0cmlu
Z1ZpZXcgbV9zdHJpbmdWaWV3OwogICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0
QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsKKyAgICBVQnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvciB7IG51bGxwdHIgfTsKICAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlv
ckNvbnRleHQgeyBudWxscHRyIH07CiAgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZSB7
IExpbmVCcmVha0l0ZXJhdG9yTW9kZTo6RGVmYXVsdCB9OwogICAgIHVuc2lnbmVkIG1fY2FjaGVk
UHJpb3JDb250ZXh0TGVuZ3RoIHsgMCB9OwpAQCAtMTg1LDEwICsxNzMsMTAgQEAgcHVibGljOgog
CiAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJC
cmVha0l0ZXJhdG9yJiYpOwogCi0gICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29u
c3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQorICAgIG9wZXJhdG9yIFVCcmVha0l0ZXJhdG9yKigp
IGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogbV9pdGVyYXRvcjsKKyAgICBVQnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKIH07
CiAKIC8vIENvdW50cyB0aGUgbnVtYmVyIG9mIGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0
ZSBwYWlyIG9yIGEgc2VxdWVuY2UKQEAgLTIwNSw1ICsxOTMsNCBAQCBXVEZfRVhQT1JUX1BSSVZB
VEUgdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhTdHJpbmdWaWV3LCB1
bnNpZ25lZAogdXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7CiB1c2luZyBXVEY6Okxp
bmVCcmVha0l0ZXJhdG9yTW9kZTsKIHVzaW5nIFdURjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcjsKLXVzaW5nIFdURjo6VGV4dEJyZWFrRG9uZTsKLXVzaW5nIFdURjo6VGV4dEJyZWFr
SXRlcmF0b3I7Cit1c2luZyBXVEY6OmlzV29yZFRleHRCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmNwcAppbmRleCA5N2ZhNDVmMTExNDc4NDQxMzk3NGY5Yjc1NjcxOGU3ZmVhNGYz
N2QwLi40ZmQ0Y2I4ODg1MDYxNjAxNjU5MWUyYTY5NTJhN2Q1YzgzMGVjYmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUg
IlN0eWxlSW5oZXJpdGVkRGF0YS5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg2LDggKzg2LDggQEAgdW5zaWduZWQgQ2hhcmFj
dGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQg
b2Zmc2V0LAogICAgIC8vIFdlIG5lZWQgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgbG9vay1haGVh
ZCB0byBhY2NvdW50IGZvciBVVEYtMTYgc3Vycm9nYXRlcy4KICAgICBpZiAoY2hhcmFjdGVyTGVu
Z3RoTGltaXQgPCBjaGFyYWN0ZXJMZW5ndGgpIHsKICAgICAgICAgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKG9mZnNldCwgKGNo
YXJhY3Rlckxlbmd0aExpbWl0ICsgMiA+IGNoYXJhY3Rlckxlbmd0aCkgPyBjaGFyYWN0ZXJMZW5n
dGggOiBjaGFyYWN0ZXJMZW5ndGhMaW1pdCArIDIpKTsKLSAgICAgICAgaWYgKCFpc1RleHRCcmVh
ayhpdCwgY2hhcmFjdGVyTGVuZ3RoTGltaXQpKQotICAgICAgICAgICAgY2hhcmFjdGVyTGVuZ3Ro
TGltaXQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKKyAg
ICAgICAgaWYgKCF1YnJrX2lzQm91bmRhcnkoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKKyAg
ICAgICAgICAgIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gdWJya19wcmVjZWRpbmcoaXQsIGNoYXJh
Y3Rlckxlbmd0aExpbWl0KTsKICAgICB9CiAKICAgICBpZiAoIWNoYXJhY3Rlckxlbmd0aExpbWl0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4
IDBlNWRjZDYzYWE5OTYxZjIyNzA1NzQzZTBmZTA0NTk1M2M3YjFhZjEuLjM3OWQ3ZDI5OWU3NjA2
NzJjYjU2YTkzYTY2ODQ1MDRjOTMwOTBiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMzLDEyICszMywxMyBAQAogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4
dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJW
aXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKKyNpbmNsdWRlIDx1
bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC03NiwxMSArNzcsMTEgQEAgc3RhdGljIHZvaWQgZmluZEdyYW1tYXRpY2FsRXJyb3JzKFRl
eHRDaGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgVmUKIAogc3RhdGljIHZv
aWQgZmluZE1pc3NwZWxsaW5ncyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3
IHRleHQsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwogICAgIGlm
ICghaXRlcmF0b3IpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKGludCB3b3JkU3RhcnQgPSB0
ZXh0QnJlYWtDdXJyZW50KGl0ZXJhdG9yKTsgd29yZFN0YXJ0ID49IDA7ICkgewotICAgICAgICBp
bnQgd29yZEVuZCA9IHRleHRCcmVha05leHQoaXRlcmF0b3IpOworICAgIGZvciAoaW50IHdvcmRT
dGFydCA9IHVicmtfY3VycmVudChpdGVyYXRvcik7IHdvcmRTdGFydCA+PSAwOyApIHsKKyAgICAg
ICAgaW50IHdvcmRFbmQgPSB1YnJrX25leHQoaXRlcmF0b3IpOwogICAgICAgICBpZiAod29yZEVu
ZCA8IDApCiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCmluZGV4IDgzY2FlNGMzODY2MmJhODM5ZmYxZjdhZTc4Y2UxMTZhNjZmMDczYmYu
LjE1M2Y1ZWE0ZjRhNzQ1NDAyNzVmYTVjYTRjZmZkYTY0ZWQxYmU4NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTM3LDkgKzM3LDEwIEBACiAjaW5jbHVkZSAi
UmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Qm91
bmRhcmllcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdWJyay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmg+CiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMjg1LDcgKzI4Niw3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxvZ2ljYWxseU5leHRC
b3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCiAgICAgcmV0dXJuIDA7
CiB9CiAKLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3JGb3JNaW5P
ZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29u
c3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKK3N0YXRpYyBVQnJlYWtJdGVyYXRvciogd29yZEJy
ZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZp
c2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKICAgICBpbnQmIHBy
ZXZpb3VzQm94TGVuZ3RoLCBib29sJiBwcmV2aW91c0JveEluRGlmZmVyZW50QmxvY2ssIFZlY3Rv
cjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYg
bGVhZkJveGVzKQogewogICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jayA9IGZhbHNlOwpA
QCAtMzA1LDcgKzMwNiw3IEBAIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRl
cmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zCiAgICAgcmV0dXJuIHdv
cmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUoKSkp
OwogfQogCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4
T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNv
bnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCitzdGF0aWMgVUJyZWFrSXRlcmF0b3IqIHdvcmRC
cmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCiAgICAgYm9vbCYg
bmV4dEJveEluRGlmZmVyZW50QmxvY2ssIFZlY3RvcjxVQ2hhciwgMTAyND4mIHN0cmluZywgQ2Fj
aGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyYgbGVhZkJveGVzKQogewogICAgIG5leHRCb3hJ
bkRpZmZlcmVudEJsb2NrID0gZmFsc2U7CkBAIC0zMjMsMjAgKzMyNCwyMCBAQCBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29u
c3QgVmlzaWJsZVBvcwogICAgIHJldHVybiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0
cmluZy5kYXRhKCksIHN0cmluZy5zaXplKCkpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNMb2dpY2Fs
U3RhcnRPZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBo
YXJkTGluZUJyZWFrKQorc3RhdGljIGJvb2wgaXNMb2dpY2FsU3RhcnRPZldvcmQoVUJyZWFrSXRl
cmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQogewotICAgIGJv
b2wgYm91bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBv
c2l0aW9uKTsKKyAgICBib29sIGJvdW5kYXJ5ID0gaGFyZExpbmVCcmVhayA/IHRydWUgOiB1YnJr
X2lzQm91bmRhcnkoaXRlciwgcG9zaXRpb24pOwogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHRleHRCcmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7
CisgICAgdWJya19mb2xsb3dpbmcoaXRlciwgcG9zaXRpb24pOwogICAgIC8vIGlzV29yZFRleHRC
cmVhayByZXR1cm5zIHRydWUgYWZ0ZXIgbW92aW5nIGFjcm9zcyBhIHdvcmQgYW5kIGZhbHNlIGFm
dGVyIG1vdmluZyBhY3Jvc3MgYSBwdW5jdHVhdGlvbi9zcGFjZS4KICAgICByZXR1cm4gaXNXb3Jk
VGV4dEJyZWFrKGl0ZXIpOwogfQogCi1zdGF0aWMgYm9vbCBpc2xvZ2ljYWxFbmRPZldvcmQoVGV4
dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQor
c3RhdGljIGJvb2wgaXNsb2dpY2FsRW5kT2ZXb3JkKFVCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQg
cG9zaXRpb24sIGJvb2wgaGFyZExpbmVCcmVhaykKIHsKLSAgICBib29sIGJvdW5kYXJ5ID0gaXNU
ZXh0QnJlYWsoaXRlciwgcG9zaXRpb24pOworICAgIGJvb2wgYm91bmRhcnkgPSB1YnJrX2lzQm91
bmRhcnkoaXRlciwgcG9zaXRpb24pOwogICAgIHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3Vu
ZGFyeSkgJiYgaXNXb3JkVGV4dEJyZWFrKGl0ZXIpOwogfQogCkBAIC0zNTEsNyArMzUyLDcgQEAg
c3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zaXRpb24KICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9u
ID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKSk7CiAgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IG51bGxwdHI7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247Ci0gICAgVGV4dEJy
ZWFrSXRlcmF0b3IqIGl0ZXIgPSBudWxscHRyOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0g
bnVsbHB0cjsKIAogICAgIENhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMgbGVhZkJveGVz
OwogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpAQCAtMzkwLDcgKzM5MSw3IEBAIHN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFsV29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgdmlzaWJsZVBvc2l0aW9uCiAgICAgICAgIGlmICghaXRlcikKICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgIHRleHRCcmVha0ZpcnN0KGl0ZXIpOworICAgICAgICB1YnJrX2ZpcnN0
KGl0ZXIpOwogICAgICAgICBpbnQgb2Zmc2V0SW5JdGVyYXRvciA9IG9mZnNldEluQm94IC0gdGV4
dEJveC5zdGFydCgpICsgcHJldmlvdXNCb3hMZW5ndGg7CiAKICAgICAgICAgYm9vbCBpc1dvcmRC
cmVhazsKQEAgLTExMDksNyArMTExMCw3IEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluCiB1bnNp
Z25lZCBzdGFydFNlbnRlbmNlQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCwgQm91
bmRhcnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJikKIHsKICAgICAvLyBGSVhNRTog
VGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5kbGUgdGhh
dC4KLSAgICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVyYXRvcih0
ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNlbnRlbmNl
QnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQb3NpdGlv
biBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTEx
MTksNyArMTEyMCw3IEBAIFZpc2libGVQb3NpdGlvbiBzdGFydE9mU2VudGVuY2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIAogdW5zaWduZWQgZW5kU2VudGVuY2VCb3VuZGFyeShT
dHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkLCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxp
dHksIGJvb2wmKQogewotICAgIHJldHVybiB0ZXh0QnJlYWtOZXh0KHNlbnRlbmNlQnJlYWtJdGVy
YXRvcih0ZXh0KSk7CisgICAgcmV0dXJuIHVicmtfbmV4dChzZW50ZW5jZUJyZWFrSXRlcmF0b3Io
dGV4dCkpOwogfQogCiBWaXNpYmxlUG9zaXRpb24gZW5kT2ZTZW50ZW5jZShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKQpAQCAtMTEzMiw3ICsxMTMzLDcgQEAgc3RhdGljIHVuc2lnbmVk
IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWdu
ZWQsIEJvdW4KIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGljYWwgdG8gc3RhcnRTZW50
ZW5jZUJvdW5kYXJ5LiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIG5vdCByaWdodC4KICAgICAvLyBG
SVhNRTogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gcmV0dXJuIC0xOyB3ZSBkb24ndCBoYW5k
bGUgdGhhdC4KLSAgICByZXR1cm4gdGV4dEJyZWFrUHJlY2VkaW5nKHNlbnRlbmNlQnJlYWtJdGVy
YXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHNl
bnRlbmNlQnJlYWtJdGVyYXRvcih0ZXh0KSwgdGV4dC5sZW5ndGgoKSk7CiB9CiAKIFZpc2libGVQ
b3NpdGlvbiBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBw
b3NpdGlvbikKQEAgLTExNDQsNyArMTE0NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBuZXh0U2VudGVu
Y2VQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQsIEJvdW5kYXJ5CiB7
CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaWRlbnRpY2FsIHRvIGVuZFNlbnRlbmNlQm91bmRhcnku
CiAgICAgLy8gVGhhdCBpc24ndCByaWdodC4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBtb3ZlIHRv
IHRoZSBlcXVpdmFsZW50IHBvc2l0aW9uIGluIHRoZSBmb2xsb3dpbmcgc2VudGVuY2UuCi0gICAg
cmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCksIDAp
OworICAgIHJldHVybiB1YnJrX2ZvbGxvd2luZyhzZW50ZW5jZUJyZWFrSXRlcmF0b3IodGV4dCks
IDApOwogfQogCiBWaXNpYmxlUG9zaXRpb24gbmV4dFNlbnRlbmNlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCmluZGV4IDZjMWQ4YjNlZDQ1ZTI0NWE3YzdjNDY5NzAwMmJkMTg5NmM5M2Q3MzkuLmQ0
M2Q0ZWY5ZTAxMTkyNmQwZThhMGViZGVjODc1MmQzZWZmZGZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsNiBAQAogI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBjNDFiYzhmZmVlZWUwODZj
NDU2YzJhMjA3OGU0ZmYwYzJmMDQ1YWU3Li4zNWE0MmIzZmRjNTdkYjQ0MmNhMTIxZDZlZmUyYjBm
ZmI5NDhiNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0
Tm9kZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNkNDdlNDYw
MjUxZjMyOWQyMjZiZTM0YWNkODBiZmEwNGQwZDk2NjUuLmY2YTZiYmM0NjRiOWFmYTM4ZDU3YjRk
MWVjNDdjZjNjY2E5MjY2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTY5LDcg
KzY5LDYgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRU
eXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCiAjaW5j
bHVkZSAiVGltZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIlVSTElucHV0VHlwZS5oIgpAQCAtNzgs
NiArNzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggNWI3ZDkwMWFmYzAy
NWI1OWFmOTFiYjdlZGFmNGM3YjMwM2NmMTAxOC4uZjM1ZmI0YzI2MTA3YzU1ZjMxMTIxZWU1ZWQy
YTY5OWNiZjQ4M2E2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcApAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAppbmRl
eCBmNmYwMjc2ZDE4ZDg2ODA0MGRiZmI2MjU4ODJiNzA4YzMzNjU4ZTViLi45MDMyZGI2NzU3ZjVj
ZjJlMTM3YTk0MGM5NmRjMGUwMTIxZWE0OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0
VHlwZS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXggYWZh
OGUxMmQ4MWJkODViZDk2M2Y4ZGNiMmM4YmVjNTQ3OTc0YzAxYi4uODVhM2FkMjlhZTUwOWI5MTA1
ZWU1YTk0NmYyNjJiZDBmYmMzOGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CkBAIC00MywxOSArNDQsMTkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB0eXBlZGVmIHVuc2lnbmVkIFRydW5jYXRpb25GdW5jdGlvbihjb25zdCBT
dHJpbmcmLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3VudCwgVUNoYXIqIGJ1ZmZl
ciwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcyk7CiAKLXN0YXRpYyBpbmxpbmUgaW50IHRleHRC
cmVha0F0T3JQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0LCBpbnQgb2Zmc2V0KQorc3Rh
dGljIGlubGluZSBpbnQgdGV4dEJyZWFrQXRPclByZWNlZGluZyhVQnJlYWtJdGVyYXRvciogaXQs
IGludCBvZmZzZXQpCiB7Ci0gICAgaWYgKGlzVGV4dEJyZWFrKGl0LCBvZmZzZXQpKQorICAgIGlm
ICh1YnJrX2lzQm91bmRhcnkoaXQsIG9mZnNldCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAK
LSAgICBpbnQgcmVzdWx0ID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBvZmZzZXQpOwotICAgIHJl
dHVybiByZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSA/IDAgOiByZXN1bHQ7CisgICAgaW50IHJlc3Vs
dCA9IHVicmtfcHJlY2VkaW5nKGl0LCBvZmZzZXQpOworICAgIHJldHVybiByZXN1bHQgPT0gVUJS
S19ET05FID8gMCA6IHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBpbnQgYm91bmRlZFRleHRC
cmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXQsIGludCBvZmZzZXQsIGludCBsZW5n
dGgpCitzdGF0aWMgaW5saW5lIGludCBib3VuZGVkVGV4dEJyZWFrRm9sbG93aW5nKFVCcmVha0l0
ZXJhdG9yKiBpdCwgaW50IG9mZnNldCwgaW50IGxlbmd0aCkKIHsKLSAgICBpbnQgcmVzdWx0ID0g
dGV4dEJyZWFrRm9sbG93aW5nKGl0LCBvZmZzZXQpOwotICAgIHJldHVybiByZXN1bHQgPT0gVGV4
dEJyZWFrRG9uZSA/IGxlbmd0aCA6IHJlc3VsdDsKKyAgICBpbnQgcmVzdWx0ID0gdWJya19mb2xs
b3dpbmcoaXQsIG9mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBVQlJLX0RPTkUgPyBsZW5n
dGggOiByZXN1bHQ7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGtlZXBDb3Vu
dCwgVUNoYXIqIGJ1ZmZlciwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcykKQEAgLTE0Niw3ICsx
NDcsNyBAQCBzdGF0aWMgdW5zaWduZWQgcmlnaHRDbGlwVG9Xb3JkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBs
ZW5ndGgpOwogICAgIEFTU0VSVChrZWVwQ291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogCi0g
ICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhz
dHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3
b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkp
OwogICAgIHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBr
ZWVwQ291bnQpOwogICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0
aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAppbmRleCA4MGYxYzYzZDA5ZTQ5ZDZmMjg4OTllYWQ0MzFmODIzNjdhNTA0NGFh
Li5jZmI1NjcxZDcwMzU5YTg5MDgxMjE4YzM4YzRiODhiYjlkYjliMzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcApAQCAtMzAsMTAgKzMwLDExIEBACiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRS
dW4uaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTc2LDIxICsxNzcsMjEgQEAgdW5zaWduZWQgQ29t
cGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCBoLCBib29sIGluY2x1
ZGVQYXJ0aWFsR2wKICAgICAgICAgICAgICAgICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxp
Z2F0dXJlIGNhcmV0cyIuIFRoaXMgaXMgYXZhaWxhYmxlIGluIENvcmVUZXh0IHZpYSBDVEZvbnRH
ZXRMaWdhdHVyZUNhcmV0UG9zaXRpb25zKCkuCiAgICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRJ
bmRleCA9IGhpdEdseXBoU3RhcnQgKyAoaGl0R2x5cGhFbmQgLSBoaXRHbHlwaFN0YXJ0KSAqICht
X3J1bi5sdHIoKSA/IHggLyBhZGp1c3RlZEFkdmFuY2UgOiAxIC0geCAvIGFkanVzdGVkQWR2YW5j
ZSk7CiAgICAgICAgICAgICAgICAgaW50IHN0cmluZ0xlbmd0aCA9IGNvbXBsZXhUZXh0UnVuLnN0
cmluZ0xlbmd0aCgpOwotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JQ
b3NpdGlvbkl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KGNvbXBs
ZXhUZXh0UnVuLmNoYXJhY3RlcnMoKSwgc3RyaW5nTGVuZ3RoKSk7CisgICAgICAgICAgICAgICAg
VUJyZWFrSXRlcmF0b3IqIGN1cnNvclBvc2l0aW9uSXRlcmF0b3IgPSBjdXJzb3JNb3ZlbWVudEl0
ZXJhdG9yKFN0cmluZ1ZpZXcoY29tcGxleFRleHRSdW4uY2hhcmFjdGVycygpLCBzdHJpbmdMZW5n
dGgpKTsKICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlclN0YXJ0OwotICAgICAgICAgICAgICAg
IGlmIChpc1RleHRCcmVhayhjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCkpCisgICAg
ICAgICAgICAgICAgaWYgKHVicmtfaXNCb3VuZGFyeShjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLCBo
aXRJbmRleCkpCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4Owog
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQg
PSB0ZXh0QnJlYWtQcmVjZWRpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwgaGl0SW5kZXgpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoY2x1c3RlclN0YXJ0ID09IFRleHRCcmVha0RvbmUpCisg
ICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IHVicmtfcHJlY2VkaW5nKGN1cnNvclBv
c2l0aW9uSXRlcmF0b3IsIGhpdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNsdXN0
ZXJTdGFydCA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3Rh
cnQgPSAwOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV4VGV4dFJ1
bi5zdHJpbmdMb2NhdGlvbigpICsgY2x1c3RlclN0YXJ0OwogCi0gICAgICAgICAgICAgICAgaW50
IGNsdXN0ZXJFbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoY3Vyc29yUG9zaXRpb25JdGVyYXRvciwg
aGl0SW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChjbHVzdGVyRW5kID09IFRleHRCcmVha0Rv
bmUpCisgICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJFbmQgPSB1YnJrX2ZvbGxvd2luZyhjdXJz
b3JQb3NpdGlvbkl0ZXJhdG9yLCBoaXRJbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKGNsdXN0
ZXJFbmQgPT0gVUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyRW5kID0gc3Ry
aW5nTGVuZ3RoOwogCiAgICAgICAgICAgICAgICAgQ0dGbG9hdCBjbHVzdGVyV2lkdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IDQ3
ZDI0NDc1YWMwOTg5NGUwMzg4NTFhNDhiYjljMDVlZGRlZjM3YzIuLmU3ODBmZjY4MjBmMDlhNzYx
Mzc3ZjEyYTk0MzkxMjRhZDJhYWI0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKIAorI2luY2x1ZGUgPHVuaWNvZGUv
dWJyay5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC02MiwyNyArNjMsMjcgQEAgdW5zaWduZWQg
c3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KFN0cmluZ1ZpZXcgdGV4dCkKIAogaW50IGZp
bmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3NpdGlvbiwgYm9vbCBm
b3J3YXJkKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9y
KHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQp
OwogCiAgICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgcG9zaXRpb24gPSB0ZXh0QnJlYWtGb2xs
b3dpbmcoaXQsIHBvc2l0aW9uKTsKLSAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFRleHRCcmVh
a0RvbmUpIHsKKyAgICAgICAgcG9zaXRpb24gPSB1YnJrX2ZvbGxvd2luZyhpdCwgcG9zaXRpb24p
OworICAgICAgICB3aGlsZSAocG9zaXRpb24gIT0gVUJSS19ET05FKSB7CiAgICAgICAgICAgICAv
LyBXZSBzdG9wIHNlYXJjaGluZyB3aGVuIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgYnJl
YWsgaXMgYWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwb3NpdGlvbikgPCB0ZXh0Lmxlbmd0aCgpICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uIC0g
MV0pKQogICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKIAotICAgICAgICAgICAgcG9z
aXRpb24gPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHBv
c2l0aW9uID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiB0ZXh0Lmxlbmd0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9u
ID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBwb3NpdGlvbik7Ci0gICAgICAgIHdoaWxlIChwb3Np
dGlvbiAhPSBUZXh0QnJlYWtEb25lKSB7CisgICAgICAgIHBvc2l0aW9uID0gdWJya19wcmVjZWRp
bmcoaXQsIHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKHBvc2l0aW9uICE9IFVCUktfRE9ORSkg
ewogICAgICAgICAgICAgLy8gV2Ugc3RvcCBzZWFyY2hpbmcgd2hlbiB0aGUgY2hhcmFjdGVyIGZv
bGxvd2luZyB0aGUgYnJlYWsgaXMgYWxwaGFudW1lcmljLgogICAgICAgICAgICAgaWYgKHBvc2l0
aW9uICYmIHVfaXNhbG51bSh0ZXh0W3Bvc2l0aW9uXSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOwogCi0gICAgICAgICAgICBwb3NpdGlvbiA9IHRleHRCcmVha1ByZWNlZGluZyhp
dCwgcG9zaXRpb24pOworICAgICAgICAgICAgcG9zaXRpb24gPSB1YnJrX3ByZWNlZGluZyhpdCwg
cG9zaXRpb24pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSwxOSArOTIs
MTkgQEAgaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3Np
dGlvbiwgYm9vbCBmb3J3YXJkKQogCiB2b2lkIGZpbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0
ZXh0LCBpbnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludCogZW5kKQogewotICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOwotICAgICplbmQgPSB0ZXh0
QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAgICBVQnJlYWtJdGVyYXRvciogaXQgPSB3
b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5kID0gdWJya19mb2xsb3dpbmcoaXQsIHBv
c2l0aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAgICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0
KGl0KTsKLSAgICAqc3RhcnQgPSB0ZXh0QnJlYWtQcmV2aW91cyhpdCk7CisgICAgICAgICplbmQg
PSB1YnJrX2xhc3QoaXQpOworICAgICpzdGFydCA9IHVicmtfcHJldmlvdXMoaXQpOwogfQogCiB2
b2lkIGZpbmRFbmRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGlu
dCogZW5kKQogewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9y
KHRleHQpOwotICAgICplbmQgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKKyAg
ICBVQnJlYWtJdGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKKyAgICAqZW5k
ID0gdWJya19mb2xsb3dpbmcoaXQsIHBvc2l0aW9uKTsKICAgICBpZiAoKmVuZCA8IDApCi0gICAg
ICAgICplbmQgPSB0ZXh0QnJlYWtMYXN0KGl0KTsKKyAgICAgICAgKmVuZCA9IHVicmtfbGFzdChp
dCk7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3Bw
CmluZGV4IDQxMWM4MDYxNGUyNjdjZmM1MTFmZmFkYjBhOTUzNjFjODFiNTQ5MzEuLjYzOGY3NmM0
NmNjNmQ4MTJlZTVlOTJjZTNhNTVmMzczZWY0MDhkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3Bw
CkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlIDxMYW5ndWFnZS5oPgogI2luY2x1ZGUgPGds
aWIuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MSwxMyArOTIsMTMg
QEAgdm9pZCBUZXh0Q2hlY2tlckVuY2hhbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgaW50JiBtaXNzcGUKICAgICBpZiAoIWhhc0RpY3Rpb25hcnkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSB3b3JkQnJlYWtJ
dGVyYXRvcihzdHJpbmcpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdGVyID0gd29yZEJyZWFrSXRl
cmF0b3Ioc3RyaW5nKTsKICAgICBpZiAoIWl0ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIENT
dHJpbmcgdXRmOFN0cmluZyA9IHN0cmluZy51dGY4KCk7Ci0gICAgaW50IHN0YXJ0ID0gdGV4dEJy
ZWFrRmlyc3QoaXRlcik7Ci0gICAgZm9yIChpbnQgZW5kID0gdGV4dEJyZWFrTmV4dChpdGVyKTsg
ZW5kICE9IFRleHRCcmVha0RvbmU7IGVuZCA9IHRleHRCcmVha05leHQoaXRlcikpIHsKKyAgICBp
bnQgc3RhcnQgPSB1YnJrX2ZpcnN0KGl0ZXIpOworICAgIGZvciAoaW50IGVuZCA9IHVicmtfbmV4
dChpdGVyKTsgZW5kICE9IFVCUktfRE9ORTsgZW5kID0gdWJya19uZXh0KGl0ZXIpKSB7CiAgICAg
ICAgIGlmIChpc1dvcmRUZXh0QnJlYWsoaXRlcikpIHsKICAgICAgICAgICAgIGNoZWNrU3BlbGxp
bmdPZldvcmQodXRmOFN0cmluZywgc3RhcnQsIGVuZCwgbWlzc3BlbGxpbmdMb2NhdGlvbiwgbWlz
c3BlbGxpbmdMZW5ndGgpOwogICAgICAgICAgICAgLy8gU3RvcCBjaGVja2luZyB0aGUgbmV4dCB3
b3JkcyBJZiB0aGUgY3VycmVudCB3b3JkIGlzIG1pc3NwZWxsZWQsIHRvIGRvIG5vdCBvdmVyd3Jp
dGUgaXRzIG1pc3NwZWxsZWQgbG9jYXRpb24gYW5kIGxlbmd0aC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggMTQwZDFjOTRl
MThhNGM4ZmY1NGNiZGUxYmQwYjJjZWY5MTJjZWJjZi4uNWMzOWQ2MzE5NTk1YWY5MGU5MDI4NGMy
OGQyY2VmZTUzZDI1ZjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2NywxOCArMjY3LDE4IEBAIGludCBmaW5kTmV4
dFdvcmRGcm9tSW5kZXgoU3RyaW5nVmlldyB0ZXh0LCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2Fy
ZCkKICAgICAvLyBmb3IgdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0IGlzIHVzZWQgb24gaVBob25l
LCBhbmQgaW4gdGhlIGZ1dHVyZSB3aWxsIGJlCiAgICAgLy8gdHVuZWQgdG8gaW1wcm92ZSB0aGUg
aVBob25lLXNwZWNpZmljIGJlaGF2aW9yIGZvciB0aGUga2V5Ym9hcmQgYW5kIHRleHQgZWRpdGlu
Zy4KICAgICBpbnQgcG9zID0gcG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGJvdW5k
YXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGJvdW5k
YXJ5ID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dCk7CiAgICAgaWYgKGJvdW5kYXJ5KSB7CiAgICAg
ICAgIGlmIChmb3J3YXJkKSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9z
ID0gdGV4dEJyZWFrRm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBv
cyA9IHVicmtfZm9sbG93aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChw
b3MgPT0gVUJSS19ET05FKQogICAgICAgICAgICAgICAgICAgICBwb3MgPSB0ZXh0Lmxlbmd0aCgp
OwogICAgICAgICAgICAgfSB3aGlsZSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvcykgPCB0ZXh0
Lmxlbmd0aCgpICYmIChwb3MgPT0gMCB8fCAhaXNTa2lwQ2hhcmFjdGVyKHRleHRbcG9zIC0gMV0p
KSAmJiBpc1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcG9zID0gdGV4dEJyZWFrUHJl
Y2VkaW5nKGJvdW5kYXJ5LCBwb3MpOworICAgICAgICAgICAgICAgIHBvcyA9IHVicmtfcHJlY2Vk
aW5nKGJvdW5kYXJ5LCBwb3MpOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gVUJSS19ET05F
KQogICAgICAgICAgICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgICAgfSB3aGlsZSAocG9z
ID4gMCAmJiBpc1NraXBDaGFyYWN0ZXIodGV4dFtwb3NdKSAmJiAhaXNXaGl0ZXNwYWNlQ2hhcmFj
dGVyKHRleHRbcG9zIC0gMV0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9CcmVha0xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmlu
ZGV4IDg4ZDdlOTk1ODIwMzU4OTcwZjBlOGExZTYxNzExNWNmZjA4MDY5NTYuLjdjNmU0ODA0YjJm
NDljOTAxMjFiMDgwMDZlMzE4MDk1NDU2ZmJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9CcmVha0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Jy
ZWFrTGluZXMuaApAQCAtMTAyLDEwICsxMDIsMTAgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVh
a2FibGVQb3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsK
ICAgICAgICAgICAgIGlmICghbmV4dEJyZWFrIHx8IG5leHRCcmVhay52YWx1ZSgpIDwgaSkgewog
ICAgICAgICAgICAgICAgIC8vIERvbid0IGJyZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2Yg
cHJpbWFyeSBjb250ZXh0IGFuZCB0aGVyZSBpcyBubyBwcmlvciBjb250ZXh0LgogICAgICAgICAg
ICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgICAgICAg
ICBUZXh0QnJlYWtJdGVyYXRvciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdl
dChwcmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBVQnJlYWtJdGVyYXRv
ciogYnJlYWtJdGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5n
dGgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0
ZXJhdG9yLCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgY2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEg
KyBwcmlvckNvbnRleHRMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZSA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFr
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpAQCAtMTQ3
LDExICsxNDcsMTEgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRp
b25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgaWYgKCFuZXh0
QnJlYWsgfHwgbmV4dEJyZWFrLnZhbHVlKCkgPCBpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBi
cmVhayBpZiBwb3NpdGlvbmVkIGF0IHN0YXJ0IG9mIHByaW1hcnkgY29udGV4dCBhbmQgdGhlcmUg
aXMgbm8gcHJpb3IgY29udGV4dC4KICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4dExl
bmd0aCkgewotICAgICAgICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9y
ID0gbGF6eUJyZWFrSXRlcmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgICAgICAg
ICAgICAgVUJyZWFrSXRlcmF0b3IqIGJyZWFrSXRlcmF0b3IgPSBsYXp5QnJlYWtJdGVyYXRvci5n
ZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRv
cikgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9yQ29udGV4dExlbmd0aCA+
PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxv
d2luZyhicmVha0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3RoIC0gMSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICAgICAgICAg
ICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkg
KyBwcmlvckNvbnRleHRMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZSA9PSBVQlJLX0RPTkUpCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gY2FuZGlkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggYzI4MjZhYTk4YWVhMDc5YjQ0NzNhZjI3ZmU5YTA0
OGVmMmUzOGQwNS4uYTBlZjgyZWE5NzI5YTJkYjJmNzgxNmY5NzU4NjM1MzE1NTZmODc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw2IEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVk
ZSAiU2hhcGVPdXRzaWRlSW5mby5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmg+CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IGEyNWU0MGY4ZWM1NjY3MTVmMmFlYjBkYTQ0MGVmODc0NjFmZDJmMWUuLjNkM2ZlMjczMDBhZWY0
ZDExYzUzNGNlY2M2M2ExMzY0ODA2NmQ1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJp
bmcqIHN0cmluZywgVUNoYXIgcHJldmlvdXMpCiAgICAgICAgICAgICBzdHJpbmdXaXRoUHJldmlv
dXNbaV0gPSBzdHJpbmdJbXBsW2kgLSAxXTsKICAgICB9CiAKLSAgICBUZXh0QnJlYWtJdGVyYXRv
ciogYm91bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2
aW91cy5jaGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKKyAgICBVQnJlYWtJdGVyYXRvciogYm91
bmRhcnkgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZ1dpdGhQcmV2aW91cy5j
aGFyYWN0ZXJzKCksIGxlbmd0aCArIDEpKTsKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTE2MSw4ICsxNjEsOCBAQCB2b2lkIG1ha2VDYXBpdGFsaXplZChTdHJpbmcq
IHN0cmluZywgVUNoYXIgcHJldmlvdXMpCiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5n
dGgpOwogCiAgICAgaW50MzJfdCBlbmRPZldvcmQ7Ci0gICAgaW50MzJfdCBzdGFydE9mV29yZCA9
IHRleHRCcmVha0ZpcnN0KGJvdW5kYXJ5KTsKLSAgICBmb3IgKGVuZE9mV29yZCA9IHRleHRCcmVh
a05leHQoYm91bmRhcnkpOyBlbmRPZldvcmQgIT0gVGV4dEJyZWFrRG9uZTsgc3RhcnRPZldvcmQg
PSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHRleHRCcmVha05leHQoYm91bmRhcnkpKSB7CisgICAg
aW50MzJfdCBzdGFydE9mV29yZCA9IHVicmtfZmlyc3QoYm91bmRhcnkpOworICAgIGZvciAoZW5k
T2ZXb3JkID0gdWJya19uZXh0KGJvdW5kYXJ5KTsgZW5kT2ZXb3JkICE9IFVCUktfRE9ORTsgc3Rh
cnRPZldvcmQgPSBlbmRPZldvcmQsIGVuZE9mV29yZCA9IHVicmtfbmV4dChib3VuZGFyeSkpIHsK
ICAgICAgICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBJZ25vcmUgZmlyc3QgY2hhciBvZiBwcmV2aW91
cyBzdHJpbmcKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nSW1wbFtzdGFydE9mV29y
ZCAtIDFdID09IG5vQnJlYWtTcGFjZSA/IG5vQnJlYWtTcGFjZSA6IHVfdG90aXRsZShzdHJpbmdX
aXRoUHJldmlvdXNbc3RhcnRPZldvcmRdKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydE9m
V29yZCArIDE7IGkgPCBlbmRPZldvcmQ7IGkrKykKQEAgLTE0NjksMTIgKzE0NjksMTIgQEAgaW50
IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICBy
ZXR1cm4gY3VycmVudCAtIDE7CiAKICAgICBTdHJpbmdJbXBsKiB0ZXh0SW1wbCA9IG1fdGV4dC5p
bXBsKCk7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJ
dGVyYXRvcihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxl
bmd0aCgpKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gY3Vyc29yTW92ZW1lbnRJ
dGVyYXRvcihTdHJpbmdWaWV3KHRleHRJbXBsLT5jaGFyYWN0ZXJzMTYoKSwgdGV4dEltcGwtPmxl
bmd0aCgpKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAx
OwogCi0gICAgbG9uZyByZXN1bHQgPSB0ZXh0QnJlYWtQcmVjZWRpbmcoaXRlcmF0b3IsIGN1cnJl
bnQpOwotICAgIGlmIChyZXN1bHQgPT0gVGV4dEJyZWFrRG9uZSkKKyAgICBsb25nIHJlc3VsdCA9
IHVicmtfcHJlY2VkaW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKKyAgICBpZiAocmVzdWx0ID09IFVC
UktfRE9ORSkKICAgICAgICAgcmVzdWx0ID0gY3VycmVudCAtIDE7CiAKIApAQCAtMTUyMyw3ICsx
NTIzLDcgQEAgaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlv
bihpbnQgY3VycmVudCkgY29uc3QKICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAg
U3RyaW5nSW1wbCYgdGV4dCA9ICptX3RleHQuaW1wbCgpOwogCi0gICAgLy8gRklYTUU6IFVuY2xl
YXIgd2h5IHRoaXMgaGFzIHNvIG11Y2ggaGFuZHJvbGxlZCBjb2RlIHJhdGhlciB0aGFuIHVzaW5n
IFRleHRCcmVha0l0ZXJhdG9yLgorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoeSB0aGlzIGhhcyBz
byBtdWNoIGhhbmRyb2xsZWQgY29kZSByYXRoZXIgdGhhbiB1c2luZyBVQnJlYWtJdGVyYXRvci4K
ICAgICAvLyBBbHNvIHVuY2xlYXIgd2h5IHRoaXMgaXMgc28gZGlmZmVyZW50IGZyb20gYWR2YW5j
ZUJ5Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UuCiAKICAgICAvLyBGSVhNRTogU2VlbXMgbGlr
ZSB0aGlzIGZhbmNpZXIgY2FzZSBjb3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMgbm93LCBu
bwpAQCAtMTY0OSwxMiArMTY0OSwxMiBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQg
Y3VycmVudCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgU3RyaW5n
SW1wbCogdGV4dEltcGwgPSBtX3RleHQuaW1wbCgpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hh
cmFjdGVyczE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvciA9IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyh0ZXh0SW1wbC0+Y2hh
cmFjdGVyczE2KCksIHRleHRJbXBsLT5sZW5ndGgoKSkpOwogICAgIGlmICghaXRlcmF0b3IpCiAg
ICAgICAgIHJldHVybiBjdXJyZW50ICsgMTsKIAotICAgIGxvbmcgcmVzdWx0ID0gdGV4dEJyZWFr
Rm9sbG93aW5nKGl0ZXJhdG9yLCBjdXJyZW50KTsKLSAgICBpZiAocmVzdWx0ID09IFRleHRCcmVh
a0RvbmUpCisgICAgbG9uZyByZXN1bHQgPSB1YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgY3VycmVu
dCk7CisgICAgaWYgKHJlc3VsdCA9PSBVQlJLX0RPTkUpCiAgICAgICAgIHJlc3VsdCA9IGN1cnJl
bnQgKyAxOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3Iu
aAppbmRleCBhZWU3NWE0NmZhZjA0MTAyMzM0MTBmYmMzOWExMGY0ZGMyY2I1OTU3Li4wZmJlNjg1
MzZlNTJiYzVkODQ3ZTcxMTZjNmQyOTUwZmVmMzJlMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJ
dGVyYXRvci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQnJlYWtMaW5lcy5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93
Q29udGVudHMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
QnJlYWtlci5oCmluZGV4IGJmZDk4NjdhNDVlMWE2NDI2MjI2NWMxMDE2MzQ3ZDM0YjZkNzBiY2Iu
LjBjOWQ5ZjhjNzg0ZmJhMmZkZTdmNWYyZjMwYmUzZmQ5N2YzYzU5ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2lu
Y2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lv
cy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlL
aXRTdXBwb3J0Lm1tCmluZGV4IDg5ZWIyYTMyOWZiY2FlMDU1MmUyYjFjNjUyMmNiM2I3YmE2NTg0
OTUuLmM0ZWZjMmU0ZGUxMGQwMTU3N2Q2NTQ1ODlkNjE3MmI5NjMzODkwZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC00MCw3ICs0MCw2IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4v
ZHlsZFNQSS5oPgotI2ltcG9ydCA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2lt
cG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKaW5kZXggOGUyOTQyNTkzNGU0YmJm
Yjc4ZWQ4ZmVjOGI4NzY5NmUzNzUxNmIzYi4uM2RmODM2NGQ1NGZhOWE4MjJhOWMzNGZjNDQ2ODMw
YWIxZDgwYmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0
Q2hlY2tlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9UZXh0Q2hl
Y2tlckVmbC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFRleHRDaGVja2VyOjpjbG9zZVNw
ZWxsRG9jdW1lbnRXaXRoVGFnKGludDY0X3QgdGFnKQogc3RhdGljIHVuc2lnbmVkIG5leHRXb3Jk
T2Zmc2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAgICAv
LyBGSVhNRTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBjb3Vs
ZCBiZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFrKCkg
bGVhdmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRp
b24gYXQKKyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVyYXRv
ciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAgICAg
ICAgb3IgYWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAgICAg
Ly8gICAgICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0IHBy
b3Blcmx5IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0IHJl
c2V0dGluZyB0aGUgaXRlcmF0b3IuCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHVuc2lnbmVk
IG5leHRXb3JkT2Zmc2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkK
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7CiAKICAgICB1bnNpZ25lZCB3b3JkT2Zmc2V0
ID0gY3VycmVudE9mZnNldDsKLSAgICB3aGlsZSAod29yZE9mZnNldCA8IHRleHQubGVuZ3RoKCkg
JiYgaXNUZXh0QnJlYWsodGV4dEl0ZXJhdG9yLCB3b3JkT2Zmc2V0KSkKKyAgICB3aGlsZSAod29y
ZE9mZnNldCA8IHRleHQubGVuZ3RoKCkgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwg
d29yZE9mZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0cmVh
dCB0aGUgd29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMTc1LDcgKzE3NSw3IEBA
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFn
cmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgICAgIC8vIGludm9sdmUgdGhlIGNsaWVudCB0
byBjaGVjayBzcGVsbGluZyBmb3IgdGhlbS4KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbmV4
dFdvcmRPZmZzZXQodGV4dCwgMCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aFN0cmlwID0gdGV4
dC5sZW5ndGgoKTsKLSAgICAgICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiBpc1RleHRCcmVh
ayh0ZXh0SXRlcmF0b3IsIGxlbmd0aFN0cmlwIC0gMSkpCisgICAgICAgIHdoaWxlIChsZW5ndGhT
dHJpcCA+IDAgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRvciwgbGVuZ3RoU3RyaXAgLSAx
KSkKICAgICAgICAgICAgIC0tbGVuZ3RoU3RyaXA7CiAKICAgICAgICAgd2hpbGUgKG9mZnNldCA8
IGxlbmd0aFN0cmlwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1RleHRDaGVja2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENo
ZWNrZXJHdGsuY3BwCmluZGV4IGM2ZGNmMTM4NWUxNzQ5YzY0Nzk3NDkwM2Y2ZTgyMjg3MDdiNmU5
MDYuLjI1MTNjYmQ2OTFjYmI0NTI3NjY4ZDg2YjU0NTMwMjVhZWNlNjczZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckVuY2hhbnQuaD4K
KyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCkBAIC0yMjYsMTYg
KzIyNywxNiBAQCB2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNz
UmVmUHRyPFRleHRDaGVja2VyQ29tcGxldGlvbj4gY29tcAogc3RhdGljIHVuc2lnbmVkIG5leHRX
b3JkT2Zmc2V0KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgY3VycmVudE9mZnNldCkKIHsKICAg
ICAvLyBGSVhNRTogYXZvaWQgY3JlYXRpbmcgdGV4dEl0ZXJhdG9yIG9iamVjdCBoZXJlLCBpdCBj
b3VsZCBiZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuCi0gICAgLy8gICAgICAgIGlzVGV4dEJyZWFr
KCkgbGVhdmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9z
aXRpb24gYXQKKyAgICAvLyAgICAgICAgdWJya19pc0JvdW5kYXJ5KCkgbGVhdmVzIHRoZSBpdGVy
YXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKICAgICAvLyAg
ICAgICAgb3IgYWZ0ZXIgIm9mZnNldCIgKHVicmtfaXNCb3VuZGFyeSBzaWRlIGVmZmVjdCkuCiAg
ICAgLy8gICAgICAgIEZvciBtYW55IHdvcmQgc2VwYXJhdG9ycywgdGhlIG1ldGhvZCBkb2Vzbid0
IHByb3Blcmx5IGRldGVybWluZSB0aGUgYm91bmRhcmllcwogICAgIC8vICAgICAgICB3aXRob3V0
IHJlc2V0dGluZyB0aGUgaXRlcmF0b3IuCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRleHRJdGVy
YXRvciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiB0ZXh0
SXRlcmF0b3IgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKICAgICBpZiAoIXRleHRJdGVyYXRv
cikKICAgICAgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQ7CiAKICAgICB1bnNpZ25lZCB3b3JkT2Zm
c2V0ID0gY3VycmVudE9mZnNldDsKLSAgICB3aGlsZSAod29yZE9mZnNldCA8IHRleHQubGVuZ3Ro
KCkgJiYgaXNUZXh0QnJlYWsodGV4dEl0ZXJhdG9yLCB3b3JkT2Zmc2V0KSkKKyAgICB3aGlsZSAo
d29yZE9mZnNldCA8IHRleHQubGVuZ3RoKCkgJiYgdWJya19pc0JvdW5kYXJ5KHRleHRJdGVyYXRv
ciwgd29yZE9mZnNldCkpCiAgICAgICAgICsrd29yZE9mZnNldDsKIAogICAgIC8vIERvIG5vdCB0
cmVhdCB0aGUgd29yZCdzIGJvdW5kYXJ5IGFzIGEgc2VwYXJhdG9yLgpAQCAtMjU4LDcgKzI1OSw3
IEBAIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBh
cmFncmFwaChpbnQ2NF90IHNwZWxsRG9jdW1lCiAgICAgaWYgKCEoY2hlY2tpbmdUeXBlcyAmIFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZykpCiAgICAgICAgIHJldHVybiBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PigpOwogCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRleHRJdGVyYXRvciA9IHdv
cmRCcmVha0l0ZXJhdG9yKHRleHQpOworICAgIFVCcmVha0l0ZXJhdG9yKiB0ZXh0SXRlcmF0b3Ig
PSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0KTsKICAgICBpZiAoIXRleHRJdGVyYXRvcikKICAgICAg
ICAgcmV0dXJuIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+KCk7CiAKQEAgLTI2Niw3ICsyNjcs
NyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoaW50NjRfdCBzcGVsbERvY3VtZQogICAgIC8vIGludm9sdmUgdGhlIGNsaWVudCB0
byBjaGVjayBzcGVsbGluZyBmb3IgdGhlbS4KICAgICB1bnNpZ25lZCBvZmZzZXQgPSBuZXh0V29y
ZE9mZnNldCh0ZXh0LCAwKTsKICAgICB1bnNpZ25lZCBsZW5ndGhTdHJpcCA9IHRleHQubGVuZ3Ro
KCk7Ci0gICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiBpc1RleHRCcmVhayh0ZXh0SXRlcmF0
b3IsIGxlbmd0aFN0cmlwIC0gMSkpCisgICAgd2hpbGUgKGxlbmd0aFN0cmlwID4gMCAmJiB1YnJr
X2lzQm91bmRhcnkodGV4dEl0ZXJhdG9yLCBsZW5ndGhTdHJpcCAtIDEpKQogICAgICAgICAtLWxl
bmd0aFN0cmlwOwogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcGFyYWdyYXBoQ2hl
Y2tpbmdSZXN1bHQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>