<?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>175172</bug_id>
          
          <creation_ts>2017-08-03 19:00:33 -0700</creation_ts>
          <short_desc>Use enum classes within FileSystem</short_desc>
          <delta_ts>2017-11-15 09:41:48 -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>Platform</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>chris.reid</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1335085</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-08-03 19:00:33 -0700</bug_when>
    <thetext>Turn FileOpenMode, FileSeekOrigin, and FileLock mode enums into enum classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335091</commentid>
    <comment_count>1</comment_count>
      <attachid>317198</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-08-03 19:27:24 -0700</bug_when>
    <thetext>Created attachment 317198
Patch

Moves over to enum classes. Let me know if I should use a fixed type for the enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335116</commentid>
    <comment_count>2</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-08-03 19:56:17 -0700</bug_when>
    <thetext>Well at least it worked on windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368678</commentid>
    <comment_count>3</comment_count>
      <attachid>326129</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-06 10:11:48 -0800</bug_when>
    <thetext>Created attachment 326129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368679</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-06 10:13:44 -0800</bug_when>
    <thetext>Attachment 326129 did not pass style-queue:


ERROR: Source/WTF/wtf/EnumTraits.h:63:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368683</commentid>
    <comment_count>5</comment_count>
      <attachid>326130</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-06 10:18:10 -0800</bug_when>
    <thetext>Created attachment 326130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368700</commentid>
    <comment_count>6</comment_count>
      <attachid>326133</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-06 10:53:38 -0800</bug_when>
    <thetext>Created attachment 326133
Patch

Removing what seems to be unnecessary explicit templates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368717</commentid>
    <comment_count>7</comment_count>
      <attachid>326133</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-06 11:22:17 -0800</bug_when>
    <thetext>Comment on attachment 326133
Patch

r?

One concern is that WebCore::FileSystem::FileOpenMode::&lt;Enum&gt; is a bit namespace heavy.
I added &apos;using namespace WebCore::FileSystem&apos; where this namespace chain occurs multiple times.
Let me know if it is preferable to move these enum classes out of the filesystem namespace or even in to its own file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368753</commentid>
    <comment_count>8</comment_count>
      <attachid>326133</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-06 12:20:32 -0800</bug_when>
    <thetext>Comment on attachment 326133
Patch

Clearing flags on attachment: 326133

Committed r224505: &lt;https://trac.webkit.org/changeset/224505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368754</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-06 12:20:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369030</commentid>
    <comment_count>10</comment_count>
      <attachid>326133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-07 09:14:25 -0800</bug_when>
    <thetext>Comment on attachment 326133
Patch

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

&gt; Source/WebCore/platform/FileSystem.h:77
&gt; +enum class FileOpenMode {

When changing to an enum class we should consider shortening names, since the enum name is always a qualifier. For example, these names should just be Read/Write/EventsOnly or possibly ForRead/ForWrite/ForEventsOnly if that seems much clearer. There is no need for the OpenFor prefix when FileOpenMode:: is already a prefix.

Also no need for the &quot;= 0&quot;.

&gt; Source/WebCore/platform/FileSystem.h:85
&gt; +enum class FileSeekOrigin {

Same here: Beginning/Current/End.

Also no need for the &quot;= 0&quot;.

&gt; Source/WebCore/platform/FileSystem.h:91
&gt; +enum class FileLockMode {

Same here: Shared, Exclusive, Nonblocking.

But an enum class is not a good fit for masks that need to be or-ed together. In modern WebKit code this should be an OptionSet instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369031</commentid>
    <comment_count>11</comment_count>
      <attachid>326133</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-07 09:15:20 -0800</bug_when>
    <thetext>Comment on attachment 326133
Patch

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

&gt;&gt; Source/WebCore/platform/FileSystem.h:91
&gt;&gt; +enum class FileLockMode {
&gt; 
&gt; Same here: Shared, Exclusive, Nonblocking.
&gt; 
&gt; But an enum class is not a good fit for masks that need to be or-ed together. In modern WebKit code this should be an OptionSet instead.

Note that &quot;nonblocking&quot; is a single word so it’s incorrect to capitalize the &quot;B&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369705</commentid>
    <comment_count>12</comment_count>
      <attachid>326406</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-08 16:52:42 -0800</bug_when>
    <thetext>Created attachment 326406
Patch - Additional Cleanup

Thanks for the feedback Darin. Here&apos;s a patch addressing your suggestions.

&gt; But an enum class is not a good fit for masks that need to be or-ed together. In modern WebKit code this should be an OptionSet instead.

Ah, I didn&apos;t realize WebKit had that. I have updated uses of the FileLockMode enum class to use an OptionSet instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369708</commentid>
    <comment_count>13</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-11-08 17:00:45 -0800</bug_when>
    <thetext>Reopening for cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369720</commentid>
    <comment_count>14</comment_count>
      <attachid>326412</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-08 17:24:26 -0800</bug_when>
    <thetext>Created attachment 326412
Patch - Additional Cleanup

Reuploading the last patch so it can get queued in to EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369953</commentid>
    <comment_count>15</comment_count>
      <attachid>326412</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-09 10:33:37 -0800</bug_when>
    <thetext>Comment on attachment 326412
Patch - Additional Cleanup

Clearing flags on attachment: 326412

Committed r224635: &lt;https://trac.webkit.org/changeset/224635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1369954</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-09 10:33:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371963</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:41:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317198</attachid>
            <date>2017-08-03 19:27:24 -0700</date>
            <delta_ts>2017-11-06 11:23:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175172.diff</filename>
            <type>text/plain</type>
            <size>30593</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMTNiZDdlZmE1MS4uZDRhZmM0NDkwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNy0wOC0wMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgorCisgICAgICAgIFVzZSBlbnVtIGNsYXNzZXMgd2l0aGluIEZpbGVTeXN0ZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTE3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9P
cmlnaW5Mb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yaWdpbkxvY2s6OmxvY2spOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJl
YW06Om9wZW5Gb3JSZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGaWxlTW9uaXRvcjo6RmlsZU1vbml0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlbkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6bG9ja0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6
c2F2ZVJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6
bG9hZEZpbGVUb0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6b3Bl
bkNvbnRlbnRGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlbkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6bG9ja0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
ZWtGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVEZXZpY2VJZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luOjpzdHJpbmdXaXRoQ29udGVudHNPZkZpbGUpOgorCiAyMDE3LTA4LTAzICBZb3NoaWFr
aSBKaXRzdWthd2EgIDxqaXRzdUByZC5zY2VpLnNvbnkuY28uanA+CiAKICAgICAgICAgW1dlYkNv
cmVdIFNvcnQgWGNvZGUgcHJvamVjdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKaW5kZXggNmYwODgzNzNiMTguLjdkYTg2ZWM2
ZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdp
bkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2lu
TG9jay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBPcmlnaW5Mb2NrOjpsb2NrKCkKICAgICBt
X211dGV4LmxvY2soKTsKIAogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgbV9sb2NrSGFuZGxlID0g
b3BlbkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1lLCBPcGVuRm9yV3JpdGUpOworICAgIG1fbG9j
a0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgRmlsZU9wZW5Nb2RlOjpP
cGVuRm9yV3JpdGUpOwogICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkgewogICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGdldCBoZXJlIGlzIGlm
IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgbG9jawogICAgICAgICAvLyBoYXMgYmVlbiBk
ZWxldGVkIG9yIHdlIHdlcmUgZ2l2ZW4gYSBwYXRoIHRvIGEgbm9uLWV4aXN0YW50IGRpcmVjdG9y
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGFmZjg2OTkyZTUwLi5jOGM1NmU1MTAyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZm
ZXImIGRhdAogICAgICAgICBmdWxsUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJl
Y3RvcnksIHBhdGgpOwogICAgIH0gd2hpbGUgKGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGRp
cmVjdG9yeSB8fCBmaWxlRXhpc3RzKGZ1bGxQYXRoKSk7CiAgICAgCi0gICAgUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSA9IG9wZW5GaWxlKGZ1bGxQYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBvcGVuRmlsZShmdWxsUGF0aCwgRmlsZU9wZW5Nb2Rl
OjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKaW5kZXggZDM2MjQzZGU0MGQu
LmE3MTEyMzA1NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXRoOwotICAgIEZp
bGVPcGVuTW9kZSBtX21vZGUgeyBPcGVuRm9yUmVhZCB9OworICAgIEZpbGVPcGVuTW9kZSBtX21v
ZGUgeyBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkIH07CiAgICAgUGxhdGZvcm1GaWxlSGFuZGxl
IG1fZmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5kZXggYjE4YjFjM2U5N2QuLjgyZmVlY2Y1
MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcApAQCAtNzQsMTMgKzc0
LDEzIEBAIGJvb2wgRmlsZVN0cmVhbTo6b3BlbkZvclJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBs
b25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgLy8gT3BlbiB0aGUgZmlsZS4KLSAgICBtX2hhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5G
b3JSZWFkKTsKKyAgICBtX2hhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6T3Bl
bkZvclJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEp1bXAgdG8gdGhlIGJlZ2lubmluZyBwb3NpdGlvbiBpZiB0
aGUgZmlsZSBoYXMgYmVlbiBzbGljZWQuCiAgICAgaWYgKG9mZnNldCA+IDApIHsKLSAgICAgICAg
aWYgKHNlZWtGaWxlKG1faGFuZGxlLCBvZmZzZXQsIFNlZWtGcm9tQmVnaW5uaW5nKSA8IDApCisg
ICAgICAgIGlmIChzZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbjo6U2Vl
a0Zyb21CZWdpbm5pbmcpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKaW5kZXggYzE5MWEwMTkzNmMuLjU1
Njg3ZDNjMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcApAQCAtMjA0
LDcgKzIwNCw3IEBAIFN0cmluZyBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1Ns
YXNoKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVI
YW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkKIHsK
LSAgICBhdXRvIHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKKyAgICBhdXRv
IHNvdXJjZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwogCiAg
ICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCBhZDU0MDVjMzM5MS4uMzlmYTU3ZGM1
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTY4LDcgKzY4LDcgQEAg
dHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOwogY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxl
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKICNlbmRpZgogCi1lbnVtIEZpbGVPcGVu
TW9kZSB7CitlbnVtIGNsYXNzIEZpbGVPcGVuTW9kZSB7CiAgICAgT3BlbkZvclJlYWQgPSAwLAog
ICAgIE9wZW5Gb3JXcml0ZSwKICNpZiBPUyhEQVJXSU4pCkBAIC03NiwxMyArNzYsMTMgQEAgZW51
bSBGaWxlT3Blbk1vZGUgewogI2VuZGlmCiB9OwogCi1lbnVtIEZpbGVTZWVrT3JpZ2luIHsKK2Vu
dW0gY2xhc3MgRmlsZVNlZWtPcmlnaW4gewogICAgIFNlZWtGcm9tQmVnaW5uaW5nID0gMCwKICAg
ICBTZWVrRnJvbUN1cnJlbnQsCiAgICAgU2Vla0Zyb21FbmQKIH07CiAKLWVudW0gRmlsZUxvY2tN
b2RlIHsKK2VudW0gY2xhc3MgRmlsZUxvY2tNb2RlIHsKICAgICBMb2NrU2hhcmVkID0gMSwKICAg
ICBMb2NrRXhjbHVzaXZlID0gMiwKICAgICBMb2NrTm9uQmxvY2tpbmcgPSA0CkBAIC0xMzUsNyAr
MTM1LDcgQEAgV0VCQ09SRV9FWFBPUlQgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIC8vIFJldHVybnMgbnVtYmVyIG9mIGJ5
dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgogV0VCQ09S
RV9FWFBPUlQgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpOwogCi1XRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFu
ZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgRmlsZUxvY2tNb2RlID0gTG9j
a0V4Y2x1c2l2ZSk7CitXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExv
Y2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgRmlsZUxvY2tNb2RlID0gRmlsZUxv
Y2tNb2RlOjpMb2NrRXhjbHVzaXZlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5sb2NrQW5kQ2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKIC8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9m
IHRoZSBmaWxlIGZvdW5kIGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5t
bQppbmRleCAzOTVkZjc3NzE5YS4uNjYzM2VmN2IyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQpAQCAtNDMsNyArNDMsNyBAQCBG
aWxlTW9uaXRvcjo6RmlsZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVl
PiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgogICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9y
RXZlbnRzT25seSk7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1v
ZGU6Ok9wZW5Gb3JFdmVudHNPbmx5KTsKICAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcywgIkZhaWxlZCB0byBvcGVuIHN0YXRpc3RpY3MgZmlsZSBmb3IgbW9uaXRvcmluZzog
JXMiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IGE2ZTJlZWVmNzA1
Li40NDljZmE1ZTdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9G
aWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKQEAgLTMwMiw5ICszMDIsOSBAQCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3Bl
bkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKIAogICAgIEdSZWZQ
dHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxlbmFtZS5n
ZXQoKSkpOwogICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBpZiAobW9kZSA9
PSBPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFk
KQogICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAw
LCAwKTsKLSAgICBlbHNlIGlmIChtb2RlID09IE9wZW5Gb3JXcml0ZSkgeworICAgIGVsc2UgaWYg
KG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpIHsKICAgICAgICAgaWYgKGdfZmls
ZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklMRV9URVNU
X0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKSkKICAgICAgICAgICAgIGlvU3RyZWFt
ID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOwogICAgICAgICBlbHNl
CkBAIC0zMjgsMTMgKzMyOCwxMyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogewogICAgIEdT
ZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CiAgICAgc3dpdGNoIChvcmlnaW4pIHsKLSAg
ICBjYXNlIFNlZWtGcm9tQmVnaW5uaW5nOgorICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OlNlZWtG
cm9tQmVnaW5uaW5nOgogICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgU2Vla0Zyb21DdXJyZW50OgorICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46
OlNlZWtGcm9tQ3VycmVudDoKICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFNlZWtGcm9tRW5kOgorICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46
OlNlZWtGcm9tRW5kOgogICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CkBAIC00MjIsOSArNDIyLDkgQEAgc3RkOjpvcHRpb25hbDxpbnQz
Ml90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogI2lmIFVTRShGSUxF
X0xPQ0spCiBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIEZpbGVMb2Nr
TW9kZSBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IExvY2tTaGFy
ZWQsIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQo
TE9DS19FWCA9PSBMb2NrRXhjbHVzaXZlLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0
ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gTG9ja05vbkJsb2NraW5nLCBMb2Nr
Tm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9D
S19TSCA9PSBGaWxlTG9ja01vZGU6OkxvY2tTaGFyZWQsIEZpbGVMb2NrTW9kZTo6TG9ja1NoYXJl
ZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IEZp
bGVMb2NrTW9kZTo6TG9ja0V4Y2x1c2l2ZSwgRmlsZUxvY2tNb2RlOjpMb2NrRXhjbHVzaXZlRW5j
b2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gRmlsZUxv
Y2tNb2RlOjpMb2NrTm9uQmxvY2tpbmcsIEZpbGVMb2NrTW9kZTo6TG9ja05vbkJsb2NraW5nRW5j
b2RpbmdJc0FzRXhwZWN0ZWQpOwogICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1f
Z2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKICAgICBpbnQgcmVzdWx0ID0g
ZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JB
U0VEKGlucHV0U3RyZWFtKSksIGxvY2tNb2RlKTsKICAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKaW5kZXggMzE0ZTViZjJlNGYuLjQzYWE5ZjMxYTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0
YShSZXNvdXJjZUhhbmRsZSogam9iKQogCiBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9u
c2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFBsYXRm
b3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0gb3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgT3Bl
bkZvcldyaXRlKTsKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGVhZGVyRmlsZSA9IG9wZW5GaWxl
KG1faGVhZGVyRmlsZW5hbWUsIEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaGVhZGVyRmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNo
ZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2hlYWRlckZpbGVuYW1l
LmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNiw3ICsyMjYs
NyBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3Ry
aW5nJiB1cmwpCiBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0
cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIC8vIE9wZW4gdGhl
IGZpbGUKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gb3BlbkZpbGUoZmlsZXBh
dGgsIE9wZW5Gb3JSZWFkKTsKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gb3Bl
bkZpbGUoZmlsZXBhdGgsIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwogICAgIGlmICghaXNI
YW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJy
b3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBDdXJs
Q2FjaGVFbnRyeTo6b3BlbkNvbnRlbnRGaWxlKCkKICAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2Nv
bnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgbV9jb250ZW50Rmls
ZSA9IG9wZW5GaWxlKG1fY29udGVudEZpbGVuYW1lLCBPcGVuRm9yV3JpdGUpOworICAgIG1fY29u
dGVudEZpbGUgPSBvcGVuRmlsZShtX2NvbnRlbnRGaWxlbmFtZSwgRmlsZU9wZW5Nb2RlOjpPcGVu
Rm9yV3JpdGUpOwogCiAgICAgaWYgKGlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGUxYjNkNWQ3NWU0Li5iNzhh
Zjg1NzY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2Nh
Y2hlRGlyKTsKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CiAKLSAgICBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gb3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgT3Bl
bkZvclJlYWQpOworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBvcGVuRmlsZShp
bmRleEZpbGVQYXRoLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQoaW5kZXhGaWxlKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIFdhcm5p
bmc6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4
LmRhdCIpOwogCiAgICAgZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKLSAgICBQbGF0Zm9ybUZp
bGVIYW5kbGUgaW5kZXhGaWxlID0gb3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgT3BlbkZvcldyaXRl
KTsKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gb3BlbkZpbGUoaW5kZXhGaWxl
UGF0aCwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaXNIYW5kbGVWYWxp
ZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxk
IG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgv
RmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBkZmY5Yjg1OTg1NC4uNDIyZmM3Y2FhMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApA
QCAtNzksMTIgKzc5LDEyIEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsKIAogICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOwotICAgIGlmIChtb2Rl
ID09IE9wZW5Gb3JSZWFkKQorICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3BlbkZvclJl
YWQpCiAgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKLSAgICBlbHNlIGlmIChtb2Rl
ID09IE9wZW5Gb3JXcml0ZSkKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3Bl
bkZvcldyaXRlKQogICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8
IE9fVFJVTkMpOwogI2lmIE9TKERBUldJTikKLSAgICBlbHNlIGlmIChtb2RlID09IE9wZW5Gb3JF
dmVudHNPbmx5KQorICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yRXZl
bnRzT25seSkKICAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsKICNlbmRpZgogCkBA
IC0xMDMsMTMgKzEwMywxMyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogewogICAgIGludCB3
aGVuY2UgPSBTRUVLX1NFVDsKICAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgU2Vla0Zy
b21CZWdpbm5pbmc6CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21CZWdpbm5pbmc6
CiAgICAgICAgIHdoZW5jZSA9IFNFRUtfU0VUOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
ZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUN1cnJlbnQ6
CiAgICAgICAgIHdoZW5jZSA9IFNFRUtfQ1VSOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
ZWtGcm9tRW5kOgorICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tRW5kOgogICAgICAg
ICB3aGVuY2UgPSBTRUVLX0VORDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE0
Nyw5ICsxNDcsOSBAQCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAjaWYgVVNFKEZJTEVfTE9DSykKIGJvb2wgbG9ja0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZUxvY2tNb2RlIGxvY2tNb2RlKQogewot
ICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gTG9ja1NoYXJlZCwgTG9ja1NoYXJlZEVuY29k
aW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IExvY2tFeGNs
dXNpdmUsIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9B
U1NFUlQoTE9DS19OQiA9PSBMb2NrTm9uQmxvY2tpbmcsIExvY2tOb25CbG9ja2luZ0VuY29kaW5n
SXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IEZpbGVMb2NrTW9k
ZTo6TG9ja1NoYXJlZCwgRmlsZUxvY2tNb2RlOjpMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0
ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gRmlsZUxvY2tNb2RlOjpMb2NrRXhj
bHVzaXZlLCBGaWxlTG9ja01vZGU6OkxvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBGaWxlTG9ja01vZGU6OkxvY2tOb25CbG9j
a2luZywgRmlsZUxvY2tNb2RlOjpMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
CiAgICAgaW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUpOwogICAgIHJldHVybiAo
cmVzdWx0ICE9IC0xKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAppbmRleCBlY2Y5ZTkwOGRkNy4uYmViMDcyYjQ2MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTM0NiwxMiArMzQ2LDEy
IEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSBtb2RlKQogICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAwOwogICAgIERX
T1JEIHNoYXJlTW9kZSA9IDA7CiAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBPcGVuRm9y
UmVhZDoKKyAgICBjYXNlIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQ6CiAgICAgICAgIGRlc2ly
ZWRBY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CiAgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBP
UEVOX0VYSVNUSU5HOwogICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgT3BlbkZvcldyaXRlOgorICAgIGNhc2UgRmlsZU9wZW5Nb2Rl
OjpPcGVuRm9yV3JpdGU6CiAgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOwog
ICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKICAgICAgICAgYnJl
YWs7CkBAIC0zNzUsOSArMzc1LDkgQEAgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8KIHsKICAgICBE
V09SRCBtb3ZlTWV0aG9kID0gRklMRV9CRUdJTjsKIAotICAgIGlmIChvcmlnaW4gPT0gU2Vla0Zy
b21DdXJyZW50KQorICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQ3Vy
cmVudCkKICAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfQ1VSUkVOVDsKLSAgICBlbHNlIGlmIChv
cmlnaW4gPT0gU2Vla0Zyb21FbmQpCisgICAgZWxzZSBpZiAob3JpZ2luID09IEZpbGVTZWVrT3Jp
Z2luOjpTZWVrRnJvbUVuZCkKICAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfRU5EOwogCiAgICAg
TEFSR0VfSU5URUdFUiBsYXJnZU9mZnNldDsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBib29sIGdldFZv
bHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCiAKIHN0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKIHsKLSAgICBh
dXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIE9wZW5Gb3JSZWFkKTsKKyAgICBh
dXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZv
clJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmNwcAppbmRleCA5MTY4ZTY1YTI2Yi4uOGQyYjYzMjc1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgU3RyaW5n
IFJlbmRlclRoZW1lV2luOjpzdHJpbmdXaXRoQ29udGVudHNPZkZpbGUoQ0ZTdHJpbmdSZWYgbmFt
ZSwgQ0ZTdHJpbmdSZWYgdHkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHJlcXVlc3RlZFVSTFJlZi5nZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBNQVhf
UEFUSCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRs
ZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0gb3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIE9wZW5G
b3JSZWFkKTsKKyAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IG9w
ZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQocmVxdWVzdGVkRmlsZUhhbmRsZSkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjOGYwOGQ4OTA4Ni4uNDMzZWUxMzg4ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMDgtMDMgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KKworICAgICAgICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBGaWxlU3lz
dGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUx
NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpCbG9iRG93bmxvYWRDbGllbnQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6Om9wZW5DYWNoZUZpbGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpSZWNvcmRlcjo6d3JpdGVFdmVudHMpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpj
b21waWxlZFRvRmlsZSk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjppbnZh
bGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZURlY29kZXJGb3JGaWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKToKKwogMjAx
Ny0wOC0wMyAgWW9zaGlha2kgSml0c3VrYXdhICA8aml0c3VAcmQuc2NlaS5zb255LmNvLmpwPgog
CiAgICAgICAgIFtXZWJLaXRdIFNvcnQgWGNvZGUgcHJvamVjdCBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2Fk
Q2xpZW50LmNwcAppbmRleCBjNmZmMTVhM2JiOC4uM2MzODRhMjNiNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25s
b2FkQ2xpZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6
ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUAog
ICAgIH0KIAogICAgIG1fZGVzdGluYXRpb25QYXRoID0gZGVzdGluYXRpb25QYXRoOwotICAgIG1f
ZGVzdGluYXRpb25GaWxlID0gb3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5Gb3JXcml0
ZSk7CisgICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBvcGVuRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCwg
RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIG1fZG93bmxvYWQuZGlkQ3JlYXRlRGVz
dGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwogCiAgICAgbV9kb3dubG9hZC5jb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggMDk2MTI3MzJhNWUuLjBkMzA5MzJkZmVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OmRvd25sb2FkKCkKIAogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZG93bmxvYWQgdG8gJXMiLCB0aGlzLCBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9u
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9kb3dubG9hZEZpbGUgPSBvcGVuRmlsZShtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uLCBPcGVuRm9yV3JpdGUpOworICAgIG1fZG93bmxvYWRGaWxlID0g
b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9y
V3JpdGUpOwogICAgIGlmIChtX2Rvd25sb2FkRmlsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKSB7CiAgICAgICAgIGRpZEZhaWxEb3dubG9hZChjYW5jZWxsZWRFcnJvcihtX2ZpcnN0UmVx
dWVzdCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggNGZlZTEwZWEyNzguLjQyMDNlZjZk
OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRz
VG9GaWxlKCkKIHsKICAgICBpZiAoIW1fc3RvcmFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1
dG8gZmQgPSBXZWJDb3JlOjpvcGVuRmlsZShkdW1wRmlsZVBhdGgoKSwgV2ViQ29yZTo6T3BlbkZv
cldyaXRlKTsKKyAgICBhdXRvIGZkID0gV2ViQ29yZTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCks
IFdlYkNvcmU6OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAoIVdlYkNvcmU6
OmlzSGFuZGxlVmFsaWQoZmQpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBwcm9sb2d1ZSA9
IFN0cmluZygie1xuXCJlbnRyaWVzXCI6IFtcbiIpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFu
YWdlci5jcHAKaW5kZXggMzEzMWMwZjFjNDQuLjY5MDJjMzg2NGE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVNYW5hZ2VyLmNwcApAQCAtNzcsMTEgKzc3LDExIEBAIHZvaWQgTWFuYWdlcjo6aW5pdGlhbGl6
ZShjb25zdCBTdHJpbmcmIHJlY29yZFJlcGxheU1vZGUsIGNvbnN0IFN0cmluZyYgcmVjb3JkUmVw
CiAgICAgREVCVUdfTE9HKCJDYWNoZSBsb2NhdGlvbiA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVC
VUdfU1RSKG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbikpOwogCiAgICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKLSAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRs
ZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1f
cmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgp
LCBXZWJDb3JlOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgfSBlbHNlIGlmIChp
c1JlcGxheWluZygpKSB7Ci0gICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZp
bGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yUmVhZCk7Ci0gICAg
ICAgIG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRo
KCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgICAgIG1fcmVwbGF5RmlsZUhhbmRsZSA9
IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9y
V3JpdGUpOworICAgICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxl
KHJlcG9ydFJlY29yZFBhdGgoKSwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7
CisgICAgICAgIG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExv
YWRQYXRoKCksIFdlYkNvcmU6OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAg
bV9yZXBsYXlGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRo
KCksIFdlYkNvcmU6OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICAgICAgbG9hZFJl
c291cmNlcygpOwogICAgIH0KIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBXZWJDb3JlOjpGaWxlSGFu
ZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29y
ZTo6RmlsZQogICAgIC8vIElmIHdlJ3JlIG9wZW5pbmcgdGhlIGZpbGUgZm9yIHdyaXRpbmcgKGlu
Y2x1ZGluZyBhcHBlbmRpbmcpLCB0aGVuIHRyeQogICAgIC8vIGFnYWluIGFmdGVyIG1ha2luZyBz
dXJlIGFsbCBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgaGF2ZSBiZWVuIGNyZWF0ZWQuCiAKLSAg
ICBpZiAobW9kZSAhPSBXZWJDb3JlOjpPcGVuRm9yUmVhZCkgeworICAgIGlmIChtb2RlICE9IFdl
YkNvcmU6OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpIHsKICAgICAgICAgY29uc3QgYXV0byYg
cGFyZW50RGlyID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShmaWxlUGF0aCk7CiAgICAgICAgIGlm
ICghV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERpcikpIHsKICAgICAgICAgICAg
IERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIGNyZWF0ZSBpbnRlcm1lZGlhdGUg
ZGlyZWN0b3JpZXM6ICIgU1RSSU5HX1NQRUNJRklFUiwgZXJybm8sIERFQlVHX1NUUihwYXJlbnRE
aXIpKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBXZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9w
ZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZQogICAgIC8v
IENvdWxkIG5vdCBvcGVuIHRoZSBmaWxlLiBMb2cgdGhlIGVycm9yIGFuZCBsZWF2ZSwgcmV0dXJu
aW5nIHRoZSBpbnZhbGlkCiAgICAgLy8gZmlsZSBoYW5kbGUuCiAKLSAgICBpZiAobW9kZSA9PSBX
ZWJDb3JlOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9PSBXZWJDb3JlOjpGaWxlT3Blbk1v
ZGU6Ok9wZW5Gb3JSZWFkKQogICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9yICVkIHRyeWlu
ZyB0byBvcGVuICIgU1RSSU5HX1NQRUNJRklFUiAiIGZvciByZWFkaW5nIiwgZXJybm8sIERFQlVH
X1NUUihmaWxlUGF0aCkpOwogICAgIGVsc2UKICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJv
ciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3Igd3JpdGluZyIsIGVy
cm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcApp
bmRleCBlNjYwM2U2MzZkNy4uZWUwNjJjMTJhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRl
ci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlY29yZGVyOjpyZWNvcmRGaW5pc2goY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFJlY29yZGVyOjp3cml0ZUV2
ZW50cygpCiB7CiAgICAgYXV0byBwYXRoID0gTWFuYWdlcjo6c2luZ2xldG9uKCkucmVxdWVzdFRv
UGF0aChtX2luaXRpYWxSZXF1ZXN0KTsKLSAgICBhdXRvIGhhbmRsZSA9IE1hbmFnZXI6OnNpbmds
ZXRvbigpLm9wZW5DYWNoZUZpbGUocGF0aCwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKKyAgICBh
dXRvIGhhbmRsZSA9IE1hbmFnZXI6OnNpbmdsZXRvbigpLm9wZW5DYWNoZUZpbGUocGF0aCwgV2Vi
Q29yZTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9y
eVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAK
aW5kZXggMTUxMzM5MDg4ZGMuLmY4YjgxMGQ4ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJNZW1vcnlTYW1wbGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgV2ViTWVtb3J5U2Ft
cGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlCiAgICAgaWYgKG1fc2FtcGxlTG9nU2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9z
YW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAgICAgbV9zYW1wbGVMb2dGaWxl
UGF0aCA9IHNhbXBsZUxvZ0ZpbGVQYXRoOwotICAgIG1fc2FtcGxlTG9nRmlsZSA9IG9wZW5GaWxl
KG1fc2FtcGxlTG9nRmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgbV9zYW1wbGVMb2dGaWxl
ID0gb3BlbkZpbGUobV9zYW1wbGVMb2dGaWxlUGF0aCwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3Jp
dGUpOwogICAgIHdyaXRlSGVhZGVycygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA2OWNjYTll
NDViZS4uMWY0OTM3NDJlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0
YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3Qg
U3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRpdGlvbnNB
cHBseU9ubHlUb0RvbWFpbiA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxlTGlzdE1l
dGFEYXRhKG1fbWV0YURhdGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBXZWJD
b3JlOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVNlZWtPcmlnaW46
OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJv
ciAmJiBXZWJDb3JlOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVNl
ZWtPcmlnaW46OkZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEpIHsKICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKICAgICAgICAg
ICAgICAgICBtX2ZpbGVFcnJvciA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC00NzUsNyArNDc1
LDcgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6c3luY2hyb25vdXNSZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzKCkKIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNv
bnRlbnRSdWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byBmaWxlID0gV2ViQ29yZTo6b3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQ
YXRoLCBpZGVudGlmaWVyLCBtX2xlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRl
KTsKKyAgICBhdXRvIGZpbGUgPSBXZWJDb3JlOjpvcGVuRmlsZShjb25zdHJ1Y3RlZFBhdGgobV9z
dG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVnYWN5RmlsZW5hbWUpLCBXZWJDb3JlOjpGaWxlT3Bl
bk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogICAgIENvbnRlbnRSdWxlTGlzdE1l
dGFEYXRhIGludmFsaWRIZWFkZXIgPSB7MCwgMCwgMCwgMCwgMCwgMH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBkMzA0NTI1Nzc3OC4uNTg1YTE4N2ZmZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBz
dGF0aWMgYm9vbCBoYXNGaWxlQ2hhbmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRp
bWUgc2luY2UpCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVj
b2RlckZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIGF1dG8gaGFuZGxlID0gb3BlbkFuZExvY2tGaWxlKHBhdGgsIE9wZW5G
b3JSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShwYXRoLCBGaWxlT3Bl
bk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yNjMsNyArMjYzLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OndyaXRlTWVtb3J5
U3RvcmVUb0Rpc2soKQogICAgICAgICBleGNsdWRlRnJvbUJhY2t1cCgpOwogICAgIH0KIAotICAg
IGF1dG8gaGFuZGxlID0gb3BlbkFuZExvY2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgoKSwgT3Bl
bkZvcldyaXRlKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShyZXNvdXJjZUxv
Z0ZpbGVQYXRoKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAoaGFuZGxl
ID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDIxMDU5OTg1MjIwLi5iOWU2NjcyOWZiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA4LTAzICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgVXNlIGVudW0gY2xh
c3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNh
Y2hlKToKKwogMjAxNy0wNy0yNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgogCiAgICAgICAgIEFzeW5jIGltYWdlIGRlY29kaW5nIGZvciBsYXJnZSBpbWFnZXMg
c2hvdWxkIGJlIGRpc2FibGVkIGFmdGVyIHRoZSBmaXJzdCB0aW1lIGEgdGlsZSBpcyBwYWludGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCmluZGV4IGIwZTYwNmU5NDMzLi5jM2EzNTFlNWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTQ4MCw3ICs0ODAs
NyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQog
CiAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7CiAgICAgU3RyaW5nIGFic29sdXRlQ2FjaGVQ
YXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0
aCgpLCBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lKTsKLSAgICBmaWxlID0g
b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIE9wZW5Gb3JSZWFkKTsKKyAgICBmaWxlID0gb3Bl
bkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwogCiAg
ICAgaWYgKCFpc0hhbmRsZVZhbGlkKGZpbGUpKQogICAgICAgICByZXR1cm47CkBAIC01NjYsNyAr
NTY2LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6dXBkYXRlUGVyc2lzdGVudE1ldGFkYXRhQ2Fj
aGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKLSAg
ICBmaWxlID0gb3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAg
ZmlsZSA9IG9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JX
cml0ZSk7CiAKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gb3BlbiBwbHVnaW4gbWV0YWRhdGEgY2FjaGUgZm9yIHNhdmluZyIpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM4NzVi
Zjg1MTZjLi44NzljYmYyZjQ2YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA4LTAzICBEb24gT2xtc3RlYWQg
IDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgVXNlIGVudW0gY2xhc3NlcyB3aXRo
aW4gRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc1MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6cmVhZENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTctMDgtMDMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFRoZSB0ZXN0IGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvYmFzaWMt
dXBncmFkZS5odHRwcy5odG1sIGlzIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCAxZDI0YmE3YjMyZS4uZTE5YTNh
NDkzYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZENvbnRlbnRz
T2ZGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBjb25zdGV4cHIgaW50IGJ1ZmZlclNp
emUgPSAxMDI0OwogCi0gICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6Ok9wZW5G
b3JSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoc291cmNlKSkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKQEAgLTM4MCw3ICszODAsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JU
ZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogICAgIHRlc3RRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewogICAgICAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4
aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCi0gICAgICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUo
dGVtcEZpbGVQYXRoKCksIE9wZW5Gb3JXcml0ZSk7CisgICAgICAgIGF1dG8gaGFuZGxlID0gb3Bl
bkZpbGUodGVtcEZpbGVQYXRoKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICAg
ICAgQVNTRVJUX05FKGhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKICAgICAg
ICAgaW50IHJjID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlTW9uaXRvclRlc3REYXRhLnV0Zjgo
KS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEubGVuZ3RoKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326129</attachid>
            <date>2017-11-06 10:11:48 -0800</date>
            <delta_ts>2017-11-06 10:18:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>175172-3.diff</filename>
            <type>text/plain</type>
            <size>47495</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMjBiMDBjNzlhMGYuLjMwMTA4ZGJlOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTExLTA2ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gZm9y
IGNvbnZlcnRpbmcgZW51bSBjbGFzc2VzIHRvIHRoZWlyIHVuZGVybHlpbmcgdHlwZSB3aGVuIG5l
Y2Vzc2FyeS4KKworICAgICAgICAqIHd0Zi9FbnVtVHJhaXRzLmg6CisKIDIwMTctMTEtMDYgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
W0dUS10gQWx3YXlzIHVzZSBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRCB0byBzZXQgYnVpbGQgdmFy
aWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9FbnVtVHJhaXRzLmgKaW5kZXggN2JkMmUzODc3NzEuLmJiYTk2Zjk2MDVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYv
RW51bVRyYWl0cy5oCkBAIC01OSw2ICs1OSwxMSBAQCBjb25zdGV4cHIgYXV0byBpc1ZhbGlkRW51
bShUIHQpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgYm9vbAog
ICAgIHJldHVybiBFbnVtVmFsdWVDaGVja2VyPFQsIHR5cGVuYW1lIEVudW1UcmFpdHM8RT46OnZh
bHVlcz46OmlzVmFsaWRFbnVtKHQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFPgorY29uc3Rl
eHByIGF1dG8gZW51bVRvVW5kZXJseWluZ1R5cGUoRSBlKSB7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4+KGUpOworfQorCiB9CiAKIHVzaW5nIFdURjo6
aXNWYWxpZEVudW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg3ZmQ1NTU3ODEuLmYxYjkwZDI4ZTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTEtMDYgIENocmlzdG9waGVyIFJlaWQgIDxj
aHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFVzZSBlbnVtIGNsYXNzZXMgd2l0aGluIEZp
bGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgIFVzaW5nIGVu
dW0gY2xhc3NlcyBpbiBmaWxlc3lzdGVtIHRvIGVuZm9yY2Ugc3Ryb25nZXIgdHlwZSBzYWZldHku
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vRmlsZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0u
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNv
Y29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHA6CisKIDIwMTctMTEtMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgSklUIGNhbGwgaW5saW5lIGNhY2hlcyBzaG91bGQgY2FjaGUgY2FsbHMg
dG8gb2JqZWN0cyB3aXRoIGdldENhbGxEYXRhL2dldENvbnN0cnVjdERhdGEgdHJhcHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCmluZGV4
IDMxZDJkMDRiMDE0Li4yMzcyNmFiOGQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgT3Jp
Z2luTG9jazo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NL
KQotICAgIG1fbG9ja0hhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShtX2xvY2tG
aWxlTmFtZSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBtX2xvY2tIYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUobV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAobV9sb2NrSGFuZGxlID09IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgLy8gVGhlIG9ubHkg
d2F5IHdlIGNhbiBnZXQgaGVyZSBpcyBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGxv
Y2sKICAgICAgICAgLy8gaGFzIGJlZW4gZGVsZXRlZCBvciB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0
byBhIG5vbi1leGlzdGFudCBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBhMjE1
MGVkMmZhYy4uYjBlOGNhZDMwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTMwNCw3ICsx
MzA0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXQKICAgICAgICAgZnVsbFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCBwYXRoKTsKICAgICB9
IHdoaWxlIChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBkaXJlY3Rvcnkg
fHwgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aCkpOwogICAgIAotICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmdWxs
UGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZnVsbFBhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAoIWhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5o
CmluZGV4IDU2M2ZlZDk4OTQwLi4xZjcxYmM1MmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVIYW5kbGUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fcGF0aDsKLSAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5
c3RlbTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2Rl
IHsgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCB9OwogICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJl
YW0uY3BwCmluZGV4IGY3NDVkN2MxZGM4Li4wMzg0MDI0M2M4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAKQEAgLTc0LDEzICs3NCwxMyBAQCBib29sIEZpbGVTdHJlYW06
Om9wZW5Gb3JSZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE9wZW4gdGhlIGZpbGUuCi0g
ICAgbV9oYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVu
Rm9yUmVhZCk7CisgICAgbV9oYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZpbGUgaGFzIGJlZW4gc2xp
Y2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChGaWxlU3lzdGVtOjpzZWVr
RmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBGaWxlU3lzdGVtOjpTZWVrRnJvbUJlZ2lubmluZykgPCAw
KQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmls
ZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA8IDApCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0
ZW0uY3BwCmluZGV4IGI4OTQ3NWUwMjU4Li40MThkYmE5MmNmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBTdHJpbmcgbGFzdENvbXBv
bmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpCiAKIGJv
b2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiB0YXJnZXQpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShw
YXRoLCBPcGVuRm9yUmVhZCk7CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBGaWxl
T3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKIAogICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2Up
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgK
aW5kZXggYTZjN2UzZWI3YzIuLjA2OGJmZjRmNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oCkBAIC03NCw3ICs3NCw3IEBAIHR5cGVkZWYgaW50IFBsYXRmb3JtRmlsZUhhbmRs
ZTsKIGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0g
LTE7CiAjZW5kaWYKIAotZW51bSBGaWxlT3Blbk1vZGUgeworZW51bSBjbGFzcyBGaWxlT3Blbk1v
ZGUgewogICAgIE9wZW5Gb3JSZWFkID0gMCwKICAgICBPcGVuRm9yV3JpdGUsCiAjaWYgT1MoREFS
V0lOKQpAQCAtODIsMTMgKzgyLDEzIEBAIGVudW0gRmlsZU9wZW5Nb2RlIHsKICNlbmRpZgogfTsK
IAotZW51bSBGaWxlU2Vla09yaWdpbiB7CitlbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKICAg
ICBTZWVrRnJvbUJlZ2lubmluZyA9IDAsCiAgICAgU2Vla0Zyb21DdXJyZW50LAogICAgIFNlZWtG
cm9tRW5kCiB9OwogCi1lbnVtIEZpbGVMb2NrTW9kZSB7CitlbnVtIGNsYXNzIEZpbGVMb2NrTW9k
ZSB7CiAgICAgTG9ja1NoYXJlZCA9IDEsCiAgICAgTG9ja0V4Y2x1c2l2ZSA9IDIsCiAgICAgTG9j
a05vbkJsb2NraW5nID0gNApAQCAtMTQ1LDcgKzE0NSw3IEBAIFdFQkNPUkVfRVhQT1JUIGludCB3
cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nl
c3NmdWwsIC0xIG90aGVyd2lzZS4KIFdFQkNPUkVfRVhQT1JUIGludCByZWFkRnJvbUZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAotV0VCQ09SRV9FWFBP
UlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBGaWxl
T3Blbk1vZGUsIEZpbGVMb2NrTW9kZSA9IExvY2tFeGNsdXNpdmUpOworV0VCQ09SRV9FWFBPUlQg
UGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmLCBGaWxlT3Bl
bk1vZGUsIEZpbGVMb2NrTW9kZSA9IEZpbGVMb2NrTW9kZTo6TG9ja0V4Y2x1c2l2ZSk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHVubG9ja0FuZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwog
CiAvLyBBcHBlbmRzIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8g
dGhlIG9wZW4gUGxhdGZvcm1GaWxlSGFuZGxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KaW5kZXggNTc4NDM0ZDJkMDcuLjdiNzczZTIw
NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRv
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9y
Q29jb2EubW0KQEAgLTQzLDcgKzQzLDcgQEAgRmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0
IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICBp
ZiAoIW1vZGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvckV2ZW50
c09ubHkpOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yRXZlbnRzT25seSk7CiAgICAgaWYgKGhhbmRs
ZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJGYWlsZWQgdG8gb3BlbiBz
dGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA5MTUwYTc0ZTAxMC4uN2NiNmFlNTZhMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5j
bHVkZSA8c3lzL2ZpbGUuaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR0xpYlV0aWxpdGllcy5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KQEAgLTM2Miw5ICszNjMsOSBAQCBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKIAog
ICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChm
aWxlbmFtZS5nZXQoKSkpOwogICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBp
ZiAobW9kZSA9PSBPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6Ok9w
ZW5Gb3JSZWFkKQogICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxl
LmdldCgpLCAwLCAwKTsKLSAgICBlbHNlIGlmIChtb2RlID09IE9wZW5Gb3JXcml0ZSkgeworICAg
IGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpIHsKICAgICAgICAg
aWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdf
RklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKSkKICAgICAgICAgICAg
IGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOwogICAg
ICAgICBlbHNlCkBAIC0zODgsMTMgKzM4OSwxMyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwog
ewogICAgIEdTZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CiAgICAgc3dpdGNoIChvcmln
aW4pIHsKLSAgICBjYXNlIFNlZWtGcm9tQmVnaW5uaW5nOgorICAgIGNhc2UgRmlsZVNlZWtPcmln
aW46OlNlZWtGcm9tQmVnaW5uaW5nOgogICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vla0Zyb21DdXJyZW50OgorICAgIGNhc2UgRmlsZVNl
ZWtPcmlnaW46OlNlZWtGcm9tQ3VycmVudDoKICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VS
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlZWtGcm9tRW5kOgorICAgIGNhc2UgRmlsZVNl
ZWtPcmlnaW46OlNlZWtGcm9tRW5kOgogICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19FTkQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC00ODIsMTEgKzQ4MywxMSBAQCBzdGQ6Om9w
dGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiAj
aWYgVVNFKEZJTEVfTE9DSykKIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgRmlsZUxvY2tNb2RlIGxvY2tNb2RlKQogewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0gg
PT0gTG9ja1NoYXJlZCwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01Q
SUxFX0FTU0VSVChMT0NLX0VYID09IExvY2tFeGNsdXNpdmUsIExvY2tFeGNsdXNpdmVFbmNvZGlu
Z0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBMb2NrTm9uQmxv
Y2tpbmcsIExvY2tOb25CbG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxF
X0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2Rl
OjpMb2NrU2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tN
b2RlOjpMb2NrRXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsK
KyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUo
RmlsZUxvY2tNb2RlOjpMb2NrTm9uQmxvY2tpbmcpLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lz
QXNFeHBlY3RlZCk7CiAgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5w
dXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhn
X2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5w
dXRTdHJlYW0pKSwgbG9ja01vZGUpOworICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVz
Y3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0p
KSwgV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShsb2NrTW9kZSkpOwogICAgIHJldHVybiByZXN1
bHQgIT0gLTE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDAzNWE2YjE5MDYzLi4xM2Y3MzhmMTg0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRy
eTo6cmVhZENhY2hlZERhdGEoUmVzb3VyY2VIYW5kbGUqIGpvYikKIAogYm9vbCBDdXJsQ2FjaGVF
bnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGVhZGVyRmlsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKG1faGVhZGVyRmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JX
cml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRlckZpbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlk
KGhlYWRlckZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxk
IG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgbV9oZWFkZXJGaWxlbmFtZS5sYXRpbjEoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBDdXJs
Q2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQogYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVwYXRo
LCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKIHsKICAgICAvLyBPcGVuIHRoZSBmaWxlCi0gICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGZpbGVwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVw
YXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAgICBpZiAoIUZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgewogICAgICAgICBMT0coTmV0d29y
aywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxuIiwgZmlsZXBhdGgu
bGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzYzLDcgKzM2Myw3
IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6Om9wZW5Db250ZW50RmlsZSgpCiAgICAgaWYgKEZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAotICAgIG1fY29udGVudEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX2NvbnRl
bnRGaWxlbmFtZSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBtX2NvbnRlbnRGaWxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9jb250ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKIAogICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKG1fY29udGVudEZpbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2Vy
LmNwcAppbmRleCA0NmUxN2U5ZmQxZi4uZmNlOGU2ODJjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAg
ICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURpcik7CiAgICAgaW5kZXhGaWxlUGF0aC5h
cHBlbmQoImluZGV4LmRhdCIpOwogCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0
ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5k
ZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBXYXJuaW5n
OiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBDdXJsQ2Fj
aGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5k
YXQiKTsKIAogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7Ci0gICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRl
KTsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5kZXhGaWxlKSkgewogICAg
ICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3Igd3Jp
dGVcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAK
aW5kZXggYzY3MmQ3NDE0MzcuLmRmMTE4ODAxMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTgyLDEyICs4MywxMiBAQCBQbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKICAgICBpbnQgcGxhdGZv
cm1GbGFnID0gMDsKLSAgICBpZiAobW9kZSA9PSBPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9
PSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKQogICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19S
RE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpCisgICAgZWxzZSBpZiAo
bW9kZSA9PSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSkKICAgICAgICAgcGxhdGZvcm1GbGFn
IHw9IChPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DKTsKICNpZiBPUyhEQVJXSU4pCi0gICAg
ZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yRXZlbnRzT25seSkKKyAgICBlbHNlIGlmIChtb2RlID09
IEZpbGVPcGVuTW9kZTo6T3BlbkZvckV2ZW50c09ubHkpCiAgICAgICAgIHBsYXRmb3JtRmxhZyB8
PSBPX0VWVE9OTFk7CiAjZW5kaWYKIApAQCAtMTA2LDEzICsxMDcsMTMgQEAgbG9uZyBsb25nIHNl
ZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVT
ZWVrT3JpZ2luIG8KIHsKICAgICBpbnQgd2hlbmNlID0gU0VFS19TRVQ7CiAgICAgc3dpdGNoIChv
cmlnaW4pIHsKLSAgICBjYXNlIFNlZWtGcm9tQmVnaW5uaW5nOgorICAgIGNhc2UgRmlsZVNlZWtP
cmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nOgogICAgICAgICB3aGVuY2UgPSBTRUVLX1NFVDsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZWVrRnJvbUN1cnJlbnQ6CisgICAgY2FzZSBGaWxlU2Vl
a09yaWdpbjo6U2Vla0Zyb21DdXJyZW50OgogICAgICAgICB3aGVuY2UgPSBTRUVLX0NVUjsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZWVrRnJvbUVuZDoKKyAgICBjYXNlIEZpbGVTZWVrT3Jp
Z2luOjpTZWVrRnJvbUVuZDoKICAgICAgICAgd2hlbmNlID0gU0VFS19FTkQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xNTAsMTAgKzE1MSwxMCBAQCBpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAjaWYg
VVNFKEZJTEVfTE9DSykKIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
RmlsZUxvY2tNb2RlIGxvY2tNb2RlKQogewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0g
TG9ja1NoYXJlZCwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxF
X0FTU0VSVChMT0NLX0VYID09IExvY2tFeGNsdXNpdmUsIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lz
QXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBMb2NrTm9uQmxvY2tp
bmcsIExvY2tOb25CbG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBpbnQgcmVzdWx0
ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9kZSk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9
PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEZpbGVMb2NrTW9kZT4oRmlsZUxvY2tNb2RlOjpM
b2NrU2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxF
X0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RmlsZUxvY2tNb2Rl
PihGaWxlTG9ja01vZGU6OkxvY2tFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0Fz
RXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRl
cmx5aW5nVHlwZTxGaWxlTG9ja01vZGU+KEZpbGVMb2NrTW9kZTo6TG9ja05vbkJsb2NraW5nKSwg
TG9ja05vbkJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIGludCByZXN1bHQgPSBm
bG9jayhoYW5kbGUsIFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RmlsZUxvY2tNb2RlPihsb2Nr
TW9kZSkpOwogICAgIHJldHVybiAocmVzdWx0ICE9IC0xKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGJkYWU0YmZjMTdjLi42ZTJj
Mjk2ODQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgsIHRpbWVfdCYgdGltZSkKIAogc3RhdGljIFN0cmluZyBnZXRGaW5hbFBhdGhO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBh
dGgsIE9wZW5Gb3JSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIEZpbGVP
cGVuTW9kZTo6T3BlbkZvclJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTQxOCwxMiArNDE4LDEyIEBAIFBsYXRmb3Jt
RmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2Rl
KQogICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAwOwogICAgIERXT1JEIHNoYXJlTW9k
ZSA9IDA7CiAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBPcGVuRm9yUmVhZDoKKyAgICBj
YXNlIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQ6CiAgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBH
RU5FUklDX1JFQUQ7CiAgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBPUEVOX0VYSVNUSU5H
OwogICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgT3BlbkZvcldyaXRlOgorICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3Jp
dGU6CiAgICAgICAgIGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOwogICAgICAgICBjcmVh
dGlvbkRpc3Bvc2l0aW9uID0gQ1JFQVRFX0FMV0FZUzsKICAgICAgICAgYnJlYWs7CkBAIC00NDcs
OSArNDQ3LDkgQEAgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8KIHsKICAgICBEV09SRCBtb3ZlTWV0
aG9kID0gRklMRV9CRUdJTjsKIAotICAgIGlmIChvcmlnaW4gPT0gU2Vla0Zyb21DdXJyZW50KQor
ICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQ3VycmVudCkKICAgICAg
ICAgbW92ZU1ldGhvZCA9IEZJTEVfQ1VSUkVOVDsKLSAgICBlbHNlIGlmIChvcmlnaW4gPT0gU2Vl
a0Zyb21FbmQpCisgICAgZWxzZSBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpTZWVrRnJv
bUVuZCkKICAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfRU5EOwogCiAgICAgTEFSR0VfSU5URUdF
UiBsYXJnZU9mZnNldDsKQEAgLTUzMCw3ICs1MzAsNyBAQCBib29sIGdldFZvbHVtZUZyZWVTcGFj
ZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCiAKIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKIHsKLSAgICBhdXRvIGhhbmRsZSA9
IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIE9wZW5Gb3JSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9
IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwogICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCBl
NTFhMjRlMjk5OS4uODA4MWYwMWY4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgU3RyaW5nIFJlbmRlclRoZW1l
V2luOjpzdHJpbmdXaXRoQ29udGVudHNPZkZpbGUoQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZTdHJpbmdS
ZWYgdHkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVlc3Rl
ZFVSTFJlZi5nZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBNQVhfUEFUSCkpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVkRmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHJl
cXVlc3RlZEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsK
ICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVkRmlsZUhhbmRsZSkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkMmNkNGU5ZDY0ZC4uNDhi
Y2RmODQ4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTEtMDYgIENocmlzdG9w
aGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFVzZSBlbnVtIGNsYXNz
ZXMgd2l0aGluIEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVu
dC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisKIDIwMTct
MTEtMDYgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdIFByb3Blcmx5IHVzZSBTWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUyBmb3IgV2Vi
S2l0IGJ1aWxkIHRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKaW5kZXggOTM5OGI3MzZh
N2MuLmViMGFjMDVmOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRp
b24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblAKICAgICB9CiAKICAgICBtX2Rlc3RpbmF0aW9u
UGF0aCA9IGRlc3RpbmF0aW9uUGF0aDsKLSAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKG1fZGVzdGluYXRpb25QYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUp
OworICAgIG1fZGVzdGluYXRpb25GaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9kZXN0aW5h
dGlvblBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBt
X2Rvd25sb2FkLmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAg
IG1fZG93bmxvYWQuY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDZk
YTUzZjNlMWJiLi4wMjc4OWYyNDk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00NjcsNyArNDY3LDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAKICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkIHRvICVzIiwgdGhpcywgbV9w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fZG93bmxvYWRG
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmls
ZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBtX2Rvd25sb2FkRmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24sIEZpbGVTeXN0ZW06OkZpbGVPcGVu
TW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQo
Y2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmlu
ZGV4IDE5NWMyM2Y1YTNhLi5iOTQ0M2MwZjkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNDksNiArNDksNyBAQAog
I2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmxpdGVyYWxzOjpjaHJvbm9fbGl0ZXJhbHM7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKQEAgLTExMSw3ICsxMTIsNyBAQCBDYWNoZTo6
Q2FjaGUoUmVmPFN0b3JhZ2U+JiYgc3RvcmFnZSwgT3B0aW9uU2V0PE9wdGlvbj4gb3B0aW9ucykK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgLy8gVHJpZ2dlcnMgd2l0aCAidG91
Y2ggJGNhY2hlUGF0aC9kdW1wIi4KLSAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZVBhdGgoKSwgImR1
bXAiKSk7CisgICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRoKCksICJk
dW1wIikpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkdW1wRmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKGR1bXBGaWxlUGF0aC5kYXRhKCkpKTsKICAgICAgICAgR0ZpbGVNb25p
dG9yKiBtb25pdG9yID0gZ19maWxlX21vbml0b3JfZmlsZShkdW1wRmlsZS5nZXQoKSwgR19GSUxF
X01PTklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChtb25pdG9yLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZHVtcEZpbGVDaGFuZ2Vk
KSwgdGhpcyk7CkBAIC01MzcsMTYgKzUzOCwxNiBAQCB2b2lkIENhY2hlOjp0cmF2ZXJzZShGdW5j
dGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKIAog
U3RyaW5nIENhY2hlOjpkdW1wRmlsZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9u
UGF0aCgpLCAiZHVtcC5qc29uIik7CisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsKIH0KIAogdm9pZCBDYWNo
ZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKIHsKLSAgICBhdXRvIGZkID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5G
b3JXcml0ZSk7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZk
KSkKKyAgICBhdXRvIGZkID0gb3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIEZpbGVPcGVuTW9kZTo6
T3BlbkZvcldyaXRlKTsKKyAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmQpKQogICAgICAgICByZXR1
cm47CiAgICAgYXV0byBwcm9sb2d1ZSA9IFN0cmluZygie1xuXCJlbnRyaWVzXCI6IFtcbiIpLnV0
ZjgoKTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgcHJvbG9ndWUu
ZGF0YSgpLCBwcm9sb2d1ZS5sZW5ndGgoKSk7CisgICAgd3JpdGVUb0ZpbGUoZmQsIHByb2xvZ3Vl
LmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOwogCiAgICAgc3RydWN0IFRvdGFscyB7CiAgICAg
ICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwpAQCAtNTc1LDggKzU3Niw4IEBAIHZvaWQgQ2FjaGU6
OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFs
KCJcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgifVxufVxuIik7CiAg
ICAgICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGVwaWxvZ3VlLnRvU3RyaW5nKCkudXRmOCgpOwot
ICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmQsIHdyaXRlRGF0
YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmQpOworICAgICAgICAgICAgd3JpdGVUb0ZpbGUoZmQsIHdyaXRl
RGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjbG9zZUZpbGUo
ZmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gZW50cnkg
PSBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCgqcmVjb3JkKTsKQEAgLTU5MCwxNCArNTkxLDE0
IEBAIHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgIGVudHJ5LT5hc0pT
T04oanNvbiwgaW5mbyk7CiAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAg
ICAgIGF1dG8gd3JpdGVEYXRhID0ganNvbi50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmQsIHdyaXRlRGF0YS5kYXRhKCksIHdyaXRl
RGF0YS5sZW5ndGgoKSk7CisgICAgICAgIHdyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgp
LCB3cml0ZURhdGEubGVuZ3RoKCkpOwogICAgIH0pOwogfQogCiB2b2lkIENhY2hlOjpkZWxldGVE
dW1wRmlsZSgpCiB7CiAgICAgV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2Fj
aGUuZGVsZXRlIiktPmRpc3BhdGNoKFtwYXRoID0gZHVtcEZpbGVQYXRoKCkuaXNvbGF0ZWRDb3B5
KCldIHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKKyAg
ICAgICAgZGVsZXRlRmlsZShwYXRoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5h
Z2VyLmNwcAppbmRleCBlMmQ0MWVlNzg0YS4uZWYyNmEyOTc4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZU1hbmFnZXIuY3BwCkBAIC00Miw2ICs0Miw4IEBACiAKICNkZWZpbmUgREVCVUdfQ0xBU1MgTWFu
YWdlcgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsKKwogbmFtZXNwYWNl
IFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhcHR1cmUgewogCkBAIC03MywxNSArNzUsMTUg
QEAgdm9pZCBNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgcmVjb3JkUmVwbGF5TW9k
ZSwgY29uc3QgU3RyaW5nJiByZWNvcmRSZXAKICAgICAgICAgbV9yZWNvcmRSZXBsYXlNb2RlID0g
RGlzYWJsZWQ7CiAgICAgfQogCi0gICAgbV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZFJlcGxheUNh
Y2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKKyAgICBtX3JlY29yZFJlcGxheUNh
Y2hlTG9jYXRpb24gPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkUmVwbGF5Q2FjaGVM
b2NhdGlvbiwga0Rpck5hbWVSZWNvcmRSZXBsYXkpOwogICAgIERFQlVHX0xPRygiQ2FjaGUgbG9j
YXRpb24gPSAiIFNUUklOR19TUEVDSUZJRVIsIERFQlVHX1NUUihtX3JlY29yZFJlcGxheUNhY2hl
TG9jYXRpb24pKTsKIAogICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fcmVjb3Jk
RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3JlY29yZEZpbGVIYW5k
bGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwgRmlsZU9wZW5Nb2Rl
OjpPcGVuRm9yV3JpdGUpOwogICAgIH0gZWxzZSBpZiAoaXNSZXBsYXlpbmcoKSkgewotICAgICAg
ICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBh
dGgoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOwotICAgICAgICBtX2xvYWRG
aWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRMb2FkUGF0aCgpLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwotICAgICAgICBtX3JlcGxheUZpbGVIYW5kbGUg
PSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlcGxheVBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29y
ZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJl
YWQpOworICAgICAgICBtX2xvYWRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBv
cnRMb2FkUGF0aCgpLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVw
bGF5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBG
aWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgICAgIGxvYWRSZXNvdXJjZXMoKTsKICAg
ICB9CiB9CkBAIC0zNjUsMTcgKzM2NywxNyBAQCB2b2lkIE1hbmFnZXI6OmxvYWRSZXNvdXJjZXMo
KQogCiBTdHJpbmcgTWFuYWdlcjo6cmVwb3J0TG9hZFBhdGgoKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRMb2FkKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0ZpbGVOYW1lUmVw
b3J0TG9hZCk7CiB9CiAKIFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRSZWNvcmRQYXRoKCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
cmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0ZpbGVOYW1lUmVwb3J0UmVjb3JkKTsKKyAgICBy
ZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlv
biwga0ZpbGVOYW1lUmVwb3J0UmVjb3JkKTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydFJl
cGxheVBhdGgoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBv
cnRSZXBsYXkpOworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRS
ZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZXBsYXkpOwogfQogCiBTdHJpbmcg
TWFuYWdlcjo6cmVxdWVzdFRvUGF0aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCkBAIC00MTEsOSArNDEzLDkgQEAgU3RyaW5nIE1hbmFnZXI6Omhhc2hUb1BhdGgoY29u
c3QgU3RyaW5nJiBoYXNoKQogICAgIGZpbGVOYW1lLmFwcGVuZChoYXNoVGFpbCk7CiAgICAgZmls
ZU5hbWUuYXBwZW5kTGl0ZXJhbCgiLmRhdGEiKTsKIAotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hl
TG9jYXRpb24sIGtEaXJOYW1lUmVzb3VyY2VzKTsKLSAgICBwYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGhhc2hIZWFkKTsKLSAgICBwYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZp
bGVOYW1lLnRvU3RyaW5nKCkpOworICAgIGF1dG8gcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVzb3VyY2VzKTsKKyAg
ICBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGhhc2hIZWFkKTsKKyAgICBw
YXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lLnRvU3RyaW5nKCkp
OwogCiAgICAgcmV0dXJuIHBhdGg7CiB9CkBAIC00NTIsNyArNDU0LDcgQEAgdm9pZCBNYW5hZ2Vy
Ojpsb2dQbGF5ZWRCYWNrUmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib28KICAgICBtX3JlcGxheUZpbGVIYW5kbGUucHJpbnRmKCIlcyAlc1xuIiwgd2Fz
Q2FjaGVNaXNzID8gIm1pc3MiIDogImhpdCAiLCBERUJVR19TVFIodXJsLnN0cmluZygpKSk7CiB9
CiAKLVdlYkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbW9kZSkKK1dl
YkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKIHsKICAgICAvLyBJZiB3ZSBjYW4gdHJpdmlhbGx5
IG9wZW4gdGhlIGZpbGUsIHRoZW4gZG8gdGhhdCBhbmQgcmV0dXJuIHRoZSBuZXcgZmlsZQogICAg
IC8vIGhhbmRsZS4KQEAgLTQ2NCw5ICs0NjYsOSBAQCBXZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFn
ZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZQog
ICAgIC8vIElmIHdlJ3JlIG9wZW5pbmcgdGhlIGZpbGUgZm9yIHdyaXRpbmcgKGluY2x1ZGluZyBh
cHBlbmRpbmcpLCB0aGVuIHRyeQogICAgIC8vIGFnYWluIGFmdGVyIG1ha2luZyBzdXJlIGFsbCBp
bnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgaGF2ZSBiZWVuIGNyZWF0ZWQuCiAKLSAgICBpZiAobW9k
ZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkgewotICAgICAgICBjb25zdCBh
dXRvJiBwYXJlbnREaXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZpbGVQ
YXRoKTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMocGFyZW50RGlyKSkgeworICAgIGlmIChtb2RlICE9IEZpbGVPcGVuTW9kZTo6T3BlbkZvclJl
YWQpIHsKKyAgICAgICAgY29uc3QgYXV0byYgcGFyZW50RGlyID0gZGlyZWN0b3J5TmFtZShmaWxl
UGF0aCk7CisgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERpcikpIHsKICAg
ICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIGNyZWF0ZSBpbnRl
cm1lZGlhdGUgZGlyZWN0b3JpZXM6ICIgU1RSSU5HX1NQRUNJRklFUiwgZXJybm8sIERFQlVHX1NU
UihwYXJlbnREaXIpKTsKICAgICAgICAgICAgIHJldHVybiBmaWxlSGFuZGxlOwogICAgICAgICB9
CkBAIC00NzksNyArNDgxLDcgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2Fj
aGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGUKICAgICAvLyBDb3Vs
ZCBub3Qgb3BlbiB0aGUgZmlsZS4gTG9nIHRoZSBlcnJvciBhbmQgbGVhdmUsIHJldHVybmluZyB0
aGUgaW52YWxpZAogICAgIC8vIGZpbGUgaGFuZGxlLgogCi0gICAgaWYgKG1vZGUgPT0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2Rl
OjpPcGVuRm9yUmVhZCkKICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJvciAlZCB0cnlpbmcg
dG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3IgcmVhZGluZyIsIGVycm5vLCBERUJVR19T
VFIoZmlsZVBhdGgpKTsKICAgICBlbHNlCiAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3Ig
JWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVSICIgZm9yIHdyaXRpbmciLCBlcnJu
bywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CkBAIC00OTAsNyArNDkyLDcgQEAgV2ViQ29yZTo6Rmls
ZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdl
YkNvcmU6OkZpbGUKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4gTWFuYWdl
cjo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29sIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBmaWxlKGZp
bGVQYXRoLCBzdWNjZXNzKTsKKyAgICBNYXBwZWRGaWxlRGF0YSBmaWxlKGZpbGVQYXRoLCBzdWNj
ZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3Jr
Q2FwdHVyZVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAppbmRleCAzYTU1OWE2MTg0NS4uMWEzMDU1Yzk4
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3
b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2
b2lkIFJlY29yZGVyOjpyZWNvcmRGaW5pc2goY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB2b2lkIFJlY29yZGVyOjp3cml0ZUV2ZW50cygpCiB7CiAgICAgYXV0byBwYXRoID0g
TWFuYWdlcjo6c2luZ2xldG9uKCkucmVxdWVzdFRvUGF0aChtX2luaXRpYWxSZXF1ZXN0KTsKLSAg
ICBhdXRvIGhhbmRsZSA9IE1hbmFnZXI6OnNpbmdsZXRvbigpLm9wZW5DYWNoZUZpbGUocGF0aCwg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBhdXRvIGhhbmRsZSA9IE1h
bmFnZXI6OnNpbmdsZXRvbigpLm9wZW5DYWNoZUZpbGUocGF0aCwgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNh
bXBsZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5k
ZXggOTYzNmYxMWY4YzEuLjhkOGYwNTVjNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJN
ZW1vcnlTYW1wbGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxl
cjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlCiAgICAgaWYgKG1fc2FtcGxlTG9nU2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9zYW1w
bGVMb2dTYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CiAgICAgbV9zYW1wbGVMb2dGaWxlUGF0
aCA9IHNhbXBsZUxvZ0ZpbGVQYXRoOwotICAgIG1fc2FtcGxlTG9nRmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKG1fc2FtcGxlTG9nRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7
CisgICAgbV9zYW1wbGVMb2dGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9zYW1wbGVMb2dG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIHdy
aXRlSGVhZGVycygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAxMTZhZDJkMzcxMi4uODQ1MWYw
Y2I2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHd0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OjpOZXR3b3JrQ2FjaGU7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RmlsZVN5c3RlbTsKIAog
bmFtZXNwYWNlIEFQSSB7CiAgICAgCkBAIC04NSw3ICs4Niw3IEBAIENvbnRlbnRSdWxlTGlzdFN0
b3JlOjpDb250ZW50UnVsZUxpc3RTdG9yZShjb25zdCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoLCBi
b29sIGxlCiAgICAgLCBtX3JlbW92ZVF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJDb250ZW50UnVs
ZUxpc3RTdG9yZSBSZW1vdmUgUXVldWUiKSkKICAgICAsIG1fbGVnYWN5RmlsZW5hbWUobGVnYWN5
RmlsZW5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KHN0b3JlUGF0aCk7CisgICAgbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JlUGF0aCk7CiB9CiAKIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjp+Q29udGVudFJ1bGVMaXN0U3RvcmUoKQpAQCAtMTA4LDcgKzEw
OSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgY29uc3RydWN0ZWRQYXRoRmlsdGVyKGJvb2wgbGVn
YWN5RmlsZW5hbWUpCiAKIHN0YXRpYyBTdHJpbmcgY29uc3RydWN0ZWRQYXRoKGNvbnN0IFN0cmlu
ZyYgYmFzZSwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIGxlZ2FjeUZpbGVuYW1lKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoYmFzZSwgbWFrZVN0cmluZyhjb25zdHJ1Y3RlZFBhdGhQcmVmaXgobGVnYWN5RmlsZW5hbWUp
LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShpZGVudGlmaWVyKSkpOwor
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZSwgbWFrZVN0cmluZyhjb25z
dHJ1Y3RlZFBhdGhQcmVmaXgobGVnYWN5RmlsZW5hbWUpLCBlbmNvZGVGb3JGaWxlTmFtZShpZGVu
dGlmaWVyKSkpOwogfQogCiAvLyBUaGUgc2l6ZSBhbmQgb2Zmc2V0IG9mIHRoZSBkZW5zZWx5IHBh
Y2tlZCBieXRlcyBpbiB0aGUgZmlsZSwgbm90IHNpemVvZiBhbmQgb2Zmc2V0b2YsIHdoaWNoIHdv
dWxkCkBAIC0xODQsNyArMTg1LDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlQ29udGVudFJ1bGVMaXN0
TWV0YURhdGEoQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhLCBjb24KIAogc3RhdGlj
IGJvb2wgb3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIHBhdGgsIENvbnRl
bnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgZmlsZURhdGEpCiB7Ci0gICAgZmls
ZURhdGEgPSBtYXBGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKS5kYXRhKCkpOworICAgIGZpbGVEYXRhID0gbWFwRmlsZShmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoZmlsZURhdGEuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTk0LDExICsxOTUsMTEgQEAgc3RhdGljIGJvb2wg
b3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIHBhdGgsIENvbnRlbnRSdWxl
TGlzdE1ldGFEYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVEYXRh
VG9GaWxlKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmQpCitzdGF0aWMgYm9vbCB3cml0ZURhdGFUb0ZpbGUoY29uc3QgRGF0YSYg
ZmlsZURhdGEsIFBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSB0
cnVlOwogICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmZCwgKGNvbnN0IGNoYXIqKWRhdGEsIHNpemUpID09IC0xKSB7CisgICAgICAgIGlm
ICh3cml0ZVRvRmlsZShmZCwgKGNvbnN0IGNoYXIqKWRhdGEsIHNpemUpID09IC0xKSB7CiAgICAg
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KQEAgLTIxNCw3ICsyMTUsNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVk
VG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogCiAgICAg
Y2xhc3MgQ29tcGlsYXRpb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQ29udGVudEV4dGVuc2lvbkNv
bXBpbGF0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbXBpbGF0aW9uQ2xpZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBDb250
ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEpCisgICAgICAgIENvbXBpbGF0aW9uQ2xpZW50
KFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYg
bWV0YURhdGEpCiAgICAgICAgICAgICA6IG1fZmlsZUhhbmRsZShmaWxlSGFuZGxlKQogICAgICAg
ICAgICAgLCBtX21ldGFEYXRhKG1ldGFEYXRhKQogICAgICAgICB7CkBAIC0yODcsOCArMjg4LDgg
QEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBj
b25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICAgICAgICAgIG1fbWV0YURhdGEuY29uZGl0
aW9uc0FwcGx5T25seVRvRG9tYWluID0gbV9jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW47CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIERhdGEgaGVhZGVyID0gZW5jb2RlQ29udGVudFJ1bGVM
aXN0TWV0YURhdGEobV9tZXRhRGF0YSk7Ci0gICAgICAgICAgICBpZiAoIW1fZmlsZUVycm9yICYm
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmlsZUhhbmRsZSwgMGxsLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21CZWdpbm5pbmcpID09IC0xKSB7
Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhh
bmRsZSk7CisgICAgICAgICAgICBpZiAoIW1fZmlsZUVycm9yICYmIHNlZWtGaWxlKG1fZmlsZUhh
bmRsZSwgMGxsLCBGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21CZWdpbm5pbmcpID09IC0xKSB7Cisg
ICAgICAgICAgICAgICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgICAgICAgICAg
bV9maWxlRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd3JpdGVUb0Zp
bGUoaGVhZGVyKTsKQEAgLTMwNCwxMiArMzA1LDEyIEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUg
Y29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRo
CiAgICAgICAgIHZvaWQgd3JpdGVUb0ZpbGUoY29uc3QgRGF0YSYgZGF0YSkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiAhd3JpdGVEYXRhVG9GaWxlKGRhdGEsIG1f
ZmlsZUhhbmRsZSkpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUobV9maWxlSGFuZGxlKTsKKyAgICAgICAgICAgICAgICBjbG9zZUZpbGUobV9maWxlSGFu
ZGxlKTsKICAgICAgICAgICAgICAgICBtX2ZpbGVFcnJvciA9IHRydWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CisgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBt
X2ZpbGVIYW5kbGU7CiAgICAgICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtX21ldGFEYXRh
OwogICAgICAgICBzaXplX3QgbV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVdyaXR0
ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX2ZpbHRlcnNXaXRoQ29uZGl0aW9uQnl0ZWNvZGVX
cml0dGVuIHsgMCB9OwpAQCAtMzIwLDI3ICszMjEsMjcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBh
dGgKICAgICAgICAgYm9vbCBtX2ZpbGVFcnJvciB7IGZhbHNlIH07CiAgICAgfTsKIAotICAgIGF1
dG8gdGVtcG9yYXJ5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7Ci0gICAgU3RyaW5nIHRlbXBvcmFyeUZpbGVQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIkNvbnRlbnRSdWxlTGlzdCIsIHRlbXBvcmFy
eUZpbGVIYW5kbGUpOwotICAgIGlmICh0ZW1wb3JhcnlGaWxlSGFuZGxlID09IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byB0ZW1wb3JhcnlG
aWxlSGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICBTdHJpbmcgdGVtcG9y
YXJ5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgiQ29udGVudFJ1bGVMaXN0IiwgdGVtcG9y
YXJ5RmlsZUhhbmRsZSk7CisgICAgaWYgKHRlbXBvcmFyeUZpbGVIYW5kbGUgPT0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpF
cnJvcjo6Q29tcGlsZUZhaWxlZDsKICAgICAKICAgICBjaGFyIGludmFsaWRIZWFkZXJbQ29udGVu
dFJ1bGVMaXN0RmlsZUhlYWRlclNpemVdOwogICAgIG1lbXNldChpbnZhbGlkSGVhZGVyLCAweEZG
LCBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIC8vIFRoaXMgaGVhZGVyIHdpbGwgYmUgcmV3
cml0dGVuIGluIENvbXBpbGF0aW9uQ2xpZW50OjpmaW5hbGl6ZS4KLSAgICBpZiAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSwgaW52YWxpZEhlYWRl
ciwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKSA9PSAtMSkgewotICAgICAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgaWYgKHdyaXRlVG9G
aWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUsIGludmFsaWRIZWFkZXIsIHNpemVvZihpbnZhbGlkSGVh
ZGVyKSkgPT0gLTEpIHsKKyAgICAgICAgY2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOwog
ICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVk
OwogICAgIH0KIAogICAgIENvbXBpbGF0aW9uQ2xpZW50IGNvbXBpbGF0aW9uQ2xpZW50KHRlbXBv
cmFyeUZpbGVIYW5kbGUsIG1ldGFEYXRhKTsKICAgICAKICAgICBpZiAoYXV0byBjb21waWxlckVy
cm9yID0gY29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBXVEZNb3ZlKGpzb24pKSkg
ewotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhh
bmRsZSk7CisgICAgICAgIGNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAgICAg
cmV0dXJuIGNvbXBpbGVyRXJyb3I7CiAgICAgfQogICAgIGlmIChjb21waWxhdGlvbkNsaWVudC5o
YWRFcnJvcldoaWxlV3JpdGluZ1RvRmlsZSgpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICAgICAgY2xvc2VGaWxlKHRl
bXBvcmFyeUZpbGVIYW5kbGUpOwogICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6
OkVycm9yOjpDb21waWxlRmFpbGVkOwogICAgIH0KICAgICAKQEAgLTM0OCw3ICszNDksNyBAQCBz
dGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0
IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgIGlmIChtYXBwZWREYXRhLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwog
Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptb3ZlRmlsZSh0ZW1wb3JhcnlGaWxlUGF0
aCwgZmluYWxGaWxlUGF0aCkpCisgICAgaWYgKCFtb3ZlRmlsZSh0ZW1wb3JhcnlGaWxlUGF0aCwg
ZmluYWxGaWxlUGF0aCkpCiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJy
b3I6OkNvbXBpbGVGYWlsZWQ7CiAKICAgICByZXR1cm4geyB9OwpAQCAtNDEyLDEyICs0MTMsMTIg
QEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQ29udGVudFJ1bGVMaXN0
SWRlbnRpZmllcnMoRnVuY3Rpb248dm9pZCgKIHsKICAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGgu
aXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKIAot
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBmdWxsUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVyKGxlZ2FjeUZpbGVu
YW1lKSk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZ1bGxQYXRocyA9IGxpc3REaXJlY3Rvcnko
c3RvcmVQYXRoLCBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIobGVnYWN5RmlsZW5hbWUpKTsKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnM7CiAgICAgICAgIGlkZW50aWZpZXJzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZnVsbFBhdGhzLnNpemUoKSk7CiAgICAgICAgIGNvbnN0IGF1dG8g
cHJlZml4TGVuZ3RoID0gY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKS5sZW5n
dGgoKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogZnVsbFBhdGhzKQotICAgICAg
ICAgICAgaWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
Y29kZUZyb21GaWxlbmFtZShwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAx
ICsgcHJlZml4TGVuZ3RoKSkpOworICAgICAgICAgICAgaWRlbnRpZmllcnMudW5jaGVja2VkQXBw
ZW5kKGRlY29kZUZyb21GaWxlbmFtZShwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcv
JykgKyAxICsgcHJlZml4TGVuZ3RoKSkpOwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGlkZW50aWZpZXJzID0gV1RGTW92
ZShpZGVudGlmaWVycyldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGlkZW50aWZpZXJzKSk7CkBAIC00NTQsNyArNDU1LDcgQEAgdm9pZCBDb250ZW50
UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLAogICAgIG1fcmVtb3ZlUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBz
dG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBt
X2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBhdGggPSBjb25zdHJ1Y3RlZFBhdGgo
c3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFtZSk7CiAKLSAgICAgICAgaWYgKCFX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpKSB7CisgICAgICAgIGlmICghZGVs
ZXRlRmlsZShwYXRoKSkgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKEVycm9yOjpSZW1vdmVGYWlsZWQpOwogICAgICAgICAgICAgfSk7CkBAIC00Njks
MTkgKzQ3MCwxOSBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVs
ZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAKIHZvaWQgQ29udGVudFJ1bGVM
aXN0U3RvcmU6OnN5bmNocm9ub3VzUmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpCiB7Ci0gICAg
Zm9yIChjb25zdCBhdXRvJiBwYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX3N0b3JlUGF0aCwgIioiKSkKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShwYXRoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBsaXN0RGlyZWN0b3J5KG1f
c3RvcmVQYXRoLCAiKiIpKQorICAgICAgICBkZWxldGVGaWxlKHBhdGgpOwogfQogCiB2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25z
dCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGZpbGUgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpvcGVuRmlsZShjb25zdHJ1Y3RlZFBhdGgobV9zdG9yZVBhdGgsIGlkZW50aWZp
ZXIsIG1fbGVnYWN5RmlsZW5hbWUpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUp
OwotICAgIGlmIChmaWxlID09IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCisgICAgYXV0byBmaWxlID0gb3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3Rv
cmVQYXRoLCBpZGVudGlmaWVyLCBtX2xlZ2FjeUZpbGVuYW1lKSwgRmlsZU9wZW5Nb2RlOjpPcGVu
Rm9yV3JpdGUpOworICAgIGlmIChmaWxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAg
ICAgICAgIHJldHVybjsKICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSBpbnZhbGlkSGVhZGVy
ID0gezAsIDAsIDAsIDAsIDAsIDB9OwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOworICAgIGF1dG8gYnl0
ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIEFTU0VSVF9V
TlVTRUQoYnl0ZXNXcml0dGVuLCBieXRlc1dyaXR0ZW4gPT0gc2l6ZW9mKGludmFsaWRIZWFkZXIp
KTsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgY2xvc2VG
aWxlKGZpbGUpOwogfQogCiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVs
ZUxpc3RTb3VyY2UoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQo
V1RGOjpTdHJpbmcpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwCmluZGV4IGQxZGZmNGY5NjliLi5jYWVjNDgzZThhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBib29s
IGhhc0ZpbGVDaGFuZ2VkU2luY2UoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBzaW5jZSkK
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBjcmVhdGVEZWNvZGVyRm9yRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocGF0aCwgRmls
ZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3Bl
bkFuZExvY2tGaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQp
OwogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRv
RGlzaygpCiAgICAgICAgIGV4Y2x1ZGVGcm9tQmFja3VwKCk7CiAgICAgfQogCi0gICAgYXV0byBo
YW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocmVzb3VyY2VMb2dGaWxlUGF0aCgp
LCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3Rl
bTo6b3BlbkFuZExvY2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKaW5kZXggNzc5NmE0YWY4YTMuLjA3YTFiMTVjNmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMTEtMDYgIENocmlzdG9w
aGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFVzZSBlbnVtIGNsYXNz
ZXMgd2l0aGluIEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisKIDIwMTctMTEtMDIg
IE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCB0cnkg
dG8gZ3Vlc3MgcGx1Z2luIE1JTUUgdHlwZSBmcm9tIGEgZmlsZSBleHRlbnNpb24gaW4gYSBVUkwg
KG5vIG9ic2VydmFibGUgZWZmZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCAzMjg1MDZmMGFjNi4uZWEyZDY0MzM5ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlKCkKIAogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlOwogICAgIFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwgcGVyc2lz
dGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7Ci0gICAgZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7Cisg
ICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKIAogICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChmaWxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTY2LDcgKzU2Niw3IEBA
IHZvaWQgUGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7
Ci0gICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxl
U3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShh
YnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUp
OwogCiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gcGx1Z2luIG1ldGFkYXRhIGNhY2hlIGZvciBzYXZp
bmciKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA4MjhiMDJjNzY3ZS4uMGE3YzU1MzI1ZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMS0wNiAgQ2hyaXN0
b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgVXNlIGVudW0gY2xh
c3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3Iu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFz
ZVRyYWNrZXJUZXN0Lm1tOgorCiAyMDE3LTExLTA2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRh
bnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSAtV3NpZ24tY29tcGFyZSB3YXJuaW5n
IGluIEV2ZW50U2VuZGVyUHJveHlXUEUuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCAyNTI3NDRiNDIxZC4uMmIzNjQzOWVh
N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25p
dG9yLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBjb25zdGV4cHIgaW50IGJ1ZmZlclNpemUg
PSAxMDI0OwogCi0gICAgYXV0byBzb3VyY2UgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBG
aWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgYXV0byBzb3VyY2UgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoc291cmNlKSkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKQEAgLTM3OSw3ICszNzksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JU
ZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogICAgIHRlc3RRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewogICAgICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCi0gICAgICAgIGF1dG8gaGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUodGVtcEZpbGVQYXRoKCksIEZpbGVTeXN0ZW06Ok9wZW5G
b3JXcml0ZSk7CisgICAgICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUodGVt
cEZpbGVQYXRoKCksIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAg
ICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7CiAKICAgICAgICAgaW50IHJjID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxl
LCBGaWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEu
bGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQppbmRleCAyZTJjMzk0NzhlNS4u
NWI4YWM1ZGQ0YzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCkBAIC04Nyw3ICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5UGF0aCkKIAogc3RhdGljIHZvaWQgY3JlYXRlRmlsZUF0UGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpCiB7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3Jp
dGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9y
V3JpdGUpOwogICAgIEVYUEVDVF9ORSgtMSwgZmlsZUhhbmRsZSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMocGF0aCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326130</attachid>
            <date>2017-11-06 10:18:10 -0800</date>
            <delta_ts>2017-11-06 10:53:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>175172-3.diff</filename>
            <type>text/plain</type>
            <size>47496</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMjBiMDBjNzlhMGYuLjMwMTA4ZGJlOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTExLTAzICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gZm9y
IGNvbnZlcnRpbmcgZW51bSBjbGFzc2VzIHRvIHRoZWlyIHVuZGVybHlpbmcgdHlwZSB3aGVuIG5l
Y2Vzc2FyeS4KKworICAgICAgICAqIHd0Zi9FbnVtVHJhaXRzLmg6CisKIDIwMTctMTEtMDYgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
W0dUS10gQWx3YXlzIHVzZSBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRCB0byBzZXQgYnVpbGQgdmFy
aWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9FbnVtVHJhaXRzLmgKaW5kZXggN2JkMmUzODc3NzEuLmNhMmQ2Mzg1Y2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYv
RW51bVRyYWl0cy5oCkBAIC01OSw2ICs1OSwxMiBAQCBjb25zdGV4cHIgYXV0byBpc1ZhbGlkRW51
bShUIHQpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgYm9vbAog
ICAgIHJldHVybiBFbnVtVmFsdWVDaGVja2VyPFQsIHR5cGVuYW1lIEVudW1UcmFpdHM8RT46OnZh
bHVlcz46OmlzVmFsaWRFbnVtKHQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFPgorY29uc3Rl
eHByIGF1dG8gZW51bVRvVW5kZXJseWluZ1R5cGUoRSBlKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+PihlKTsKK30KKwogfQogCiB1c2luZyBXVEY6
OmlzVmFsaWRFbnVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI4N2ZkNTU1NzgxLi5mMWI5MGQyOGUwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTExLTAzICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBG
aWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICBVc2luZyBl
bnVtIGNsYXNzZXMgaW4gZmlsZXN5c3RlbSB0byBlbmZvcmNlIHN0cm9uZ2VyIHR5cGUgc2FmZXR5
LgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JD
b2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uY3BwOgorCiAyMDE3LTExLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIEpJVCBjYWxsIGlubGluZSBjYWNoZXMgc2hvdWxkIGNhY2hlIGNhbGxz
IHRvIG9iamVjdHMgd2l0aCBnZXRDYWxsRGF0YS9nZXRDb25zdHJ1Y3REYXRhIHRyYXBzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAppbmRl
eCAzMWQyZDA0YjAxNC4uMjM3MjZhYjhkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE9y
aWdpbkxvY2s6OmxvY2soKQogICAgIG1fbXV0ZXgubG9jaygpOwogCiAjaWYgVVNFKEZJTEVfTE9D
SykKLSAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUobV9sb2Nr
RmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9sb2NrSGFuZGxlID0g
RmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1lLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKG1fbG9ja0hhbmRsZSA9PSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIC8vIFRoZSBvbmx5
IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBs
b2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2VyZSBnaXZlbiBhIHBhdGgg
dG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggYTIx
NTBlZDJmYWMuLmIwZThjYWQzMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEzMDQsNyAr
MTMwNCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgICAgIGZ1bGxQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CiAgICAg
fSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5
IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZnVs
bFBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUu
aAppbmRleCA1NjNmZWQ5ODk0MC4uMWY3MWJjNTJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlSGFuZGxlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1fbW9kZSB7IEZpbGVT
eXN0ZW06Ok9wZW5Gb3JSZWFkIH07CisgICAgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1fbW9k
ZSB7IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQgfTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3Ry
ZWFtLmNwcAppbmRleCBmNzQ1ZDdjMWRjOC4uMDM4NDAyNDNjODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC03NCwxMyArNzQsMTMgQEAgYm9vbCBGaWxlU3RyZWFt
OjpvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcg
bG9uZyBsZW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBPcGVuIHRoZSBmaWxlLgot
ICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3Bl
bkZvclJlYWQpOworICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gSnVtcCB0byB0aGUgYmVnaW5uaW5nIHBvc2l0aW9uIGlmIHRoZSBmaWxlIGhhcyBiZWVuIHNs
aWNlZC4KICAgICBpZiAob2Zmc2V0ID4gMCkgewotICAgICAgICBpZiAoRmlsZVN5c3RlbTo6c2Vl
a0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6U2Vla0Zyb21CZWdpbm5pbmcpIDwg
MCkKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1faGFuZGxlLCBvZmZzZXQsIEZp
bGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykgPCAwKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmNwcAppbmRleCBiODk0NzVlMDI1OC4uNDE4ZGJhOTJjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgU3RyaW5nIGxhc3RDb21w
b25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQogCiBi
b29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQogewotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUo
cGF0aCwgT3BlbkZvclJlYWQpOworICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgRmls
ZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoc291cmNl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5o
CmluZGV4IGE2YzdlM2ViN2MyLi4wNjhiZmY0ZjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uaApAQCAtNzQsNyArNzQsNyBAQCB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5k
bGU7CiBjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9
IC0xOwogI2VuZGlmCiAKLWVudW0gRmlsZU9wZW5Nb2RlIHsKK2VudW0gY2xhc3MgRmlsZU9wZW5N
b2RlIHsKICAgICBPcGVuRm9yUmVhZCA9IDAsCiAgICAgT3BlbkZvcldyaXRlLAogI2lmIE9TKERB
UldJTikKQEAgLTgyLDEzICs4MiwxMyBAQCBlbnVtIEZpbGVPcGVuTW9kZSB7CiAjZW5kaWYKIH07
CiAKLWVudW0gRmlsZVNlZWtPcmlnaW4geworZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7CiAg
ICAgU2Vla0Zyb21CZWdpbm5pbmcgPSAwLAogICAgIFNlZWtGcm9tQ3VycmVudCwKICAgICBTZWVr
RnJvbUVuZAogfTsKIAotZW51bSBGaWxlTG9ja01vZGUgeworZW51bSBjbGFzcyBGaWxlTG9ja01v
ZGUgewogICAgIExvY2tTaGFyZWQgPSAxLAogICAgIExvY2tFeGNsdXNpdmUgPSAyLAogICAgIExv
Y2tOb25CbG9ja2luZyA9IDQKQEAgLTE0NSw3ICsxNDUsNyBAQCBXRUJDT1JFX0VYUE9SVCBpbnQg
d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQogLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNj
ZXNzZnVsLCAtMSBvdGhlcndpc2UuCiBXRUJDT1JFX0VYUE9SVCBpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKLVdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmls
ZU9wZW5Nb2RlLCBGaWxlTG9ja01vZGUgPSBMb2NrRXhjbHVzaXZlKTsKK1dFQkNPUkVfRVhQT1JU
IFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmlsZU9w
ZW5Nb2RlLCBGaWxlTG9ja01vZGUgPSBGaWxlTG9ja01vZGU6OkxvY2tFeGNsdXNpdmUpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsK
IAogLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRv
IHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4IDU3ODQzNGQyZDA3Li43Yjc3M2Uy
MDRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRv
ckNvY29hLm1tCkBAIC00Myw3ICs0Myw3IEBAIEZpbGVNb25pdG9yOjpGaWxlTW9uaXRvcihjb25z
dCBTdHJpbmcmIHBhdGgsIFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBXVEY6CiAgICAg
aWYgKCFtb2RpZmljYXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhh
bmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JFdmVu
dHNPbmx5KTsKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvckV2ZW50c09ubHkpOwogICAgIGlmIChoYW5k
bGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiRmFpbGVkIHRvIG9wZW4g
c3RhdGlzdGljcyBmaWxlIGZvciBtb25pdG9yaW5nOiAlcyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggOTE1MGE3NGUwMTAuLjdjYjZhZTU2YTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2lu
Y2x1ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC0zNjIsOSArMzYzLDkgQEAgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAK
ICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
ZmlsZW5hbWUuZ2V0KCkpKTsKICAgICBHRmlsZUlPU3RyZWFtKiBpb1N0cmVhbSA9IDA7Ci0gICAg
aWYgKG1vZGUgPT0gT3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpP
cGVuRm9yUmVhZCkKICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmls
ZS5nZXQoKSwgMCwgMCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpIHsKKyAg
ICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKSB7CiAgICAgICAg
IGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihH
X0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCiAgICAgICAgICAg
ICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKICAg
ICAgICAgZWxzZQpAQCAtMzg4LDEzICszODksMTMgQEAgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8K
IHsKICAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwogICAgIHN3aXRjaCAob3Jp
Z2luKSB7Ci0gICAgY2FzZSBTZWVrRnJvbUJlZ2lubmluZzoKKyAgICBjYXNlIEZpbGVTZWVrT3Jp
Z2luOjpTZWVrRnJvbUJlZ2lubmluZzoKICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVT
ZWVrT3JpZ2luOjpTZWVrRnJvbUN1cnJlbnQ6CiAgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NV
UjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZWVrRnJvbUVuZDoKKyAgICBjYXNlIEZpbGVT
ZWVrT3JpZ2luOjpTZWVrRnJvbUVuZDoKICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfRU5EOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtNDgyLDExICs0ODMsMTEgQEAgc3RkOjpv
cHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQog
I2lmIFVTRShGSUxFX0xPQ0spCiBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIEZpbGVMb2NrTW9kZSBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NI
ID09IExvY2tTaGFyZWQsIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoTE9DS19FWCA9PSBMb2NrRXhjbHVzaXZlLCBMb2NrRXhjbHVzaXZlRW5jb2Rp
bmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gTG9ja05vbkJs
b2NraW5nLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElM
RV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9k
ZTo6TG9ja1NoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09N
UElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2Nr
TW9kZTo6TG9ja0V4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBl
KEZpbGVMb2NrTW9kZTo6TG9ja05vbkJsb2NraW5nKSwgTG9ja05vbkJsb2NraW5nRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOwogICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lu
cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2so
Z19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlu
cHV0U3RyZWFtKSksIGxvY2tNb2RlKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rl
c2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFt
KSksIFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUobG9ja01vZGUpKTsKICAgICByZXR1cm4gcmVz
dWx0ICE9IC0xOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCAwMzVhNmIxOTA2My4uMTNmNzM4ZjE4
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgQ3VybENhY2hlRW50
cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIGJvb2wgQ3VybENhY2hl
RW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRlckZpbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBGaWxlU3lzdGVtOjpPcGVuRm9y
V3JpdGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0g
RmlsZVN5c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChoZWFkZXJGaWxlKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3Vs
ZCBub3Qgb3BlbiAlcyBmb3Igd3JpdGVcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgQ3Vy
bENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJpbmcmIHVybCkKIGJv
b2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0
aCwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCiB7CiAgICAgLy8gT3BlbiB0aGUgZmlsZQotICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxl
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdv
cmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGZpbGVwYXRo
LmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2Myw3ICszNjMs
NyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpvcGVuQ29udGVudEZpbGUoKQogICAgIGlmIChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKLSAgICBtX2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9jb250
ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9jb250ZW50Rmls
ZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fY29udGVudEZpbGVuYW1lLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAKICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKaW5kZXggNDZlMTdlOWZkMWYuLmZjZThlNjgyYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQog
ICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGgu
YXBwZW5kKCJpbmRleC5kYXQiKTsKIAotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yUmVhZCk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlu
ZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgV2Fybmlu
ZzogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgQ3VybENh
Y2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXgu
ZGF0Iik7CiAKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwotICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0
ZSk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAg
ICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdy
aXRlXG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CmluZGV4IGM2NzJkNzQxNDM3Li5kZjExODgwMTI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1
bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC04MiwxMiArODMsMTIgQEAgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAg
ICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgaW50IHBsYXRm
b3JtRmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gT3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUg
PT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCkKICAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9f
UkRPTkxZOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gT3BlbkZvcldyaXRlKQorICAgIGVsc2UgaWYg
KG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpCiAgICAgICAgIHBsYXRmb3JtRmxh
ZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CiAjaWYgT1MoREFSV0lOKQotICAg
IGVsc2UgaWYgKG1vZGUgPT0gT3BlbkZvckV2ZW50c09ubHkpCisgICAgZWxzZSBpZiAobW9kZSA9
PSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JFdmVudHNPbmx5KQogICAgICAgICBwbGF0Zm9ybUZsYWcg
fD0gT19FVlRPTkxZOwogI2VuZGlmCiAKQEAgLTEwNiwxMyArMTA3LDEzIEBAIGxvbmcgbG9uZyBz
ZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxl
U2Vla09yaWdpbiBvCiB7CiAgICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOwogICAgIHN3aXRjaCAo
b3JpZ2luKSB7Ci0gICAgY2FzZSBTZWVrRnJvbUJlZ2lubmluZzoKKyAgICBjYXNlIEZpbGVTZWVr
T3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZzoKICAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vla0Zyb21DdXJyZW50OgorICAgIGNhc2UgRmlsZVNl
ZWtPcmlnaW46OlNlZWtGcm9tQ3VycmVudDoKICAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vla0Zyb21FbmQ6CisgICAgY2FzZSBGaWxlU2Vla09y
aWdpbjo6U2Vla0Zyb21FbmQ6CiAgICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTUwLDEwICsxNTEsMTAgQEAgaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogI2lm
IFVTRShGSUxFX0xPQ0spCiBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IEZpbGVMb2NrTW9kZSBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09
IExvY2tTaGFyZWQsIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElM
RV9BU1NFUlQoTE9DS19FWCA9PSBMb2NrRXhjbHVzaXZlLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gTG9ja05vbkJsb2Nr
aW5nLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50IHJlc3Vs
dCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0gg
PT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxGaWxlTG9ja01vZGU+KEZpbGVMb2NrTW9kZTo6
TG9ja1NoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElM
RV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEZpbGVMb2NrTW9k
ZT4oRmlsZUxvY2tNb2RlOjpMb2NrRXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNB
c0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5k
ZXJseWluZ1R5cGU8RmlsZUxvY2tNb2RlPihGaWxlTG9ja01vZGU6OkxvY2tOb25CbG9ja2luZyks
IExvY2tOb25CbG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBpbnQgcmVzdWx0ID0g
ZmxvY2soaGFuZGxlLCBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEZpbGVMb2NrTW9kZT4obG9j
a01vZGUpKTsKICAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBiZGFlNGJmYzE3Yy4uNmUy
YzI5Njg0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCiAKIHN0YXRpYyBTdHJpbmcgZ2V0RmluYWxQYXRo
TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShw
YXRoLCBPcGVuRm9yUmVhZCk7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBGaWxl
T3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC00MTgsMTIgKzQxOCwxMiBAQCBQbGF0Zm9y
bUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9k
ZSkKICAgICBEV09SRCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gMDsKICAgICBEV09SRCBzaGFyZU1v
ZGUgPSAwOwogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgT3BlbkZvclJlYWQ6CisgICAg
Y2FzZSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkOgogICAgICAgICBkZXNpcmVkQWNjZXNzID0g
R0VORVJJQ19SRUFEOwogICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElO
RzsKICAgICAgICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE9wZW5Gb3JXcml0ZToKKyAgICBjYXNlIEZpbGVPcGVuTW9kZTo6T3BlbkZvcldy
aXRlOgogICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19XUklURTsKICAgICAgICAgY3Jl
YXRpb25EaXNwb3NpdGlvbiA9IENSRUFURV9BTFdBWVM7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ3
LDkgKzQ0Nyw5IEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvCiB7CiAgICAgRFdPUkQgbW92ZU1l
dGhvZCA9IEZJTEVfQkVHSU47CiAKLSAgICBpZiAob3JpZ2luID09IFNlZWtGcm9tQ3VycmVudCkK
KyAgICBpZiAob3JpZ2luID09IEZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUN1cnJlbnQpCiAgICAg
ICAgIG1vdmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7Ci0gICAgZWxzZSBpZiAob3JpZ2luID09IFNl
ZWtGcm9tRW5kKQorICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zy
b21FbmQpCiAgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0VORDsKIAogICAgIExBUkdFX0lOVEVH
RVIgbGFyZ2VPZmZzZXQ7CkBAIC01MzAsNyArNTMwLDcgQEAgYm9vbCBnZXRWb2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJiwgdWludDY0X3QmKQogCiBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUg
PSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBPcGVuRm9yUmVhZCk7CisgICAgYXV0byBoYW5kbGUg
PSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKICAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXgg
ZTUxYTI0ZTI5OTkuLjgwODFmMDFmODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIFN0cmluZyBSZW5kZXJUaGVt
ZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKENGU3RyaW5nUmVmIG5hbWUsIENGU3RyaW5n
UmVmIHR5CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihyZXF1ZXN0
ZWRVUkxSZWYuZ2V0KCksIGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0aCwgTUFYX1BBVEgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHJlcXVlc3RlZEZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShy
ZXF1ZXN0ZWRGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7
CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUp
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDJjZDRlOWQ2NGQuLjQ4
YmNkZjg0OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTExLTAzICBDaHJpc3Rv
cGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBVc2UgZW51bSBjbGFz
c2VzIHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGll
bnQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5j
cHA6CisgICAgICAgICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorCiAyMDE3
LTExLTA2ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSBQcm9wZXJseSB1c2UgU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMgZm9yIFdl
YktpdCBidWlsZCB0YXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCmluZGV4IDkzOThiNzM2
YTdjLi5lYjBhYzA1ZjljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QCiAgICAgfQogCiAgICAgbV9kZXN0aW5hdGlv
blBhdGggPSBkZXN0aW5hdGlvblBhdGg7Ci0gICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBGaWxlU3lz
dGVtOjpvcGVuRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRl
KTsKKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fZGVzdGlu
YXRpb25QYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAg
bV9kb3dubG9hZC5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uUGF0aCk7CiAKICAg
ICBtX2Rvd25sb2FkLmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCA2
ZGE1M2YzZTFiYi4uMDI3ODlmMjQ5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogCiAgICAgTE9HKE5ldHdvcmtTZXNz
aW9uLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCB0byAlcyIsIHRoaXMsIG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX2Rvd25sb2Fk
RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24sIEZp
bGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVt
OjpvcGVuRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKG1fZG93bmxvYWRGaWxlID09IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgZGlkRmFpbERvd25sb2Fk
KGNhbmNlbGxlZEVycm9yKG1fZmlyc3RSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApp
bmRleCAxOTVjMjNmNWEzYS4uYjk0NDNjMGY5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAK
ICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOjpsaXRlcmFsczo6Y2hyb25vX2xpdGVyYWxz
OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVTeXN0ZW07CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CkBAIC0xMTEsNyArMTEyLDcgQEAgQ2FjaGU6
OkNhY2hlKFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxPcHRpb24+IG9wdGlvbnMp
CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIC8vIFRyaWdnZXJzIHdpdGggInRv
dWNoICRjYWNoZVBhdGgvZHVtcCIuCi0gICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRoKCksICJk
dW1wIikpOworICAgICAgICBDU3RyaW5nIGR1bXBGaWxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aCgpLCAi
ZHVtcCIpKTsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZHVtcEZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aChkdW1wRmlsZVBhdGguZGF0YSgpKSk7CiAgICAgICAgIEdGaWxlTW9u
aXRvciogbW9uaXRvciA9IGdfZmlsZV9tb25pdG9yX2ZpbGUoZHVtcEZpbGUuZ2V0KCksIEdfRklM
RV9NT05JVE9SX05PTkUsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0X3N3YXBwZWQobW9uaXRvciwgImNoYW5nZWQiLCBHX0NBTExCQUNLKGR1bXBGaWxlQ2hhbmdl
ZCksIHRoaXMpOwpAQCAtNTM3LDE2ICs1MzgsMTYgQEAgdm9pZCBDYWNoZTo6dHJhdmVyc2UoRnVu
Y3Rpb248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJiB0cmF2ZXJzZUhhbmRsZXIpCiAK
IFN0cmluZyBDYWNoZTo6ZHVtcEZpbGVQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+dmVyc2lv
blBhdGgoKSwgImR1bXAuanNvbiIpOworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9zdG9yYWdlLT52ZXJzaW9uUGF0aCgpLCAiZHVtcC5qc29uIik7CiB9CiAKIHZvaWQgQ2Fj
aGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiB7Ci0gICAgYXV0byBmZCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06Om9wZW5GaWxlKGR1bXBGaWxlUGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVu
Rm9yV3JpdGUpOwotICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChm
ZCkpCisgICAgYXV0byBmZCA9IG9wZW5GaWxlKGR1bXBGaWxlUGF0aCgpLCBGaWxlT3Blbk1vZGU6
Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGZkKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGF1dG8gcHJvbG9ndWUgPSBTdHJpbmcoIntcblwiZW50cmllc1wiOiBbXG4iKS51
dGY4KCk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmQsIHByb2xvZ3Vl
LmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOworICAgIHdyaXRlVG9GaWxlKGZkLCBwcm9sb2d1
ZS5kYXRhKCksIHByb2xvZ3VlLmxlbmd0aCgpKTsKIAogICAgIHN0cnVjdCBUb3RhbHMgewogICAg
ICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKQEAgLTU3NSw4ICs1NzYsOCBAQCB2b2lkIENhY2hl
OjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJh
bCgiXG4iKTsKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIn1cbn1cbiIpOwog
ICAgICAgICAgICAgYXV0byB3cml0ZURhdGEgPSBlcGlsb2d1ZS50b1N0cmluZygpLnV0ZjgoKTsK
LSAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURh
dGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwotICAgICAgICAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZkKTsKKyAgICAgICAgICAgIHdyaXRlVG9GaWxlKGZkLCB3cml0
ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOworICAgICAgICAgICAgY2xvc2VGaWxl
KGZkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGVudHJ5
ID0gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7CkBAIC01OTAsMTQgKzU5MSwx
NCBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgICAgICBlbnRyeS0+YXNK
U09OKGpzb24sIGluZm8pOwogICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAg
ICAgICBhdXRvIHdyaXRlRGF0YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0
ZURhdGEubGVuZ3RoKCkpOworICAgICAgICB3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEo
KSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBDYWNoZTo6ZGVsZXRl
RHVtcEZpbGUoKQogewogICAgIFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNh
Y2hlLmRlbGV0ZSIpLT5kaXNwYXRjaChbcGF0aCA9IGR1bXBGaWxlUGF0aCgpLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7Cisg
ICAgICAgIGRlbGV0ZUZpbGUocGF0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFu
YWdlci5jcHAKaW5kZXggZTJkNDFlZTc4NGEuLmVmMjZhMjk3ODU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVNYW5hZ2VyLmNwcApAQCAtNDIsNiArNDIsOCBAQAogCiAjZGVmaW5lIERFQlVHX0NMQVNTIE1h
bmFnZXIKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVTeXN0ZW07CisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYXB0dXJlIHsKIApAQCAtNzMsMTUgKzc1LDE1
IEBAIHZvaWQgTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIHJlY29yZFJlcGxheU1v
ZGUsIGNvbnN0IFN0cmluZyYgcmVjb3JkUmVwCiAgICAgICAgIG1fcmVjb3JkUmVwbGF5TW9kZSA9
IERpc2FibGVkOwogICAgIH0KIAotICAgIG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlY29yZFJlcGxheSk7CisgICAgbV9yZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZFJlcGxheUNhY2hl
TG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKICAgICBERUJVR19MT0coIkNhY2hlIGxv
Y2F0aW9uID0gIiBTVFJJTkdfU1BFQ0lGSUVSLCBERUJVR19TVFIobV9yZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uKSk7CiAKICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX3JlY29y
ZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9yZWNvcmRGaWxlSGFu
ZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIEZpbGVPcGVuTW9k
ZTo6T3BlbkZvcldyaXRlKTsKICAgICB9IGVsc2UgaWYgKGlzUmVwbGF5aW5nKCkpIHsKLSAgICAg
ICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQ
YXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKLSAgICAgICAgbV9sb2Fk
RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgoKSwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKLSAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxl
ID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCksIFdlYkNvcmU6OkZpbGVT
eXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNv
cmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JS
ZWFkKTsKKyAgICAgICAgbV9sb2FkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVw
b3J0TG9hZFBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3Jl
cGxheUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlcGxheVBhdGgoKSwg
RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgICAgICBsb2FkUmVzb3VyY2VzKCk7CiAg
ICAgfQogfQpAQCAtMzY1LDE3ICszNjcsMTcgQEAgdm9pZCBNYW5hZ2VyOjpsb2FkUmVzb3VyY2Vz
KCkKIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydExvYWRQYXRoKCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5
Q2FjaGVMb2NhdGlvbiwga0ZpbGVOYW1lUmVwb3J0TG9hZCk7CisgICAgcmV0dXJuIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJl
cG9ydExvYWQpOwogfQogCiBTdHJpbmcgTWFuYWdlcjo6cmVwb3J0UmVjb3JkUGF0aCgpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7CisgICAg
cmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRp
b24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7CiB9CiAKIFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRS
ZXBsYXlQYXRoKCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0ZpbGVOYW1lUmVw
b3J0UmVwbGF5KTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3Jk
UmVwbGF5Q2FjaGVMb2NhdGlvbiwga0ZpbGVOYW1lUmVwb3J0UmVwbGF5KTsKIH0KIAogU3RyaW5n
IE1hbmFnZXI6OnJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQpAQCAtNDExLDkgKzQxMyw5IEBAIFN0cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNv
bnN0IFN0cmluZyYgaGFzaCkKICAgICBmaWxlTmFtZS5hcHBlbmQoaGFzaFRhaWwpOwogICAgIGZp
bGVOYW1lLmFwcGVuZExpdGVyYWwoIi5kYXRhIik7CiAKLSAgICBhdXRvIHBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uLCBrRGlyTmFtZVJlc291cmNlcyk7Ci0gICAgcGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7Ci0gICAgcGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBm
aWxlTmFtZS50b1N0cmluZygpKTsKKyAgICBhdXRvIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlc291cmNlcyk7Cisg
ICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7CisgICAg
cGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZS50b1N0cmluZygp
KTsKIAogICAgIHJldHVybiBwYXRoOwogfQpAQCAtNDUyLDcgKzQ1NCw3IEBAIHZvaWQgTWFuYWdl
cjo6bG9nUGxheWVkQmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYm9vCiAgICAgbV9yZXBsYXlGaWxlSGFuZGxlLnByaW50ZigiJXMgJXNcbiIsIHdh
c0NhY2hlTWlzcyA/ICJtaXNzIiA6ICJoaXQgIiwgREVCVUdfU1RSKHVybC5zdHJpbmcoKSkpOwog
fQogCi1XZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCitX
ZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiB7CiAgICAgLy8gSWYgd2UgY2FuIHRyaXZpYWxs
eSBvcGVuIHRoZSBmaWxlLCB0aGVuIGRvIHRoYXQgYW5kIHJldHVybiB0aGUgbmV3IGZpbGUKICAg
ICAvLyBoYW5kbGUuCkBAIC00NjQsOSArNDY2LDkgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5h
Z2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGUK
ICAgICAvLyBJZiB3ZSdyZSBvcGVuaW5nIHRoZSBmaWxlIGZvciB3cml0aW5nIChpbmNsdWRpbmcg
YXBwZW5kaW5nKSwgdGhlbiB0cnkKICAgICAvLyBhZ2FpbiBhZnRlciBtYWtpbmcgc3VyZSBhbGwg
aW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiBjcmVhdGVkLgogCi0gICAgaWYgKG1v
ZGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpIHsKLSAgICAgICAgY29uc3Qg
YXV0byYgcGFyZW50RGlyID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxl
UGF0aCk7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKHBhcmVudERpcikpIHsKKyAgICBpZiAobW9kZSAhPSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JS
ZWFkKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHBhcmVudERpciA9IGRpcmVjdG9yeU5hbWUoZmls
ZVBhdGgpOworICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhwYXJlbnREaXIpKSB7CiAg
ICAgICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9yICVkIHRyeWluZyB0byBjcmVhdGUgaW50
ZXJtZWRpYXRlIGRpcmVjdG9yaWVzOiAiIFNUUklOR19TUEVDSUZJRVIsIGVycm5vLCBERUJVR19T
VFIocGFyZW50RGlyKSk7CiAgICAgICAgICAgICByZXR1cm4gZmlsZUhhbmRsZTsKICAgICAgICAg
fQpAQCAtNDc5LDcgKzQ4MSw3IEBAIFdlYkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNh
Y2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxlCiAgICAgLy8gQ291
bGQgbm90IG9wZW4gdGhlIGZpbGUuIExvZyB0aGUgZXJyb3IgYW5kIGxlYXZlLCByZXR1cm5pbmcg
dGhlIGludmFsaWQKICAgICAvLyBmaWxlIGhhbmRsZS4KIAotICAgIGlmIChtb2RlID09IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKQorICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9k
ZTo6T3BlbkZvclJlYWQpCiAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5n
IHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVSICIgZm9yIHJlYWRpbmciLCBlcnJubywgREVCVUdf
U1RSKGZpbGVQYXRoKSk7CiAgICAgZWxzZQogICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9y
ICVkIHRyeWluZyB0byBvcGVuICIgU1RSSU5HX1NQRUNJRklFUiAiIGZvciB3cml0aW5nIiwgZXJy
bm8sIERFQlVHX1NUUihmaWxlUGF0aCkpOwpAQCAtNDkwLDcgKzQ5Miw3IEBAIFdlYkNvcmU6OkZp
bGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBX
ZWJDb3JlOjpGaWxlCiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4+IE1hbmFn
ZXI6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgYm9vbCBzdWNjZXNz
ID0gZmFsc2U7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZShm
aWxlUGF0aCwgc3VjY2Vzcyk7CisgICAgTWFwcGVkRmlsZURhdGEgZmlsZShmaWxlUGF0aCwgc3Vj
Y2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHAKaW5kZXggM2E1NTlhNjE4NDUuLjFhMzA1NWM5
ODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBSZWNvcmRlcjo6cmVjb3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQogdm9pZCBSZWNvcmRlcjo6d3JpdGVFdmVudHMoKQogewogICAgIGF1dG8gcGF0aCA9
IE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlcXVlc3RUb1BhdGgobV9pbml0aWFsUmVxdWVzdCk7Ci0g
ICAgYXV0byBoYW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgs
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBoYW5kbGUgPSBN
YW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCmlu
ZGV4IDk2MzZmMTFmOGMxLi44ZDhmMDU1Yzc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
TWVtb3J5U2FtcGxlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBs
ZXI6OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZQogICAgIGlmIChtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2Ft
cGxlTG9nU2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogICAgIG1fc2FtcGxlTG9nRmlsZVBh
dGggPSBzYW1wbGVMb2dGaWxlUGF0aDsKLSAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBGaWxlU3lzdGVt
OjpvcGVuRmlsZShtX3NhbXBsZUxvZ0ZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUp
OworICAgIG1fc2FtcGxlTG9nRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fc2FtcGxlTG9n
RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICB3
cml0ZUhlYWRlcnMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMTE2YWQyZDM3MTIuLjg0NTFm
MGNiNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDo6TmV0d29ya0NhY2hlOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkZpbGVTeXN0ZW07CiAK
IG5hbWVzcGFjZSBBUEkgewogICAgIApAQCAtODUsNyArODYsNyBAQCBDb250ZW50UnVsZUxpc3RT
dG9yZTo6Q29udGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwg
Ym9vbCBsZQogICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1
bGVMaXN0U3RvcmUgUmVtb3ZlIFF1ZXVlIikpCiAgICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2Fj
eUZpbGVuYW1lKQogewotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhzdG9yZVBhdGgpOworICAgIG1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQogCiBD
b250ZW50UnVsZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKQEAgLTEwOCw3ICsx
MDksNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihib29sIGxl
Z2FjeUZpbGVuYW1lKQogCiBzdGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBTdHJp
bmcmIGJhc2UsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCBsZWdhY3lGaWxlbmFtZSkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGJhc2UsIG1ha2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1l
KSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsK
KyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29u
c3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgZW5jb2RlRm9yRmlsZU5hbWUoaWRl
bnRpZmllcikpKTsKIH0KIAogLy8gVGhlIHNpemUgYW5kIG9mZnNldCBvZiB0aGUgZGVuc2VseSBw
YWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2YgYW5kIG9mZnNldG9mLCB3aGljaCB3
b3VsZApAQCAtMTg0LDcgKzE4NSw3IEBAIHN0YXRpYyBib29sIGRlY29kZUNvbnRlbnRSdWxlTGlz
dE1ldGFEYXRhKENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSwgY29uCiAKIHN0YXRp
YyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250
ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEmIGZpbGVEYXRhKQogewotICAgIGZp
bGVEYXRhID0gbWFwRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBmaWxlRGF0YSA9IG1hcEZpbGUoZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKGZpbGVEYXRhLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5NCwxMSArMTk1LDExIEBAIHN0YXRpYyBib29s
IG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVs
ZUxpc3RNZXRhRGF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlRGF0
YVRvRmlsZShjb25zdCBEYXRhJiBmaWxlRGF0YSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZkKQorc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9GaWxlKGNvbnN0IERhdGEm
IGZpbGVEYXRhLCBQbGF0Zm9ybUZpbGVIYW5kbGUgZmQpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
dHJ1ZTsKICAgICBmaWxlRGF0YS5hcHBseShbZmQsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgeworICAgICAgICBp
ZiAod3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgewogICAg
ICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC0yMTQsNyArMjE1LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
ZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKIAogICAg
IGNsYXNzIENvbXBpbGF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbnRlbnRFeHRlbnNpb25D
b21waWxhdGlvbkNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBDb21waWxhdGlvbkNsaWVu
dChXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29u
dGVudFJ1bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhKQorICAgICAgICBDb21waWxhdGlvbkNsaWVu
dChQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEm
IG1ldGFEYXRhKQogICAgICAgICAgICAgOiBtX2ZpbGVIYW5kbGUoZmlsZUhhbmRsZSkKICAgICAg
ICAgICAgICwgbV9tZXRhRGF0YShtZXRhRGF0YSkKICAgICAgICAgewpAQCAtMjg3LDggKzI4OCw4
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwg
Y29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRp
dGlvbnNBcHBseU9ubHlUb0RvbWFpbiA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxl
TGlzdE1ldGFEYXRhKG1fbWV0YURhdGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAm
JiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkg
ewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVI
YW5kbGUpOworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBzZWVrRmlsZShtX2ZpbGVI
YW5kbGUsIDBsbCwgRmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewor
ICAgICAgICAgICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICAgICAgICAg
IG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdyaXRlVG9G
aWxlKGhlYWRlcik7CkBAIC0zMDQsMTIgKzMwNSwxMiBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2Rl
IGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0
aAogICAgICAgICB2b2lkIHdyaXRlVG9GaWxlKGNvbnN0IERhdGEmIGRhdGEpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgIXdyaXRlRGF0YVRvRmlsZShkYXRhLCBt
X2ZpbGVIYW5kbGUpKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICAgICAgY2xvc2VGaWxlKG1fZmlsZUhh
bmRsZSk7CiAgICAgICAgICAgICAgICAgbV9maWxlRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOworICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9maWxlSGFuZGxlOwogICAgICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbV9tZXRhRGF0
YTsKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0
dGVuIHsgMCB9OwogICAgICAgICBzaXplX3QgbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2Rl
V3JpdHRlbiB7IDAgfTsKQEAgLTMyMCwyNyArMzIxLDI3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2Nv
ZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQ
YXRoCiAgICAgICAgIGJvb2wgbV9maWxlRXJyb3IgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBh
dXRvIHRlbXBvcmFyeUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOwotICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiLCB0ZW1wb3Jh
cnlGaWxlSGFuZGxlKTsKLSAgICBpZiAodGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gdGVtcG9yYXJ5
RmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHRlbXBv
cmFyeUZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIkNvbnRlbnRSdWxlTGlzdCIsIHRlbXBv
cmFyeUZpbGVIYW5kbGUpOworICAgIGlmICh0ZW1wb3JhcnlGaWxlSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6
RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgCiAgICAgY2hhciBpbnZhbGlkSGVhZGVyW0NvbnRl
bnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplXTsKICAgICBtZW1zZXQoaW52YWxpZEhlYWRlciwgMHhG
Riwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKICAgICAvLyBUaGlzIGhlYWRlciB3aWxsIGJlIHJl
d3JpdHRlbiBpbiBDb21waWxhdGlvbkNsaWVudDo6ZmluYWxpemUuCi0gICAgaWYgKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUsIGludmFsaWRIZWFk
ZXIsIHNpemVvZihpbnZhbGlkSGVhZGVyKSkgPT0gLTEpIHsKLSAgICAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgIGlmICh3cml0ZVRv
RmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlkSGVhZGVyLCBzaXplb2YoaW52YWxpZEhl
YWRlcikpID09IC0xKSB7CisgICAgICAgIGNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsK
ICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxl
ZDsKICAgICB9CiAKICAgICBDb21waWxhdGlvbkNsaWVudCBjb21waWxhdGlvbkNsaWVudCh0ZW1w
b3JhcnlGaWxlSGFuZGxlLCBtZXRhRGF0YSk7CiAgICAgCiAgICAgaWYgKGF1dG8gY29tcGlsZXJF
cnJvciA9IGNvbXBpbGVSdWxlTGlzdChjb21waWxhdGlvbkNsaWVudCwgV1RGTW92ZShqc29uKSkp
IHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVI
YW5kbGUpOworICAgICAgICBjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAg
IHJldHVybiBjb21waWxlckVycm9yOwogICAgIH0KICAgICBpZiAoY29tcGlsYXRpb25DbGllbnQu
aGFkRXJyb3JXaGlsZVdyaXRpbmdUb0ZpbGUoKSkgewotICAgICAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIGNsb3NlRmlsZSh0
ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3Jl
OjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKICAgICB9CiAgICAgCkBAIC0zNDgsNyArMzQ5LDcgQEAg
c3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25z
dCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICBpZiAobWFwcGVkRGF0YS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsK
IAotICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bW92ZUZpbGUodGVtcG9yYXJ5RmlsZVBh
dGgsIGZpbmFsRmlsZVBhdGgpKQorICAgIGlmICghbW92ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgs
IGZpbmFsRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVy
cm9yOjpDb21waWxlRmFpbGVkOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTQxMiwxMiArNDEzLDEy
IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlz
dElkZW50aWZpZXJzKEZ1bmN0aW9uPHZvaWQoCiB7CiAgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRo
Lmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAK
LSAgICAgICAgVmVjdG9yPFN0cmluZz4gZnVsbFBhdGhzID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lGaWxl
bmFtZSkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBmdWxsUGF0aHMgPSBsaXN0RGlyZWN0b3J5
KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVyKGxlZ2FjeUZpbGVuYW1lKSk7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzOwogICAgICAgICBpZGVudGlmaWVycy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGZ1bGxQYXRocy5zaXplKCkpOwogICAgICAgICBjb25zdCBhdXRv
IHByZWZpeExlbmd0aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFtZSkubGVu
Z3RoKCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGZ1bGxQYXRocykKLSAgICAg
ICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsg
MSArIHByZWZpeExlbmd0aCkpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFw
cGVuZChkZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgn
LycpICsgMSArIHByZWZpeExlbmd0aCkpKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9IFdURk1v
dmUoaWRlbnRpZmllcnMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShpZGVudGlmaWVycykpOwpAQCAtNDU0LDcgKzQ1NSw3IEBAIHZvaWQgQ29udGVu
dFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllciwKICAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwg
c3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0g
bV9sZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRo
KHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOwogCi0gICAgICAgIGlmICgh
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKSkgeworICAgICAgICBpZiAoIWRl
bGV0ZUZpbGUocGF0aCkpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKICAgICAgICAgICAgIH0pOwpAQCAtNDY5
LDE5ICs0NzAsMTkgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1
bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAogCiB2b2lkIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpzeW5jaHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogewotICAg
IGZvciAoY29uc3QgYXV0byYgcGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobV9zdG9yZVBhdGgsICIqIikpCi0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUocGF0aCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogbGlzdERpcmVjdG9yeSht
X3N0b3JlUGF0aCwgIioiKSkKKyAgICAgICAgZGVsZXRlRmlsZShwYXRoKTsKIH0KIAogdm9pZCBD
b250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNpb24oY29u
c3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBmaWxlID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6b3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQYXRoLCBpZGVudGlm
aWVyLCBtX2xlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRl
KTsKLSAgICBpZiAoZmlsZSA9PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQorICAgIGF1dG8gZmlsZSA9IG9wZW5GaWxlKGNvbnN0cnVjdGVkUGF0aChtX3N0
b3JlUGF0aCwgaWRlbnRpZmllciwgbV9sZWdhY3lGaWxlbmFtZSksIEZpbGVPcGVuTW9kZTo6T3Bl
bkZvcldyaXRlKTsKKyAgICBpZiAoZmlsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQog
ICAgICAgICByZXR1cm47CiAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEgaW52YWxpZEhlYWRl
ciA9IHswLCAwLCAwLCAwLCAwLCAwfTsKLSAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KCZpbnZhbGlkSGVhZGVyKSwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKKyAgICBhdXRvIGJ5
dGVzV3JpdHRlbiA9IHdyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KCZpbnZhbGlkSGVhZGVyKSwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKICAgICBBU1NFUlRf
VU5VU0VEKGJ5dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNpemVvZihpbnZhbGlkSGVhZGVy
KSk7Ci0gICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIGNsb3Nl
RmlsZShmaWxlKTsKIH0KIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0Q29udGVudFJ1
bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lk
KFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcAppbmRleCBkMWRmZjRmOTY5Yi4uY2FlYzQ4M2U4YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgYm9v
bCBoYXNGaWxlQ2hhbmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgc2luY2Up
CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2RlckZvckZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKHBhdGgsIEZp
bGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5BbmRMb2NrRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFk
KTsKICAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OndyaXRlTWVtb3J5U3RvcmVU
b0Rpc2soKQogICAgICAgICBleGNsdWRlRnJvbUJhY2t1cCgpOwogICAgIH0KIAotICAgIGF1dG8g
aGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgo
KSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0
ZW06Om9wZW5BbmRMb2NrRmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRoKCksIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCmluZGV4IDc3OTZhNGFmOGEzLi4wN2ExYjE1YzZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTExLTAzICBDaHJpc3Rv
cGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBVc2UgZW51bSBjbGFz
c2VzIHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorCiAyMDE3LTExLTAy
ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgdHJ5
IHRvIGd1ZXNzIHBsdWdpbiBNSU1FIHR5cGUgZnJvbSBhIGZpbGUgZXh0ZW5zaW9uIGluIGEgVVJM
IChubyBvYnNlcnZhYmxlIGVmZmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggMzI4NTA2ZjBhYzYuLmVhMmQ2NDMzOWY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlLmNwcApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZTsKICAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNp
c3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwotICAgIGZpbGUgPSBGaWxlU3lzdGVt
OjpvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOwor
ICAgIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTU2Niw3ICs1NjYsNyBA
QCB2b2lkIFBsdWdpbkRhdGFiYXNlOjp1cGRhdGVQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
OwotICAgIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmls
ZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
YWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRl
KTsKIAogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBvcGVuIHBsdWdpbiBtZXRhZGF0YSBjYWNoZSBmb3Igc2F2
aW5nIik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggODI4YjAyYzc2N2UuLjBhN2M1NTMyNWYxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTEtMDMgIENocmlz
dG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFVzZSBlbnVtIGNs
YXNzZXMgd2l0aGluIEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9y
LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJh
c2VUcmFja2VyVGVzdC5tbToKKwogMjAxNy0xMS0wNiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0
YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gLVdzaWduLWNvbXBhcmUgd2Fybmlu
ZyBpbiBFdmVudFNlbmRlclByb3h5V1BFLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMjUyNzQ0YjQyMWQuLjJiMzY0Mzll
YTdlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgY29uc3RleHByIGludCBidWZmZXJTaXpl
ID0gMTAyNDsKIAotICAgIGF1dG8gc291cmNlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwg
RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGF1dG8gc291cmNlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKHNvdXJjZSkpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCkBAIC0zNzksNyArMzc5LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9y
VGVzdCwgRGV0ZWN0RGVsZXRlQnV0Tm90U3Vic2VxdWVudENoYW5nZSkKICAgICB0ZXN0UXVldWUt
PmRpc3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAotICAgICAgICBhdXRvIGhhbmRs
ZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpPcGVu
Rm9yV3JpdGUpOworICAgICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHRl
bXBGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAg
ICAgICAgIEFTU0VSVF9ORShoYW5kbGUsIEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpOwogCiAgICAgICAgIGludCByYyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRs
ZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRvclRlc3REYXRh
Lmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggMmUyYzM5NDc4ZTUu
LjViOGFjNWRkNGM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQpAQCAtODcsNyArODcs
NyBAQCBzdGF0aWMgdm9pZCByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeVBhdGgpCiAKIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVBdFBhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
SGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldy
aXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZv
cldyaXRlKTsKICAgICBFWFBFQ1RfTkUoLTEsIGZpbGVIYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKHBhdGgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326133</attachid>
            <date>2017-11-06 10:53:38 -0800</date>
            <delta_ts>2017-11-06 12:20:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>175172-4.diff</filename>
            <type>text/plain</type>
            <size>47440</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMjBiMDBjNzlhMGYuLjMwMTA4ZGJlOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3
LTExLTAzICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBoZWxwZXIgZnVuY3Rpb24gZm9y
IGNvbnZlcnRpbmcgZW51bSBjbGFzc2VzIHRvIHRoZWlyIHVuZGVybHlpbmcgdHlwZSB3aGVuIG5l
Y2Vzc2FyeS4KKworICAgICAgICAqIHd0Zi9FbnVtVHJhaXRzLmg6CisKIDIwMTctMTEtMDYgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
W0dUS10gQWx3YXlzIHVzZSBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRCB0byBzZXQgYnVpbGQgdmFy
aWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9FbnVtVHJhaXRzLmgKaW5kZXggN2JkMmUzODc3NzEuLmNhMmQ2Mzg1Y2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FbnVtVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYv
RW51bVRyYWl0cy5oCkBAIC01OSw2ICs1OSwxMiBAQCBjb25zdGV4cHIgYXV0byBpc1ZhbGlkRW51
bShUIHQpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgYm9vbAog
ICAgIHJldHVybiBFbnVtVmFsdWVDaGVja2VyPFQsIHR5cGVuYW1lIEVudW1UcmFpdHM8RT46OnZh
bHVlcz46OmlzVmFsaWRFbnVtKHQpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBFPgorY29uc3Rl
eHByIGF1dG8gZW51bVRvVW5kZXJseWluZ1R5cGUoRSBlKQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+PihlKTsKK30KKwogfQogCiB1c2luZyBXVEY6
OmlzVmFsaWRFbnVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI4N2ZkNTU1NzgxLi5mMWI5MGQyOGUwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTExLTAzICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBG
aWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICBVc2luZyBl
bnVtIGNsYXNzZXMgaW4gZmlsZXN5c3RlbSB0byBlbmZvcmNlIHN0cm9uZ2VyIHR5cGUgc2FmZXR5
LgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JD
b2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uY3BwOgorCiAyMDE3LTExLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIEpJVCBjYWxsIGlubGluZSBjYWNoZXMgc2hvdWxkIGNhY2hlIGNhbGxz
IHRvIG9iamVjdHMgd2l0aCBnZXRDYWxsRGF0YS9nZXRDb25zdHJ1Y3REYXRhIHRyYXBzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcAppbmRl
eCAzMWQyZDA0YjAxNC4uMjM3MjZhYjhkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE9y
aWdpbkxvY2s6OmxvY2soKQogICAgIG1fbXV0ZXgubG9jaygpOwogCiAjaWYgVVNFKEZJTEVfTE9D
SykKLSAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUobV9sb2Nr
RmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9sb2NrSGFuZGxlID0g
RmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1lLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKG1fbG9ja0hhbmRsZSA9PSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIC8vIFRoZSBvbmx5
IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBs
b2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2VyZSBnaXZlbiBhIHBhdGgg
dG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggYTIx
NTBlZDJmYWMuLmIwZThjYWQzMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEzMDQsNyAr
MTMwNCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgICAgIGZ1bGxQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CiAgICAg
fSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5
IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZnVs
bFBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUu
aAppbmRleCA1NjNmZWQ5ODk0MC4uMWY3MWJjNTJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlSGFuZGxlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1fbW9kZSB7IEZpbGVT
eXN0ZW06Ok9wZW5Gb3JSZWFkIH07CisgICAgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1fbW9k
ZSB7IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQgfTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3Ry
ZWFtLmNwcAppbmRleCBmNzQ1ZDdjMWRjOC4uMDM4NDAyNDNjODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC03NCwxMyArNzQsMTMgQEAgYm9vbCBGaWxlU3RyZWFt
OjpvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcg
bG9uZyBsZW4KICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBPcGVuIHRoZSBmaWxlLgot
ICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3Bl
bkZvclJlYWQpOworICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gSnVtcCB0byB0aGUgYmVnaW5uaW5nIHBvc2l0aW9uIGlmIHRoZSBmaWxlIGhhcyBiZWVuIHNs
aWNlZC4KICAgICBpZiAob2Zmc2V0ID4gMCkgewotICAgICAgICBpZiAoRmlsZVN5c3RlbTo6c2Vl
a0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6U2Vla0Zyb21CZWdpbm5pbmcpIDwg
MCkKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1faGFuZGxlLCBvZmZzZXQsIEZp
bGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykgPCAwKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmNwcAppbmRleCBiODk0NzVlMDI1OC4uNDE4ZGJhOTJjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgU3RyaW5nIGxhc3RDb21w
b25lbnRPZlBhdGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQogCiBi
b29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQogewotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUo
cGF0aCwgT3BlbkZvclJlYWQpOworICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgRmls
ZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoc291cmNl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5o
CmluZGV4IGE2YzdlM2ViN2MyLi4wNjhiZmY0ZjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uaApAQCAtNzQsNyArNzQsNyBAQCB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5k
bGU7CiBjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9
IC0xOwogI2VuZGlmCiAKLWVudW0gRmlsZU9wZW5Nb2RlIHsKK2VudW0gY2xhc3MgRmlsZU9wZW5N
b2RlIHsKICAgICBPcGVuRm9yUmVhZCA9IDAsCiAgICAgT3BlbkZvcldyaXRlLAogI2lmIE9TKERB
UldJTikKQEAgLTgyLDEzICs4MiwxMyBAQCBlbnVtIEZpbGVPcGVuTW9kZSB7CiAjZW5kaWYKIH07
CiAKLWVudW0gRmlsZVNlZWtPcmlnaW4geworZW51bSBjbGFzcyBGaWxlU2Vla09yaWdpbiB7CiAg
ICAgU2Vla0Zyb21CZWdpbm5pbmcgPSAwLAogICAgIFNlZWtGcm9tQ3VycmVudCwKICAgICBTZWVr
RnJvbUVuZAogfTsKIAotZW51bSBGaWxlTG9ja01vZGUgeworZW51bSBjbGFzcyBGaWxlTG9ja01v
ZGUgewogICAgIExvY2tTaGFyZWQgPSAxLAogICAgIExvY2tFeGNsdXNpdmUgPSAyLAogICAgIExv
Y2tOb25CbG9ja2luZyA9IDQKQEAgLTE0NSw3ICsxNDUsNyBAQCBXRUJDT1JFX0VYUE9SVCBpbnQg
d3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQogLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNj
ZXNzZnVsLCAtMSBvdGhlcndpc2UuCiBXRUJDT1JFX0VYUE9SVCBpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKLVdFQkNPUkVfRVhQ
T1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmls
ZU9wZW5Nb2RlLCBGaWxlTG9ja01vZGUgPSBMb2NrRXhjbHVzaXZlKTsKK1dFQkNPUkVfRVhQT1JU
IFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwgRmlsZU9w
ZW5Nb2RlLCBGaWxlTG9ja01vZGUgPSBGaWxlTG9ja01vZGU6OkxvY2tFeGNsdXNpdmUpOwogV0VC
Q09SRV9FWFBPUlQgdm9pZCB1bmxvY2tBbmRDbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsK
IAogLy8gQXBwZW5kcyB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgZm91bmQgYXQgJ3BhdGgnIHRv
IHRoZSBvcGVuIFBsYXRmb3JtRmlsZUhhbmRsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4IDU3ODQzNGQyZDA3Li43Yjc3M2Uy
MDRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRv
ckNvY29hLm1tCkBAIC00Myw3ICs0Myw3IEBAIEZpbGVNb25pdG9yOjpGaWxlTW9uaXRvcihjb25z
dCBTdHJpbmcmIHBhdGgsIFJlZjxXb3JrUXVldWU+JiYgaGFuZGxlclF1ZXVlLCBXVEY6CiAgICAg
aWYgKCFtb2RpZmljYXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhh
bmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JFdmVu
dHNPbmx5KTsKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvckV2ZW50c09ubHkpOwogICAgIGlmIChoYW5k
bGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiRmFpbGVkIHRvIG9wZW4g
c3RhdGlzdGljcyBmaWxlIGZvciBtb25pdG9yaW5nOiAlcyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggOTE1MGE3NGUwMTAuLjdjYjZhZTU2YTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2lu
Y2x1ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dMaWJVdGlsaXRpZXMuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC0zNjIsOSArMzYzLDkgQEAgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAK
ICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
ZmlsZW5hbWUuZ2V0KCkpKTsKICAgICBHRmlsZUlPU3RyZWFtKiBpb1N0cmVhbSA9IDA7Ci0gICAg
aWYgKG1vZGUgPT0gT3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpP
cGVuRm9yUmVhZCkKICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmls
ZS5nZXQoKSwgMCwgMCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpIHsKKyAg
ICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKSB7CiAgICAgICAg
IGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihH
X0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCiAgICAgICAgICAg
ICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKICAg
ICAgICAgZWxzZQpAQCAtMzg4LDEzICszODksMTMgQEAgbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8K
IHsKICAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwogICAgIHN3aXRjaCAob3Jp
Z2luKSB7Ci0gICAgY2FzZSBTZWVrRnJvbUJlZ2lubmluZzoKKyAgICBjYXNlIEZpbGVTZWVrT3Jp
Z2luOjpTZWVrRnJvbUJlZ2lubmluZzoKICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVT
ZWVrT3JpZ2luOjpTZWVrRnJvbUN1cnJlbnQ6CiAgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NV
UjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZWVrRnJvbUVuZDoKKyAgICBjYXNlIEZpbGVT
ZWVrT3JpZ2luOjpTZWVrRnJvbUVuZDoKICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfRU5EOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtNDgyLDExICs0ODMsMTEgQEAgc3RkOjpv
cHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQog
I2lmIFVTRShGSUxFX0xPQ0spCiBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIEZpbGVMb2NrTW9kZSBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NI
ID09IExvY2tTaGFyZWQsIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoTE9DS19FWCA9PSBMb2NrRXhjbHVzaXZlLCBMb2NrRXhjbHVzaXZlRW5jb2Rp
bmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gTG9ja05vbkJs
b2NraW5nLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElM
RV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9k
ZTo6TG9ja1NoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09N
UElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2Nr
TW9kZTo6TG9ja0V4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBl
KEZpbGVMb2NrTW9kZTo6TG9ja05vbkJsb2NraW5nKSwgTG9ja05vbkJsb2NraW5nRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOwogICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lu
cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0gZmxvY2so
Z19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlu
cHV0U3RyZWFtKSksIGxvY2tNb2RlKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rl
c2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFt
KSksIFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUobG9ja01vZGUpKTsKICAgICByZXR1cm4gcmVz
dWx0ICE9IC0xOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCAwMzVhNmIxOTA2My4uMTNmNzM4ZjE4
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgQ3VybENhY2hlRW50
cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIGJvb2wgQ3VybENhY2hl
RW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRlckZpbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBGaWxlU3lzdGVtOjpPcGVuRm9y
V3JpdGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0g
RmlsZVN5c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChoZWFkZXJGaWxlKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3Vs
ZCBub3Qgb3BlbiAlcyBmb3Igd3JpdGVcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgQ3Vy
bENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJpbmcmIHVybCkKIGJv
b2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0
aCwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCiB7CiAgICAgLy8gT3BlbiB0aGUgZmlsZQotICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxl
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdv
cmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGZpbGVwYXRo
LmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2Myw3ICszNjMs
NyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpvcGVuQ29udGVudEZpbGUoKQogICAgIGlmIChGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKLSAgICBtX2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9jb250
ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9jb250ZW50Rmls
ZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fY29udGVudEZpbGVuYW1lLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAKICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKaW5kZXggNDZlMTdlOWZkMWYuLmZjZThlNjgyYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQog
ICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGgu
YXBwZW5kKCJpbmRleC5kYXQiKTsKIAotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yUmVhZCk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlu
ZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgV2Fybmlu
ZzogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgQ3VybENh
Y2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXgu
ZGF0Iik7CiAKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwotICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0
ZSk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAg
ICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdy
aXRlXG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CmluZGV4IGM2NzJkNzQxNDM3Li41MjA1NzViMzc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1
bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC04MiwxMiArODMsMTIgQEAgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAg
ICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgaW50IHBsYXRm
b3JtRmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gT3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUg
PT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCkKICAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9f
UkRPTkxZOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gT3BlbkZvcldyaXRlKQorICAgIGVsc2UgaWYg
KG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpCiAgICAgICAgIHBsYXRmb3JtRmxh
ZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CiAjaWYgT1MoREFSV0lOKQotICAg
IGVsc2UgaWYgKG1vZGUgPT0gT3BlbkZvckV2ZW50c09ubHkpCisgICAgZWxzZSBpZiAobW9kZSA9
PSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JFdmVudHNPbmx5KQogICAgICAgICBwbGF0Zm9ybUZsYWcg
fD0gT19FVlRPTkxZOwogI2VuZGlmCiAKQEAgLTEwNiwxMyArMTA3LDEzIEBAIGxvbmcgbG9uZyBz
ZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxl
U2Vla09yaWdpbiBvCiB7CiAgICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOwogICAgIHN3aXRjaCAo
b3JpZ2luKSB7Ci0gICAgY2FzZSBTZWVrRnJvbUJlZ2lubmluZzoKKyAgICBjYXNlIEZpbGVTZWVr
T3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZzoKICAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vla0Zyb21DdXJyZW50OgorICAgIGNhc2UgRmlsZVNl
ZWtPcmlnaW46OlNlZWtGcm9tQ3VycmVudDoKICAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vla0Zyb21FbmQ6CisgICAgY2FzZSBGaWxlU2Vla09y
aWdpbjo6U2Vla0Zyb21FbmQ6CiAgICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTUwLDEwICsxNTEsMTAgQEAgaW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogI2lm
IFVTRShGSUxFX0xPQ0spCiBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IEZpbGVMb2NrTW9kZSBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09
IExvY2tTaGFyZWQsIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElM
RV9BU1NFUlQoTE9DS19FWCA9PSBMb2NrRXhjbHVzaXZlLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJ
c0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gTG9ja05vbkJsb2Nr
aW5nLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50IHJlc3Vs
dCA9IGZsb2NrKGhhbmRsZSwgbG9ja01vZGUpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0gg
PT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkxvY2tTaGFyZWQpLCBM
b2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tf
RVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkxvY2tFeGNsdXNp
dmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNT
RVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Okxv
Y2tOb25CbG9ja2luZyksIExvY2tOb25CbG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAg
ICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKGxv
Y2tNb2RlKSk7CiAgICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggYmRhZTRiZmMxN2MuLjZl
MmMyOTY4NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCwgdGltZV90JiB0aW1lKQogCiBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0
aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUo
cGF0aCwgT3BlbkZvclJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmls
ZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtNDE4LDEyICs0MTgsMTIgQEAgUGxhdGZv
cm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1v
ZGUpCiAgICAgRFdPUkQgY3JlYXRpb25EaXNwb3NpdGlvbiA9IDA7CiAgICAgRFdPUkQgc2hhcmVN
b2RlID0gMDsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIE9wZW5Gb3JSZWFkOgorICAg
IGNhc2UgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZDoKICAgICAgICAgZGVzaXJlZEFjY2VzcyA9
IEdFTkVSSUNfUkVBRDsKICAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IE9QRU5fRVhJU1RJ
Tkc7CiAgICAgICAgIHNoYXJlTW9kZSA9IEZJTEVfU0hBUkVfUkVBRDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBPcGVuRm9yV3JpdGU6CisgICAgY2FzZSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JX
cml0ZToKICAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CiAgICAgICAgIGNy
ZWF0aW9uRGlzcG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOwogICAgICAgICBicmVhazsKQEAgLTQ0
Nyw5ICs0NDcsOSBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogewogICAgIERXT1JEIG1vdmVN
ZXRob2QgPSBGSUxFX0JFR0lOOwogCi0gICAgaWYgKG9yaWdpbiA9PSBTZWVrRnJvbUN1cnJlbnQp
CisgICAgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21DdXJyZW50KQogICAg
ICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOwotICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBT
ZWVrRnJvbUVuZCkKKyAgICBlbHNlIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OlNlZWtG
cm9tRW5kKQogICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9FTkQ7CiAKICAgICBMQVJHRV9JTlRF
R0VSIGxhcmdlT2Zmc2V0OwpAQCAtNTMwLDcgKzUzMCw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNw
YWNlKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90JikKIAogc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxl
ID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgT3BlbkZvclJlYWQpOworICAgIGF1dG8gaGFuZGxl
ID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CiAg
ICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IGU1MWEyNGUyOTk5Li44MDgxZjAxZjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVXaW4uY3BwCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBTdHJpbmcgUmVuZGVyVGhl
bWVXaW46OnN0cmluZ1dpdGhDb250ZW50c09mRmlsZShDRlN0cmluZ1JlZiBuYW1lLCBDRlN0cmlu
Z1JlZiB0eQogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocmVxdWVz
dGVkVVJMUmVmLmdldCgpLCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIE1BWF9QQVRIKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShyZXF1ZXN0ZWRG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cmVxdWVzdGVkRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQp
OwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChyZXF1ZXN0ZWRGaWxlSGFuZGxl
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQyY2Q0ZTlkNjRkLi40
OGJjZGY4NDhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0xMS0wMyAgQ2hyaXN0
b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgVXNlIGVudW0gY2xh
c3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVjb3JkZXIu
Y3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKwogMjAx
Ny0xMS0wNiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV0gUHJvcGVybHkgdXNlIFNZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTIGZvciBX
ZWJLaXQgYnVpbGQgdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAppbmRleCA5Mzk4Yjcz
NmE3Yy4uZWIwYWMwNWY5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcApAQCAtNjYsNyAr
NjYsNyBAQCB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5h
dGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUAogICAgIH0KIAogICAgIG1fZGVzdGluYXRp
b25QYXRoID0gZGVzdGluYXRpb25QYXRoOwotICAgIG1fZGVzdGluYXRpb25GaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0
ZSk7CisgICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX2Rlc3Rp
bmF0aW9uUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAg
IG1fZG93bmxvYWQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwogCiAg
ICAgbV9kb3dubG9hZC5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXgg
NmRhNTNmM2UxYmIuLjAyNzg5ZjI0OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIAogICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQgdG8gJXMiLCB0aGlzLCBt
X3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9kb3dubG9h
ZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLCBG
aWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmIChtX2Rvd25sb2FkRmlsZSA9PSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIGRpZEZhaWxEb3dubG9h
ZChjYW5jZWxsZWRFcnJvcihtX2ZpcnN0UmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
aW5kZXggMTk1YzIzZjVhM2EuLmI5NDQzYzBmOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC00OSw2ICs0OSw3IEBA
CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDo6bGl0ZXJhbHM6OmNocm9ub19saXRlcmFs
czsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpAQCAtMTExLDcgKzExMiw3IEBAIENhY2hl
OjpDYWNoZShSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8T3B0aW9uPiBvcHRpb25z
KQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAvLyBUcmlnZ2VycyB3aXRoICJ0
b3VjaCAkY2FjaGVQYXRoL2R1bXAiLgotICAgICAgICBDU3RyaW5nIGR1bXBGaWxlUGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aCgpLCAi
ZHVtcCIpKTsKKyAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZVBhdGgoKSwg
ImR1bXAiKSk7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IGR1bXBGaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgoZHVtcEZpbGVQYXRoLmRhdGEoKSkpOwogICAgICAgICBHRmlsZU1v
bml0b3IqIG1vbml0b3IgPSBnX2ZpbGVfbW9uaXRvcl9maWxlKGR1bXBGaWxlLmdldCgpLCBHX0ZJ
TEVfTU9OSVRPUl9OT05FLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgZ19zaWduYWxfY29u
bmVjdF9zd2FwcGVkKG1vbml0b3IsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhkdW1wRmlsZUNoYW5n
ZWQpLCB0aGlzKTsKQEAgLTUzNywxNiArNTM4LDE2IEBAIHZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQog
CiBTdHJpbmcgQ2FjaGU6OmR1bXBGaWxlUGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPnZlcnNp
b25QYXRoKCksICJkdW1wLmpzb24iKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fc3RvcmFnZS0+dmVyc2lvblBhdGgoKSwgImR1bXAuanNvbiIpOwogfQogCiB2b2lkIENh
Y2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogewotICAgIGF1dG8gZmQgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpvcGVuRmlsZShkdW1wRmlsZVBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3Bl
bkZvcldyaXRlKTsKLSAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
ZmQpKQorICAgIGF1dG8gZmQgPSBvcGVuRmlsZShkdW1wRmlsZVBhdGgoKSwgRmlsZU9wZW5Nb2Rl
OjpPcGVuRm9yV3JpdGUpOworICAgIGlmICghaXNIYW5kbGVWYWxpZChmZCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBhdXRvIHByb2xvZ3VlID0gU3RyaW5nKCJ7XG5cImVudHJpZXNcIjogW1xuIiku
dXRmOCgpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZkLCBwcm9sb2d1
ZS5kYXRhKCksIHByb2xvZ3VlLmxlbmd0aCgpKTsKKyAgICB3cml0ZVRvRmlsZShmZCwgcHJvbG9n
dWUuZGF0YSgpLCBwcm9sb2d1ZS5sZW5ndGgoKSk7CiAKICAgICBzdHJ1Y3QgVG90YWxzIHsKICAg
ICAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CkBAIC01NzUsOCArNTc2LDggQEAgdm9pZCBDYWNo
ZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAgICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVy
YWwoIlxuIik7CiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJ9XG59XG4iKTsK
ICAgICAgICAgICAgIGF1dG8gd3JpdGVEYXRhID0gZXBpbG9ndWUudG9TdHJpbmcoKS51dGY4KCk7
Ci0gICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgd3JpdGVE
YXRhLmRhdGEoKSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmZCk7CisgICAgICAgICAgICB3cml0ZVRvRmlsZShmZCwgd3Jp
dGVEYXRhLmRhdGEoKSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNsb3NlRmls
ZShmZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBlbnRy
eSA9IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwpAQCAtNTkwLDE0ICs1OTEs
MTQgQEAgdm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAgICAgZW50cnktPmFz
SlNPTihqc29uLCBpbmZvKTsKICAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAg
ICAgICAgYXV0byB3cml0ZURhdGEgPSBqc29uLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEoKSwgd3Jp
dGVEYXRhLmxlbmd0aCgpKTsKKyAgICAgICAgd3JpdGVUb0ZpbGUoZmQsIHdyaXRlRGF0YS5kYXRh
KCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgQ2FjaGU6OmRlbGV0
ZUR1bXBGaWxlKCkKIHsKICAgICBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5D
YWNoZS5kZWxldGUiKS0+ZGlzcGF0Y2goW3BhdGggPSBkdW1wRmlsZVBhdGgoKS5pc29sYXRlZENv
cHkoKV0gewotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOwor
ICAgICAgICBkZWxldGVGaWxlKHBhdGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1h
bmFnZXIuY3BwCmluZGV4IGUyZDQxZWU3ODRhLi5lZjI2YTI5Nzg1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0
dXJlTWFuYWdlci5jcHAKQEAgLTQyLDYgKzQyLDggQEAKIAogI2RlZmluZSBERUJVR19DTEFTUyBN
YW5hZ2VyCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOworCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FwdHVyZSB7CiAKQEAgLTczLDE1ICs3NSwx
NSBAQCB2b2lkIE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiByZWNvcmRSZXBsYXlN
b2RlLCBjb25zdCBTdHJpbmcmIHJlY29yZFJlcAogICAgICAgICBtX3JlY29yZFJlcGxheU1vZGUg
PSBEaXNhYmxlZDsKICAgICB9CiAKLSAgICBtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24gPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkUmVwbGF5
Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZWNvcmRSZXBsYXkpOworICAgIG1fcmVjb3JkUmVwbGF5
Q2FjaGVMb2NhdGlvbiA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uLCBrRGlyTmFtZVJlY29yZFJlcGxheSk7CiAgICAgREVCVUdfTE9HKCJDYWNoZSBs
b2NhdGlvbiA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fcmVjb3JkUmVwbGF5Q2Fj
aGVMb2NhdGlvbikpOwogCiAgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9yZWNv
cmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdl
YkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVjb3JkRmlsZUhh
bmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBGaWxlT3Blbk1v
ZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgfSBlbHNlIGlmIChpc1JlcGxheWluZygpKSB7Ci0gICAg
ICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3Jk
UGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7Ci0gICAgICAgIG1fbG9h
ZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRoKCksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgICAgIG1fcmVwbGF5RmlsZUhhbmRs
ZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJD
b3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9y
UmVhZCk7CisgICAgICAgIG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJl
cG9ydExvYWRQYXRoKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9y
ZXBsYXlGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCks
IEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKICAgICAgICAgbG9hZFJlc291cmNlcygpOwog
ICAgIH0KIH0KQEAgLTM2NSwxNyArMzY3LDE3IEBAIHZvaWQgTWFuYWdlcjo6bG9hZFJlc291cmNl
cygpCiAKIFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRMb2FkUGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxh
eUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydExvYWQpOworICAgIHJldHVybiBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVS
ZXBvcnRMb2FkKTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydFJlY29yZFBhdGgoKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOworICAg
IHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0
aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOwogfQogCiBTdHJpbmcgTWFuYWdlcjo6cmVwb3J0
UmVwbGF5UGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJl
cG9ydFJlcGxheSk7CisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29y
ZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlcGxheSk7CiB9CiAKIFN0cmlu
ZyBNYW5hZ2VyOjpyZXF1ZXN0VG9QYXRoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKQEAgLTQxMSw5ICs0MTMsOSBAQCBTdHJpbmcgTWFuYWdlcjo6aGFzaFRvUGF0aChj
b25zdCBTdHJpbmcmIGhhc2gpCiAgICAgZmlsZU5hbWUuYXBwZW5kKGhhc2hUYWlsKTsKICAgICBm
aWxlTmFtZS5hcHBlbmRMaXRlcmFsKCIuZGF0YSIpOwogCi0gICAgYXV0byBwYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2Fj
aGVMb2NhdGlvbiwga0Rpck5hbWVSZXNvdXJjZXMpOwotICAgIHBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgaGFzaEhlYWQpOwotICAgIHBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwg
ZmlsZU5hbWUudG9TdHJpbmcoKSk7CisgICAgYXV0byBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZXNvdXJjZXMpOwor
ICAgIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgaGFzaEhlYWQpOworICAg
IHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUudG9TdHJpbmco
KSk7CiAKICAgICByZXR1cm4gcGF0aDsKIH0KQEAgLTQ1Miw3ICs0NTQsNyBAQCB2b2lkIE1hbmFn
ZXI6OmxvZ1BsYXllZEJhY2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvbwogICAgIG1fcmVwbGF5RmlsZUhhbmRsZS5wcmludGYoIiVzICVzXG4iLCB3
YXNDYWNoZU1pc3MgPyAibWlzcyIgOiAiaGl0ICIsIERFQlVHX1NUUih1cmwuc3RyaW5nKCkpKTsK
IH0KIAotV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQor
V2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIC8vIElmIHdlIGNhbiB0cml2aWFs
bHkgb3BlbiB0aGUgZmlsZSwgdGhlbiBkbyB0aGF0IGFuZCByZXR1cm4gdGhlIG5ldyBmaWxlCiAg
ICAgLy8gaGFuZGxlLgpAQCAtNDY0LDkgKzQ2Niw5IEBAIFdlYkNvcmU6OkZpbGVIYW5kbGUgTWFu
YWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxl
CiAgICAgLy8gSWYgd2UncmUgb3BlbmluZyB0aGUgZmlsZSBmb3Igd3JpdGluZyAoaW5jbHVkaW5n
IGFwcGVuZGluZyksIHRoZW4gdHJ5CiAgICAgLy8gYWdhaW4gYWZ0ZXIgbWFraW5nIHN1cmUgYWxs
IGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyBoYXZlIGJlZW4gY3JlYXRlZC4KIAotICAgIGlmICht
b2RlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKSB7Ci0gICAgICAgIGNvbnN0
IGF1dG8mIHBhcmVudERpciA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmls
ZVBhdGgpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhwYXJlbnREaXIpKSB7CisgICAgaWYgKG1vZGUgIT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9y
UmVhZCkgeworICAgICAgICBjb25zdCBhdXRvJiBwYXJlbnREaXIgPSBkaXJlY3RvcnlOYW1lKGZp
bGVQYXRoKTsKKyAgICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMocGFyZW50RGlyKSkgewog
ICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJvciAlZCB0cnlpbmcgdG8gY3JlYXRlIGlu
dGVybWVkaWF0ZSBkaXJlY3RvcmllczogIiBTVFJJTkdfU1BFQ0lGSUVSLCBlcnJubywgREVCVUdf
U1RSKHBhcmVudERpcikpOwogICAgICAgICAgICAgcmV0dXJuIGZpbGVIYW5kbGU7CiAgICAgICAg
IH0KQEAgLTQ3OSw3ICs0ODEsNyBAQCBXZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5D
YWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZQogICAgIC8vIENv
dWxkIG5vdCBvcGVuIHRoZSBmaWxlLiBMb2cgdGhlIGVycm9yIGFuZCBsZWF2ZSwgcmV0dXJuaW5n
IHRoZSBpbnZhbGlkCiAgICAgLy8gZmlsZSBoYW5kbGUuCiAKLSAgICBpZiAobW9kZSA9PSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1v
ZGU6Ok9wZW5Gb3JSZWFkKQogICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9yICVkIHRyeWlu
ZyB0byBvcGVuICIgU1RSSU5HX1NQRUNJRklFUiAiIGZvciByZWFkaW5nIiwgZXJybm8sIERFQlVH
X1NUUihmaWxlUGF0aCkpOwogICAgIGVsc2UKICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJv
ciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3Igd3JpdGluZyIsIGVy
cm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKQEAgLTQ5MCw3ICs0OTIsNyBAQCBXZWJDb3JlOjpG
aWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
V2ViQ29yZTo6RmlsZQogc3RkOjpvcHRpb25hbDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+PiBNYW5h
Z2VyOjpyZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIGZpbGUo
ZmlsZVBhdGgsIHN1Y2Nlc3MpOworICAgIE1hcHBlZEZpbGVEYXRhIGZpbGUoZmlsZVBhdGgsIHN1
Y2Nlc3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0
dXJlL05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCmluZGV4IDNhNTU5YTYxODQ1Li4xYTMwNTVj
OTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBA
IHZvaWQgUmVjb3JkZXI6OnJlY29yZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHZvaWQgUmVjb3JkZXI6OndyaXRlRXZlbnRzKCkKIHsKICAgICBhdXRvIHBhdGgg
PSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5yZXF1ZXN0VG9QYXRoKG1faW5pdGlhbFJlcXVlc3QpOwot
ICAgIGF1dG8gaGFuZGxlID0gTWFuYWdlcjo6c2luZ2xldG9uKCkub3BlbkNhY2hlRmlsZShwYXRo
LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGF1dG8gaGFuZGxlID0g
TWFuYWdlcjo6c2luZ2xldG9uKCkub3BlbkNhY2hlRmlsZShwYXRoLCBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5
U2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcApp
bmRleCA5NjM2ZjExZjhjMS4uOGQ4ZjA1NWM3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Yk1lbW9yeVNhbXBsZXIuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1w
bGVyOjppbml0aWFsaXplU2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUKICAgICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3Nh
bXBsZUxvZ1NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKICAgICBtX3NhbXBsZUxvZ0ZpbGVQ
YXRoID0gc2FtcGxlTG9nRmlsZVBhdGg7Ci0gICAgbV9zYW1wbGVMb2dGaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUobV9zYW1wbGVMb2dGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRl
KTsKKyAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3NhbXBsZUxv
Z0ZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAg
d3JpdGVIZWFkZXJzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDExNmFkMmQzNzEyLi44NDUx
ZjBjYjYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8d3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpGaWxlU3lzdGVtOwog
CiBuYW1lc3BhY2UgQVBJIHsKICAgICAKQEAgLTg1LDcgKzg2LDcgQEAgQ29udGVudFJ1bGVMaXN0
U3RvcmU6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgs
IGJvb2wgbGUKICAgICAsIG1fcmVtb3ZlUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkNvbnRlbnRS
dWxlTGlzdFN0b3JlIFJlbW92ZSBRdWV1ZSIpKQogICAgICwgbV9sZWdhY3lGaWxlbmFtZShsZWdh
Y3lGaWxlbmFtZSkKIHsKLSAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoc3RvcmVQYXRoKTsKKyAgICBtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmVQYXRoKTsKIH0KIAog
Q29udGVudFJ1bGVMaXN0U3RvcmU6On5Db250ZW50UnVsZUxpc3RTdG9yZSgpCkBAIC0xMDgsNyAr
MTA5LDcgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIoYm9vbCBs
ZWdhY3lGaWxlbmFtZSkKIAogc3RhdGljIFN0cmluZyBjb25zdHJ1Y3RlZFBhdGgoY29uc3QgU3Ry
aW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgbGVnYWN5RmlsZW5hbWUp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChiYXNlLCBtYWtlU3RyaW5nKGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFt
ZSksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGlkZW50aWZpZXIpKSk7
CisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlLCBtYWtlU3RyaW5nKGNv
bnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFtZSksIGVuY29kZUZvckZpbGVOYW1lKGlk
ZW50aWZpZXIpKSk7CiB9CiAKIC8vIFRoZSBzaXplIGFuZCBvZmZzZXQgb2YgdGhlIGRlbnNlbHkg
cGFja2VkIGJ5dGVzIGluIHRoZSBmaWxlLCBub3Qgc2l6ZW9mIGFuZCBvZmZzZXRvZiwgd2hpY2gg
d291bGQKQEAgLTE4NCw3ICsxODUsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVDb250ZW50UnVsZUxp
c3RNZXRhRGF0YShDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIGNvbgogCiBzdGF0
aWMgYm9vbCBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgQ29u
dGVudFJ1bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhLCBEYXRhJiBmaWxlRGF0YSkKIHsKLSAgICBm
aWxlRGF0YSA9IG1hcEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgZmlsZURhdGEgPSBtYXBGaWxlKGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmIChmaWxlRGF0YS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTQsMTEgKzE5NSwxMSBAQCBzdGF0aWMgYm9v
bCBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgQ29udGVudFJ1
bGVMaXN0TWV0YURhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCB3cml0ZURh
dGFUb0ZpbGUoY29uc3QgRGF0YSYgZmlsZURhdGEsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBmZCkKK3N0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRh
JiBmaWxlRGF0YSwgUGxhdGZvcm1GaWxlSGFuZGxlIGZkKQogewogICAgIGJvb2wgc3VjY2VzcyA9
IHRydWU7CiAgICAgZmlsZURhdGEuYXBwbHkoW2ZkLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZkLCAoY29uc3QgY2hhciopZGF0YSwgc2l6ZSkgPT0gLTEpIHsKKyAgICAgICAg
aWYgKHdyaXRlVG9GaWxlKGZkLCAoY29uc3QgY2hhciopZGF0YSwgc2l6ZSkgPT0gLTEpIHsKICAg
ICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQpAQCAtMjE0LDcgKzIxNSw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGls
ZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAKICAg
ICBjbGFzcyBDb21waWxhdGlvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBDb250ZW50RXh0ZW5zaW9u
Q29tcGlsYXRpb25DbGllbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29tcGlsYXRpb25DbGll
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIENv
bnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSkKKyAgICAgICAgQ29tcGlsYXRpb25DbGll
bnQoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRh
JiBtZXRhRGF0YSkKICAgICAgICAgICAgIDogbV9maWxlSGFuZGxlKGZpbGVIYW5kbGUpCiAgICAg
ICAgICAgICAsIG1fbWV0YURhdGEobWV0YURhdGEpCiAgICAgICAgIHsKQEAgLTI4Nyw4ICsyODgs
OCBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24s
IGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAgICAgICAgbV9tZXRhRGF0YS5jb25k
aXRpb25zQXBwbHlPbmx5VG9Eb21haW4gPSBtX2NvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbjsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgRGF0YSBoZWFkZXIgPSBlbmNvZGVDb250ZW50UnVs
ZUxpc3RNZXRhRGF0YShtX21ldGFEYXRhKTsKLSAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3Ig
JiYgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlSGFuZGxlLCAwbGwsIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEp
IHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxl
SGFuZGxlKTsKKyAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgc2Vla0ZpbGUobV9maWxl
SGFuZGxlLCAwbGwsIEZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEpIHsK
KyAgICAgICAgICAgICAgICBjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKICAgICAgICAgICAgICAg
ICBtX2ZpbGVFcnJvciA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3cml0ZVRv
RmlsZShoZWFkZXIpOwpAQCAtMzA0LDEyICszMDUsMTIgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBh
dGgKICAgICAgICAgdm9pZCB3cml0ZVRvRmlsZShjb25zdCBEYXRhJiBkYXRhKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fZmlsZUVycm9yICYmICF3cml0ZURhdGFUb0ZpbGUoZGF0YSwg
bV9maWxlSGFuZGxlKSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgICAgIGNsb3NlRmlsZShtX2ZpbGVI
YW5kbGUpOwogICAgICAgICAgICAgICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKKyAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxl
IG1fZmlsZUhhbmRsZTsKICAgICAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1fbWV0YURh
dGE7CiAgICAgICAgIHNpemVfdCBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3Jp
dHRlbiB7IDAgfTsKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29k
ZVdyaXR0ZW4geyAwIH07CkBAIC0zMjAsMjcgKzMyMSwyNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9j
b2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxl
UGF0aAogICAgICAgICBib29sIG1fZmlsZUVycm9yIHsgZmFsc2UgfTsKICAgICB9OwogCi0gICAg
YXV0byB0ZW1wb3JhcnlGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKLSAgICBTdHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiQ29udGVudFJ1bGVMaXN0IiwgdGVtcG9y
YXJ5RmlsZUhhbmRsZSk7Ci0gICAgaWYgKHRlbXBvcmFyeUZpbGVIYW5kbGUgPT0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIHRlbXBvcmFy
eUZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIFN0cmluZyB0ZW1w
b3JhcnlGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiLCB0ZW1w
b3JhcnlGaWxlSGFuZGxlKTsKKyAgICBpZiAodGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6
OkVycm9yOjpDb21waWxlRmFpbGVkOwogICAgIAogICAgIGNoYXIgaW52YWxpZEhlYWRlcltDb250
ZW50UnVsZUxpc3RGaWxlSGVhZGVyU2l6ZV07CiAgICAgbWVtc2V0KGludmFsaWRIZWFkZXIsIDB4
RkYsIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgLy8gVGhpcyBoZWFkZXIgd2lsbCBiZSBy
ZXdyaXR0ZW4gaW4gQ29tcGlsYXRpb25DbGllbnQ6OmZpbmFsaXplLgotICAgIGlmIChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlkSGVh
ZGVyLCBzaXplb2YoaW52YWxpZEhlYWRlcikpID09IC0xKSB7Ci0gICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICBpZiAod3JpdGVU
b0ZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSwgaW52YWxpZEhlYWRlciwgc2l6ZW9mKGludmFsaWRI
ZWFkZXIpKSA9PSAtMSkgeworICAgICAgICBjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7
CiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWls
ZWQ7CiAgICAgfQogCiAgICAgQ29tcGlsYXRpb25DbGllbnQgY29tcGlsYXRpb25DbGllbnQodGVt
cG9yYXJ5RmlsZUhhbmRsZSwgbWV0YURhdGEpOwogICAgIAogICAgIGlmIChhdXRvIGNvbXBpbGVy
RXJyb3IgPSBjb21waWxlUnVsZUxpc3QoY29tcGlsYXRpb25DbGllbnQsIFdURk1vdmUoanNvbikp
KSB7Ci0gICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxl
SGFuZGxlKTsKKyAgICAgICAgY2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOwogICAgICAg
ICByZXR1cm4gY29tcGlsZXJFcnJvcjsKICAgICB9CiAgICAgaWYgKGNvbXBpbGF0aW9uQ2xpZW50
LmhhZEVycm9yV2hpbGVXcml0aW5nVG9GaWxlKCkpIHsKLSAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBjbG9zZUZpbGUo
dGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9y
ZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgfQogICAgIApAQCAtMzQ4LDcgKzM0OSw3IEBA
IHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29u
c3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgaWYgKG1hcHBlZERhdGEuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7
CiAKLSAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1vdmVGaWxlKHRlbXBvcmFyeUZpbGVQ
YXRoLCBmaW5hbEZpbGVQYXRoKSkKKyAgICBpZiAoIW1vdmVGaWxlKHRlbXBvcmFyeUZpbGVQYXRo
LCBmaW5hbEZpbGVQYXRoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpF
cnJvcjo6Q29tcGlsZUZhaWxlZDsKIAogICAgIHJldHVybiB7IH07CkBAIC00MTIsMTIgKzQxMywx
MiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxp
c3RJZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKAogewogICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0
aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGZ1bGxQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
Omxpc3REaXJlY3Rvcnkoc3RvcmVQYXRoLCBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIobGVnYWN5Rmls
ZW5hbWUpKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZnVsbFBhdGhzID0gbGlzdERpcmVjdG9y
eShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lGaWxlbmFtZSkpOwogICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVyczsKICAgICAgICAgaWRlbnRpZmllcnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShmdWxsUGF0aHMuc2l6ZSgpKTsKICAgICAgICAgY29uc3QgYXV0
byBwcmVmaXhMZW5ndGggPSBjb25zdHJ1Y3RlZFBhdGhQcmVmaXgobGVnYWN5RmlsZW5hbWUpLmxl
bmd0aCgpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBmdWxsUGF0aHMpCi0gICAg
ICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSAr
IDEgKyBwcmVmaXhMZW5ndGgpKSk7CisgICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRB
cHBlbmQoZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQo
Jy8nKSArIDEgKyBwcmVmaXhMZW5ndGgpKSk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaWRlbnRpZmllcnMgPSBXVEZN
b3ZlKGlkZW50aWZpZXJzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoaWRlbnRpZmllcnMpKTsKQEAgLTQ1NCw3ICs0NTUsNyBAQCB2b2lkIENvbnRl
bnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcm
IGlkZW50aWZpZXIsCiAgICAgbV9yZW1vdmVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCks
IHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9
IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0
aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsKIAotICAgICAgICBpZiAo
IVdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCkpIHsKKyAgICAgICAgaWYgKCFk
ZWxldGVGaWxlKHBhdGgpKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoRXJyb3I6OlJlbW92ZUZhaWxlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTQ2
OSwxOSArNDcwLDE5IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRS
dWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKIAogdm9pZCBDb250ZW50UnVs
ZUxpc3RTdG9yZTo6c3luY2hyb25vdXNSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKIHsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KG1fc3RvcmVQYXRoLCAiKiIpKQotICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKHBhdGgpOworICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGxpc3REaXJlY3Rvcnko
bV9zdG9yZVBhdGgsICIqIikpCisgICAgICAgIGRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIHZvaWQg
Q29udGVudFJ1bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKQogewotICAgIGF1dG8gZmlsZSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0aCwgaWRlbnRp
ZmllciwgbV9sZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0
ZSk7Ci0gICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkKKyAgICBhdXRvIGZpbGUgPSBvcGVuRmlsZShjb25zdHJ1Y3RlZFBhdGgobV9z
dG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVnYWN5RmlsZW5hbWUpLCBGaWxlT3Blbk1vZGU6Ok9w
ZW5Gb3JXcml0ZSk7CisgICAgaWYgKGZpbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRIZWFk
ZXIgPSB7MCwgMCwgMCwgMCwgMCwgMH07Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CisgICAgYXV0byBi
eXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgQVNTRVJU
X1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplb2YoaW52YWxpZEhlYWRl
cikpOwotICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBjbG9z
ZUZpbGUoZmlsZSk7CiB9CiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRS
dWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9p
ZChXVEY6OlN0cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZS5jcHAKaW5kZXggZDFkZmY0Zjk2OWIuLmNhZWM0ODNlOGE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGJv
b2wgaGFzRmlsZUNoYW5nZWRTaW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIHNpbmNl
KQogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGb3JG
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShwYXRoLCBG
aWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpv
cGVuQW5kTG9ja0ZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVh
ZCk7CiAgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3Jl
VG9EaXNrKCkKICAgICAgICAgZXhjbHVkZUZyb21CYWNrdXAoKTsKICAgICB9CiAKLSAgICBhdXRv
IGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRo
KCksIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lz
dGVtOjpvcGVuQW5kTG9ja0ZpbGUocmVzb3VyY2VMb2dGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwppbmRleCA3Nzk2YTRhZjhhMy4uMDdhMWIxNWM2YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0xMS0wMyAgQ2hyaXN0
b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgVXNlIGVudW0gY2xh
c3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKwogMjAxNy0xMS0w
MiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHRy
eSB0byBndWVzcyBwbHVnaW4gTUlNRSB0eXBlIGZyb20gYSBmaWxlIGV4dGVuc2lvbiBpbiBhIFVS
TCAobm8gb2JzZXJ2YWJsZSBlZmZlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDMyODUwNmYwYWM2Li5lYTJkNjQzMzlm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVy
c2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogCiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGU7CiAgICAgU3RyaW5nIGFic29sdXRlQ2FjaGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLCBwZXJz
aXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lKTsKLSAgICBmaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsK
KyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwogCiAgICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGZpbGUpKQogICAgICAgICByZXR1cm47CkBAIC01NjYsNyArNTY2LDcg
QEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6dXBkYXRlUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZTsKLSAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIEZp
bGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0
ZSk7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBwbHVnaW4gbWV0YWRhdGEgY2FjaGUgZm9yIHNh
dmluZyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDgyOGIwMmM3NjdlLi4wYTdjNTUzMjVmMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTExLTAzICBDaHJp
c3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBVc2UgZW51bSBj
bGFzc2VzIHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRv
ci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFi
YXNlVHJhY2tlclRlc3QubW06CisKIDIwMTctMTEtMDYgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIC1Xc2lnbi1jb21wYXJlIHdhcm5p
bmcgaW4gRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDI1Mjc0NGI0MjFkLi4yYjM2NDM5
ZWE3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGNvbnN0ZXhwciBpbnQgYnVmZmVyU2l6
ZSA9IDEwMjQ7CiAKLSAgICBhdXRvIHNvdXJjZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgs
IEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBhdXRvIHNvdXJjZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwog
ICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChzb3VyY2UpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIApAQCAtMzc5LDcgKzM3OSw3IEBAIFRFU1RfRihGaWxlTW9uaXRv
clRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAgICAgdGVzdFF1ZXVl
LT5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKLSAgICAgICAgYXV0byBoYW5k
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6T3Bl
bkZvcldyaXRlKTsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0
ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOwog
ICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKTsKIAogICAgICAgICBpbnQgcmMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5k
bGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0
YS5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCmluZGV4IDJlMmMzOTQ3OGU1
Li41YjhhYzVkZDRjOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KQEAgLTg3LDcgKzg3
LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnlQYXRoKQogCiBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlQXRQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmls
ZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JX
cml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5G
b3JXcml0ZSk7CiAgICAgRVhQRUNUX05FKC0xLCBmaWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhwYXRoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326406</attachid>
            <date>2017-11-08 16:52:42 -0800</date>
            <delta_ts>2017-11-08 17:24:26 -0800</delta_ts>
            <desc>Patch - Additional Cleanup</desc>
            <filename>175172.diff</filename>
            <type>text/plain</type>
            <size>33552</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYjk3NDA4ODk4Zi4uNTZhOTgwNmM4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNy0xMS0wOCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgVXNlIGVudW0gY2xhc3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgRnVydGhlciBjbGVhbnVwIHRvIEZp
bGVTeXN0ZW0ncyBlbnVtIGNsYXNzZXMuCisgICAgICAgIEFkZGluZyBPcHRpb25TZXQ8RmlsZUxv
Y2tNb2RlPiB0byBmdW5jdGlvbnMgdXNpbmcgdGhlIEZpbGVMb2NrTW9kZSBlbnVtLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxl
U3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgor
CiAyMDE3LTExLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
W1NlcnZpY2UgV29ya2Vyc10gU3VwcG9ydCB3YWl0VW50aWwoKSBvbiB0aGUgJ2luc3RhbGwnIGV2
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdp
bkxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcAppbmRleCAyMzcyNmFiOGQ1NC4uOGYxZDBlYTY5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtNTAsNyArNTAsNyBA
QCB2b2lkIE9yaWdpbkxvY2s6OmxvY2soKQogICAgIG1fbXV0ZXgubG9jaygpOwogCiAjaWYgVVNF
KEZJTEVfTE9DSykKLSAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0Zp
bGUobV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRl
KTsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUobV9sb2Nr
RmlsZU5hbWUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIGlmIChtX2xv
Y2tIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAg
ICAgICAvLyBUaGUgb25seSB3YXkgd2UgY2FuIGdldCBoZXJlIGlzIGlmIHRoZSBkaXJlY3Rvcnkg
Y29udGFpbmluZyB0aGUgbG9jawogICAgICAgICAvLyBoYXMgYmVlbiBkZWxldGVkIG9yIHdlIHdl
cmUgZ2l2ZW4gYSBwYXRoIHRvIGEgbm9uLWV4aXN0YW50IGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IGIwZThjYWQzMDRiLi43YmU5MWJlNTUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3
cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAogICAgICAg
ICBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3Rv
cnksIHBhdGgpOwogICAgIH0gd2hpbGUgKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZnVsbFBh
dGgpICE9IGRpcmVjdG9yeSB8fCBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxQYXRoKSk7CiAg
ICAgCi0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JX
cml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRl
KTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCmluZGV4IDFmNzFiYzUyYmVmLi42NTk0MjJhMjU4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGF0aDsKLSAgICBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCB9
OworICAgIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtX21vZGUgeyBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OlJlYWQgfTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAppbmRleCAwMzg0MDI0M2M4NS4u
YWI0OGMwNGFjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC03
NCwxMyArNzQsMTMgQEAgYm9vbCBGaWxlU3RyZWFtOjpvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW4KICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBPcGVuIHRoZSBmaWxlLgotICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7Cisg
ICAgbV9oYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2hh
bmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEp1bXAgdG8gdGhlIGJlZ2lu
bmluZyBwb3NpdGlvbiBpZiB0aGUgZmlsZSBoYXMgYmVlbiBzbGljZWQuCiAgICAgaWYgKG9mZnNl
dCA+IDApIHsKLSAgICAgICAgaWYgKEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1faGFuZGxlLCBvZmZz
ZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykgPCAwKQor
ICAgICAgICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5
c3RlbTo6RmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZykgPCAwKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAppbmRl
eCA0MThkYmE5MmNmZi4uYTc3OTk4Y2NmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
eXN0ZW0uY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgU3RyaW5nIGxhc3RDb21wb25lbnRPZlBhdGhJ
Z25vcmluZ1RyYWlsaW5nU2xhc2goY29uc3QgU3RyaW5nJiBwYXRoKQogCiBib29sIGFwcGVuZEZp
bGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYgdGFyZ2V0KQogewotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9w
ZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CisgICAgYXV0byBzb3VyY2UgPSBvcGVuRmlsZShwYXRoLCBG
aWxlT3Blbk1vZGU6OlJlYWQpOwogCiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKHNvdXJjZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzMCw3ICszMzAsNyBAQCBNYXBwZWRGaWxlRGF0YTo6
TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCYgc3VjY2VzcykKICNl
bmRpZgogfQogCi1QbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBGaWxlTG9ja01vZGUgbG9ja01vZGUpCitQ
bGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU9wZW5Nb2RlIG9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKIHsK
ICAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIG9wZW5Nb2RlKTsKICAgICBpZiAoaGFu
ZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
U3lzdGVtLmgKaW5kZXggMDY4YmZmNGY0MDIuLjM3Y2UyM2Q4ZGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC03NSwyMyArNzYsMjMgQEAgY29uc3QgUGxhdGZvcm1GaWxl
SGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKICNlbmRpZgogCiBlbnVtIGNs
YXNzIEZpbGVPcGVuTW9kZSB7Ci0gICAgT3BlbkZvclJlYWQgPSAwLAotICAgIE9wZW5Gb3JXcml0
ZSwKKyAgICBSZWFkLAorICAgIFdyaXRlLAogI2lmIE9TKERBUldJTikKLSAgICBPcGVuRm9yRXZl
bnRzT25seQorICAgIEV2ZW50c09ubHksCiAjZW5kaWYKIH07CiAKIGVudW0gY2xhc3MgRmlsZVNl
ZWtPcmlnaW4gewotICAgIFNlZWtGcm9tQmVnaW5uaW5nID0gMCwKLSAgICBTZWVrRnJvbUN1cnJl
bnQsCi0gICAgU2Vla0Zyb21FbmQKKyAgICBCZWdpbm5pbmcsCisgICAgQ3VycmVudCwKKyAgICBF
bmQsCiB9OwogCiBlbnVtIGNsYXNzIEZpbGVMb2NrTW9kZSB7Ci0gICAgTG9ja1NoYXJlZCA9IDEs
Ci0gICAgTG9ja0V4Y2x1c2l2ZSA9IDIsCi0gICAgTG9ja05vbkJsb2NraW5nID0gNAorICAgIFNo
YXJlZCA9IDEgPDwgMCwKKyAgICBFeGNsdXNpdmUgPSAxIDw8IDEsCisgICAgTm9uYmxvY2tpbmcg
PSAxIDw8IDIsCiB9OwogCiBlbnVtIGNsYXNzIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgeyBO
bywgWWVzIH07CkBAIC0xNDUsNyArMTQ2LDcgQEAgV0VCQ09SRV9FWFBPUlQgaW50IHdyaXRlVG9G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIC8v
IFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwg
LTEgb3RoZXJ3aXNlLgogV0VCQ09SRV9FWFBPUlQgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCi1XRUJDT1JFX0VYUE9SVCBQbGF0
Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9k
ZSwgRmlsZUxvY2tNb2RlID0gRmlsZUxvY2tNb2RlOjpMb2NrRXhjbHVzaXZlKTsKK1dFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5nJiwg
RmlsZU9wZW5Nb2RlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiA9IEZpbGVMb2NrTW9kZTo6RXhj
bHVzaXZlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5sb2NrQW5kQ2xvc2VGaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiAKIC8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGZvdW5k
IGF0ICdwYXRoJyB0byB0aGUgb3BlbiBQbGF0Zm9ybUZpbGVIYW5kbGUuCkBAIC0xNTYsNyArMTU3
LDcgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIGJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKTsKIAogI2lmIFVTRShG
SUxFX0xPQ0spCi1XRUJDT1JFX0VYUE9SVCBib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgRmlsZUxvY2tNb2RlKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1G
aWxlSGFuZGxlLCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPik7CiBXRUJDT1JFX0VYUE9SVCBib29s
IHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCA3Yjc3M2Uy
MDRmNS4uNGMwZjA3NGUwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0ZpbGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRmlsZU1vbml0b3JDb2NvYS5tbQpAQCAtNDMsNyArNDMsNyBAQCBGaWxlTW9uaXRvcjo6Rmls
ZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1
ZSwgV1RGOgogICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JFdmVudHNPbmx5KTsKKyAgICBhdXRvIGhhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6RXZlbnRz
T25seSk7CiAgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsICJGYWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwg
cGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA3Y2I2YWU1NmEzMC4uMDYx
MDg0ZWQwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCkBAIC0zNjMsOSArMzYzLDkgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAKICAgICBHUmVmUHRyPEdG
aWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUuZ2V0KCkp
KTsKICAgICBHRmlsZUlPU3RyZWFtKiBpb1N0cmVhbSA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gRmls
ZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OlJl
YWQpCiAgICAgICAgIGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCks
IDAsIDApOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUp
IHsKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpIHsKICAgICAgICAg
aWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdf
RklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKSkKICAgICAgICAgICAg
IGlvU3RyZWFtID0gZ19maWxlX29wZW5fcmVhZHdyaXRlKGZpbGUuZ2V0KCksIDAsIDApOwogICAg
ICAgICBlbHNlCkBAIC0zODksMTMgKzM4OSwxMyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwog
ewogICAgIEdTZWVrVHlwZSBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CiAgICAgc3dpdGNoIChvcmln
aW4pIHsKLSAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZzoKKyAgICBj
YXNlIEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmc6CiAgICAgICAgIHNlZWtUeXBlID0gR19TRUVL
X1NFVDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21D
dXJyZW50OgorICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6CiAgICAgICAgIHNlZWtU
eXBlID0gR19TRUVLX0NVUjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdp
bjo6U2Vla0Zyb21FbmQ6CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6RW5kOgogICAgICAgICBz
ZWVrVHlwZSA9IEdfU0VFS19FTkQ7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC00
ODEsMTMgKzQ4MSwxMyBAQCBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB9CiAKICNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBGaWxlTG9ja01vZGUgbG9ja01vZGUpCiti
b29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE9wdGlvblNldDxGaWxlTG9j
a01vZGU+IGxvY2tNb2RlKQogewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjpl
bnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkxvY2tTaGFyZWQpLCBMb2NrU2hhcmVk
RW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RG
OjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkxvY2tFeGNsdXNpdmUpLCBMb2Nr
RXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tf
TkIgPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkxvY2tOb25CbG9j
a2luZyksIExvY2tOb25CbG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxF
X0FTU0VSVChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2Rl
OjpTaGFyZWQpLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVf
QVNTRVJUKExPQ0tfRVggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6
OkV4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09N
UElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2Nr
TW9kZTo6Tm9uYmxvY2tpbmcpLCBMb2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
CiAgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdf
SU9fU1RSRUFNKGhhbmRsZSkpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3Jp
cHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwg
V1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShsb2NrTW9kZSkpOworICAgIGludCByZXN1bHQgPSBm
bG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFT
RUQoaW5wdXRTdHJlYW0pKSwgbG9ja01vZGUudG9SYXcoKSk7CiAgICAgcmV0dXJuIHJlc3VsdCAh
PSAtMTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggMTNmNzM4ZjE4NDUuLmI3ZGEzNzNiY2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojpy
ZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSogam9iKQogCiBib29sIEN1cmxDYWNoZUVudHJ5
OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpPcGVuRm9yV3JpdGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFk
ZXJGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGhlYWRlckZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENv
dWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgbV9oZWFkZXJGaWxlbmFtZS5sYXRpbjEoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBD
dXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQog
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6bG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVw
YXRoLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKIHsKICAgICAvLyBPcGVuIHRoZSBmaWxlCi0gICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlucHV0RmlsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKGZpbGVwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsK
KyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUoZmlsZXBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CiAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKICAgICAgICAg
TE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIs
IGZpbGVwYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2
Myw3ICszNjMsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpvcGVuQ29udGVudEZpbGUoKQogICAg
IGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBtX2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUobV9jb250ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldy
aXRlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9jb250ZW50
RmlsZW5hbWUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogCiAgICAgaWYgKEZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZjZThlNjgyYzQzLi45YWNkMTk1ZTI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdl
cjo6bG9hZEluZGV4KCkKICAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGlyKTsKICAg
ICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CiAKLSAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CiAgICAg
aWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxuIiwg
aW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CkBAIC0xNjUs
NyArMTY1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGluZGV4
RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKIAogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoaW5kZXhGaWxlUGF0aCk7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlu
ZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgaWYgKCFGaWxlU3lzdGVtOjpp
c0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBF
cnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBpbmRleEZpbGVQYXRoLmxhdGlu
MSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDUyMDU3NWIzNzcyLi4xOTk3ZDI0
MjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwCkBAIC04MywxMiArODMsMTIgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgICAgIHJldHVybiBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgaW50IHBsYXRmb3JtRmxhZyA9IDA7Ci0g
ICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9
PSBGaWxlT3Blbk1vZGU6OlJlYWQpCiAgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsK
LSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKQorICAgIGVs
c2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkKICAgICAgICAgcGxhdGZvcm1GbGFn
IHw9IChPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DKTsKICNpZiBPUyhEQVJXSU4pCi0gICAg
ZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JFdmVudHNPbmx5KQorICAgIGVs
c2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpFdmVudHNPbmx5KQogICAgICAgICBwbGF0Zm9y
bUZsYWcgfD0gT19FVlRPTkxZOwogI2VuZGlmCiAKQEAgLTEwNywxMyArMTA3LDEzIEBAIGxvbmcg
bG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0
LCBGaWxlU2Vla09yaWdpbiBvCiB7CiAgICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOwogICAgIHN3
aXRjaCAob3JpZ2luKSB7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21CZWdpbm5p
bmc6CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgogICAgICAgICB3aGVuY2Ug
PSBTRUVLX1NFVDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6U2Vl
a0Zyb21DdXJyZW50OgorICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQ6CiAgICAgICAg
IHdoZW5jZSA9IFNFRUtfQ1VSOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVTZWVrT3Jp
Z2luOjpTZWVrRnJvbUVuZDoKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpFbmQ6CiAgICAgICAg
IHdoZW5jZSA9IFNFRUtfRU5EOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTQ5
LDEyICsxNDksMTIgQEAgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogfQogCiAjaWYgVVNFKEZJTEVfTE9DSykKLWJvb2wg
bG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZUxvY2tNb2RlIGxvY2tNb2Rl
KQorYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBPcHRpb25TZXQ8Rmls
ZUxvY2tNb2RlPiBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdU
Rjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpMb2NrU2hhcmVkKSwgTG9ja1No
YXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09
IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpMb2NrRXhjbHVzaXZlKSwg
TG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChM
T0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpMb2NrTm9u
QmxvY2tpbmcpLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgaW50
IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgV1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZShsb2NrTW9k
ZSkpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gV1RGOjplbnVtVG9VbmRlcmx5aW5n
VHlwZShGaWxlTG9ja01vZGU6OlNoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdU
eXBlKEZpbGVMb2NrTW9kZTo6RXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4
cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJs
eWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpOb25ibG9ja2luZyksIExvY2tOb25ibG9ja2luZ0VuY29k
aW5nSXNBc0V4cGVjdGVkKTsKKyAgICBpbnQgcmVzdWx0ID0gZmxvY2soaGFuZGxlLCBsb2NrTW9k
ZS50b1JhdygpKTsKICAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA2ZTJjMjk2ODQ1My4u
ZWUwMTI4NmQ1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCiAKIHN0YXRpYyBTdHJpbmcgZ2V0RmluYWxQ
YXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmls
ZShwYXRoLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9w
ZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtNDE4LDEyICs0MTgsMTIg
QEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9w
ZW5Nb2RlIG1vZGUpCiAgICAgRFdPUkQgY3JlYXRpb25EaXNwb3NpdGlvbiA9IDA7CiAgICAgRFdP
UkQgc2hhcmVNb2RlID0gMDsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEZpbGVPcGVu
TW9kZTo6T3BlbkZvclJlYWQ6CisgICAgY2FzZSBGaWxlT3Blbk1vZGU6OlJlYWQ6CiAgICAgICAg
IGRlc2lyZWRBY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CiAgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRp
b24gPSBPUEVOX0VYSVNUSU5HOwogICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGU6Cisg
ICAgY2FzZSBGaWxlT3Blbk1vZGU6OldyaXRlOgogICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VO
RVJJQ19XUklURTsKICAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IENSRUFURV9BTFdBWVM7
CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ3LDkgKzQ0Nyw5IEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdp
biBvCiB7CiAgICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47CiAKLSAgICBpZiAob3Jp
Z2luID09IEZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUN1cnJlbnQpCisgICAgaWYgKG9yaWdpbiA9
PSBGaWxlU2Vla09yaWdpbjo6Q3VycmVudCkKICAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfQ1VS
UkVOVDsKLSAgICBlbHNlIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tRW5k
KQorICAgIGVsc2UgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6RW5kKQogICAgICAgICBt
b3ZlTWV0aG9kID0gRklMRV9FTkQ7CiAKICAgICBMQVJHRV9JTlRFR0VSIGxhcmdlT2Zmc2V0OwpA
QCAtNTMwLDcgKzUzMCw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYs
IHVpbnQ2NF90JikKIAogc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxl
LmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CisgICAgYXV0byBoYW5kbGUgPSBv
cGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNI
YW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCA4MDgxZjAxZjgy
OS4uZDIzNDU2OTExNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luLmNwcApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgU3RyaW5nIFJlbmRlclRoZW1lV2luOjpzdHJp
bmdXaXRoQ29udGVudHNPZkZpbGUoQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZTdHJpbmdSZWYgdHkKICAg
ICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVlc3RlZFVSTFJlZi5n
ZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0
ZWRGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUocmVxdWVzdGVkRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CiAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWNiMjQ1YTE2ZDIuLjkyNGEz
OWM5OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTExLTA4ICBDaHJpc3RvcGhl
ciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBVc2UgZW51bSBjbGFzc2Vz
IHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHA6
CisgICAgICAgICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorCiAyMDE3LTEx
LTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIyMjM3NzMpOiBbR1RLXSBXZWJLaXRXZWJJbnNwZWN0b3IgYnJpbmctdG8t
ZnJvbnQgc2lnbmFsIGlzIGVtaXR0ZWQgcmlnaHQgYWZ0ZXIgb3Blbi13aW5kb3cKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93
bmxvYWRDbGllbnQuY3BwCmluZGV4IGViMGFjMDVmOWNiLi5hYTQ4ODVhMDY0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9i
RG93bmxvYWRDbGllbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQmxvYkRvd25sb2FkQ2xp
ZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25QCiAgICAgfQogCiAgICAgbV9kZXN0aW5hdGlvblBhdGggPSBkZXN0aW5hdGlvblBhdGg7Ci0g
ICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX2Rlc3RpbmF0aW9u
UGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgIG1fZGVz
dGluYXRpb25GaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIG1fZG93bmxvYWQuZGlkQ3JlYXRl
RGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwogCiAgICAgbV9kb3dubG9hZC5jb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggMDI3ODlmMjQ5OWEuLmFhOGE1ZWFh
ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Js
b2I6OmRvd25sb2FkKCkKIAogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZG93bmxvYWQgdG8gJXMiLCB0aGlzLCBtX3BlbmRpbmdEb3dubG9hZExvY2F0
aW9uLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6
OldyaXRlKTsKICAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJy
b3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGI5NDQzYzBm
OTAyLi4xZWI3OTNkOWVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIFN0cmluZyBDYWNo
ZTo6ZHVtcEZpbGVQYXRoKCkgY29uc3QKIAogdm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxl
KCkKIHsKLSAgICBhdXRvIGZkID0gb3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIEZpbGVPcGVuTW9k
ZTo6T3BlbkZvcldyaXRlKTsKKyAgICBhdXRvIGZkID0gb3BlbkZpbGUoZHVtcEZpbGVQYXRoKCks
IEZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChmZCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBhdXRvIHByb2xvZ3VlID0gU3RyaW5nKCJ7XG5cImVudHJpZXNcIjog
W1xuIikudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBlZjI2YTI5Nzg1
OS4uNGJhZjcxOGI1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC03OSwxMSAr
NzksMTEgQEAgdm9pZCBNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgcmVjb3JkUmVw
bGF5TW9kZSwgY29uc3QgU3RyaW5nJiByZWNvcmRSZXAKICAgICBERUJVR19MT0coIkNhY2hlIGxv
Y2F0aW9uID0gIiBTVFJJTkdfU1BFQ0lGSUVSLCBERUJVR19TVFIobV9yZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uKSk7CiAKICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX3JlY29y
ZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwgRmls
ZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBX
ZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpXcml0
ZSk7CiAgICAgfSBlbHNlIGlmIChpc1JlcGxheWluZygpKSB7Ci0gICAgICAgIG1fcmVjb3JkRmls
ZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBGaWxlT3Bl
bk1vZGU6Ok9wZW5Gb3JSZWFkKTsKLSAgICAgICAgbV9sb2FkRmlsZUhhbmRsZSA9IFdlYkNvcmU6
OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUp
OwotICAgICAgICBtX3JlcGxheUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9y
dFJlcGxheVBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3Jl
Y29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwg
RmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICAgICAgbV9sb2FkRmlsZUhhbmRsZSA9IFdlYkNvcmU6
OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAg
ICAgIG1fcmVwbGF5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5
UGF0aCgpLCBGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICAgICAgbG9hZFJlc291cmNlcygpOwog
ICAgIH0KIH0KQEAgLTQ2Niw3ICs0NjYsNyBAQCBXZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6
Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZU9wZW5Nb2RlCiAgICAg
Ly8gSWYgd2UncmUgb3BlbmluZyB0aGUgZmlsZSBmb3Igd3JpdGluZyAoaW5jbHVkaW5nIGFwcGVu
ZGluZyksIHRoZW4gdHJ5CiAgICAgLy8gYWdhaW4gYWZ0ZXIgbWFraW5nIHN1cmUgYWxsIGludGVy
bWVkaWF0ZSBkaXJlY3RvcmllcyBoYXZlIGJlZW4gY3JlYXRlZC4KIAotICAgIGlmIChtb2RlICE9
IEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpIHsKKyAgICBpZiAobW9kZSAhPSBGaWxlT3Blbk1v
ZGU6OlJlYWQpIHsKICAgICAgICAgY29uc3QgYXV0byYgcGFyZW50RGlyID0gZGlyZWN0b3J5TmFt
ZShmaWxlUGF0aCk7CiAgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERpcikp
IHsKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIGNyZWF0
ZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXM6ICIgU1RSSU5HX1NQRUNJRklFUiwgZXJybm8sIERF
QlVHX1NUUihwYXJlbnREaXIpKTsKQEAgLTQ4MSw3ICs0ODEsNyBAQCBXZWJDb3JlOjpGaWxlSGFu
ZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZU9w
ZW5Nb2RlCiAgICAgLy8gQ291bGQgbm90IG9wZW4gdGhlIGZpbGUuIExvZyB0aGUgZXJyb3IgYW5k
IGxlYXZlLCByZXR1cm5pbmcgdGhlIGludmFsaWQKICAgICAvLyBmaWxlIGhhbmRsZS4KIAotICAg
IGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUgPT0g
RmlsZU9wZW5Nb2RlOjpSZWFkKQogICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9yICVkIHRy
eWluZyB0byBvcGVuICIgU1RSSU5HX1NQRUNJRklFUiAiIGZvciByZWFkaW5nIiwgZXJybm8sIERF
QlVHX1NUUihmaWxlUGF0aCkpOwogICAgIGVsc2UKICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJF
cnJvciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3Igd3JpdGluZyIs
IGVycm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNw
cAppbmRleCAxYTMwNTVjOTg4Yi4uZTkwNjIwZjBmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNv
cmRlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlY29yZGVyOjpyZWNvcmRGaW5pc2go
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFJlY29yZGVyOjp3cml0
ZUV2ZW50cygpCiB7CiAgICAgYXV0byBwYXRoID0gTWFuYWdlcjo6c2luZ2xldG9uKCkucmVxdWVz
dFRvUGF0aChtX2luaXRpYWxSZXF1ZXN0KTsKLSAgICBhdXRvIGhhbmRsZSA9IE1hbmFnZXI6OnNp
bmdsZXRvbigpLm9wZW5DYWNoZUZpbGUocGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgIGF1dG8gaGFuZGxlID0gTWFuYWdlcjo6c2luZ2xl
dG9uKCkub3BlbkNhY2hlRmlsZShwYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OldyaXRlKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCmluZGV4IDhkOGYwNTVjNzdkLi45ZWY3
MDY1NGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVTYW5kYm94
ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZQogICAgIGlmIChtX3NhbXBs
ZUxvZ1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FtcGxlTG9nU2FuZGJveEV4dGVuc2lv
bi0+Y29uc3VtZSgpOwogICAgIG1fc2FtcGxlTG9nRmlsZVBhdGggPSBzYW1wbGVMb2dGaWxlUGF0
aDsKLSAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3NhbXBsZUxv
Z0ZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAg
bV9zYW1wbGVMb2dGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9zYW1wbGVMb2dGaWxlUGF0
aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgd3JpdGVIZWFkZXJzKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDg0NTFmMGNiNjAwLi44NWJhN2Q4ZGE2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21w
aWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAg
ICAgICAgICAgIG1fbWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluID0gbV9jb25k
aXRpb25zQXBwbHlPbmx5VG9Eb21haW47CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERhdGEg
aGVhZGVyID0gZW5jb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEobV9tZXRhRGF0YSk7Ci0gICAg
ICAgICAgICBpZiAoIW1fZmlsZUVycm9yICYmIHNlZWtGaWxlKG1fZmlsZUhhbmRsZSwgMGxsLCBG
aWxlU2Vla09yaWdpbjo6U2Vla0Zyb21CZWdpbm5pbmcpID09IC0xKSB7CisgICAgICAgICAgICBp
ZiAoIW1fZmlsZUVycm9yICYmIHNlZWtGaWxlKG1fZmlsZUhhbmRsZSwgMGxsLCBGaWxlU2Vla09y
aWdpbjo6QmVnaW5uaW5nKSA9PSAtMSkgewogICAgICAgICAgICAgICAgIGNsb3NlRmlsZShtX2Zp
bGVIYW5kbGUpOwogICAgICAgICAgICAgICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAg
ICAgIH0KQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzeW5j
aHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogCiB2b2lkIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjppbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0cmlu
ZyYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGZpbGUgPSBvcGVuRmlsZShjb25zdHJ1Y3RlZFBh
dGgobV9zdG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVnYWN5RmlsZW5hbWUpLCBGaWxlT3Blbk1v
ZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBmaWxlID0gb3BlbkZpbGUoY29uc3RydWN0ZWRQ
YXRoKG1fc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBtX2xlZ2FjeUZpbGVuYW1lKSwgRmlsZU9wZW5N
b2RlOjpXcml0ZSk7CiAgICAgaWYgKGZpbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRIZWFk
ZXIgPSB7MCwgMCwgMCwgMCwgMCwgMH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcAppbmRleCBjYWVjNDgzZThhNS4uMzU3MTQwNDQ3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgYm9vbCBoYXNGaWxl
Q2hhbmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgc2luY2UpCiBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2RlckZvckZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1
dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKHBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3Rl
bTo6b3BlbkFuZExvY2tGaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7
CiAgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9E
aXNrKCkKICAgICAgICAgZXhjbHVkZUZyb21CYWNrdXAoKTsKICAgICB9CiAKLSAgICBhdXRvIGhh
bmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRoKCks
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICBhdXRvIGhhbmRs
ZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRoKCksIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggYmIxYzEwODFkNjMuLjQxNWQ4ZTUwOGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMTEtMDggIENo
cmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFVzZSBlbnVt
IGNsYXNzZXMgd2l0aGluIEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisKIDIwMTct
MTEtMDYgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgogCiAgICAgICAg
IFVzZSBlbnVtIGNsYXNzZXMgd2l0aGluIEZpbGVTeXN0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggZWEyZDY0MzM5ZjYu
LjhmYWI1YzBiMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAKICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgZmlsZTsKICAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQ
YXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwotICAgIGZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CisgICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQpOwogCiAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKQogICAgICAgICByZXR1cm47
CkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6dXBkYXRlUGVyc2lzdGVu
dE1ldGFkYXRhQ2FjaGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgZmlsZTsKLSAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJz
b2x1dGVDYWNoZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsK
KyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogCiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gcGx1
Z2luIG1ldGFkYXRhIGNhY2hlIGZvciBzYXZpbmciKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZTk5NzFkOWU4NS4uYjUwMzQ1YWIwYTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0xMS0wOCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5j
b20+CisKKyAgICAgICAgVXNlIGVudW0gY2xhc3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOgorCiAyMDE3LTExLTA4
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiB1c2UgSlNPTjo6e0FycmF5LE9iamVjdCxWYWx1ZX0gaW5zdGVhZCBvZiBJ
bnNwZWN0b3J7QXJyYXksT2JqZWN0LFZhbHVlfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMmIzNjQzOWVhN2UuLjVmMWRjOGIy
ZTRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgY29uc3RleHByIGludCBidWZmZXJTaXpl
ID0gMTAyNDsKIAotICAgIGF1dG8gc291cmNlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7CisgICAgYXV0byBzb3VyY2Ug
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChzb3VyY2UpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIApAQCAtMzc5LDcgKzM3OSw3IEBAIFRFU1RfRihGaWxl
TW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAgICAgdGVz
dFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKLSAgICAgICAgYXV0
byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBhdXRvIGhhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OldyaXRlKTsKICAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKICAgICAgICAgaW50IHJjID0gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoaGFuZGxlLCBGaWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVN
b25pdG9yVGVzdERhdGEubGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQppbmRl
eCA1YjhhYzVkZDRjOC4uNzEzYjNhNWQzMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1t
CkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRl
bnRzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKIAogc3RhdGljIHZvaWQgY3JlYXRlRmls
ZUF0UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICBFWFBFQ1RfTkUoLTEsIGZpbGVIYW5k
bGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326412</attachid>
            <date>2017-11-08 17:24:26 -0800</date>
            <delta_ts>2017-11-09 10:33:37 -0800</delta_ts>
            <desc>Patch - Additional Cleanup</desc>
            <filename>175172.diff</filename>
            <type>text/plain</type>
            <size>33628</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYjk3NDA4ODk4Zi4uZjQxY2NhYzMzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNy0xMS0wOCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgVXNlIGVudW0gY2xhc3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgRnVydGhlciBjbGVhbnVwIHRvIEZp
bGVTeXN0ZW0ncyBlbnVtIGNsYXNzZXMuCisgICAgICAgIFNob3J0ZW5pbmcgRmlsZVN5c3RlbSdz
IGVudW0gbmFtZXMgbm93IHRoYXQgdGhleSBhcmUgZW51bSBjbGFzc2VzLgorICAgICAgICBBZGRp
bmcgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gdG8gZnVuY3Rpb25zIHVzaW5nIHRoZSBGaWxlTG9j
a01vZGUgZW51bS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5j
cHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0v
RmlsZVN0cmVhbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0Zp
bGVNb25pdG9yQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xp
Yi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lV2luLmNwcDoKKwogMjAxNy0xMS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFtTZXJ2aWNlIFdvcmtlcnNdIFN1cHBvcnQgd2FpdFVudGlsKCkg
b24gdGhlICdpbnN0YWxsJyBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKaW5kZXggMjM3MjZhYjhkNTQuLjhmMWQwZWE2OThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBPcmlnaW5Mb2NrOjpsb2NrKCkKICAgICBtX211dGV4
LmxvY2soKTsKIAogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgbV9sb2NrSGFuZGxlID0gRmlsZVN5
c3RlbTo6b3BlbkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1lLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9sb2NrSGFuZGxlID0gRmlsZVN5c3RlbTo6b3Bl
bkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1lLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlKTsKICAgICBpZiAobV9sb2NrSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpIHsKICAgICAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBnZXQgaGVyZSBp
cyBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGxvY2sKICAgICAgICAgLy8gaGFzIGJl
ZW4gZGVsZXRlZCBvciB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1leGlzdGFudCBkaXJl
Y3RvcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiMGU4Y2FkMzA0Yi4uN2JlOTFiZTU1M2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTMwNCw3ICsxMzA0LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVk
QnVmZmVyJiBkYXQKICAgICAgICAgZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGlyZWN0b3J5LCBwYXRoKTsKICAgICB9IHdoaWxlIChGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBkaXJlY3RvcnkgfHwgRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhmdWxsUGF0aCkpOwogICAgIAotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmdWxsUGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmdWxsUGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCAxZjcxYmM1
MmJlZi4uNjU5NDIyYTI1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3BhdGg7Ci0g
ICAgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1fbW9kZSB7IEZpbGVTeXN0ZW06OkZpbGVPcGVu
TW9kZTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2Rl
IHsgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkIH07CiAgICAgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAK
aW5kZXggMDM4NDAyNDNjODUuLmFiNDhjMDRhY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmNwcApAQCAtNzQsMTMgKzc0LDEzIEBAIGJvb2wgRmlsZVN0cmVhbTo6b3BlbkZv
clJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gT3BlbiB0aGUgZmlsZS4KLSAgICBtX2hh
bmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6T3BlbkZvclJlYWQpOworICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0
aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZpbGUgaGFzIGJlZW4gc2xp
Y2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChGaWxlU3lzdGVtOjpzZWVr
RmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6U2Vla0Zy
b21CZWdpbm5pbmcpIDwgMCkKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OnNlZWtGaWxlKG1faGFu
ZGxlLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpIDwgMCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5jcHAKaW5kZXggNDE4ZGJhOTJjZmYuLmE3Nzk5OGNjZjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIFN0cmluZyBs
YXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0
aCkKIAogYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkKIHsKLSAgICBhdXRvIHNvdXJjZSA9IG9w
ZW5GaWxlKHBhdGgsIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOworICAgIGF1dG8gc291cmNl
ID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKIAogICAgIGlmICghaXNIYW5k
bGVWYWxpZChzb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzAsNyArMzMwLDcg
QEAgTWFwcGVkRmlsZURhdGE6Ok1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IGJvb2wmIHN1Y2Nlc3MpCiAjZW5kaWYKIH0KIAotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRM
b2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgRmlsZUxv
Y2tNb2RlIGxvY2tNb2RlKQorUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBvcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2Nr
TW9kZT4gbG9ja01vZGUpCiB7CiAgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBvcGVu
TW9kZSk7CiAgICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IDA2OGJmZjRmNDAyLi4zN2NlMjNkOGRl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzUsMjMgKzc2LDIzIEBA
IGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gLTE7
CiAjZW5kaWYKIAogZW51bSBjbGFzcyBGaWxlT3Blbk1vZGUgewotICAgIE9wZW5Gb3JSZWFkID0g
MCwKLSAgICBPcGVuRm9yV3JpdGUsCisgICAgUmVhZCwKKyAgICBXcml0ZSwKICNpZiBPUyhEQVJX
SU4pCi0gICAgT3BlbkZvckV2ZW50c09ubHkKKyAgICBFdmVudHNPbmx5LAogI2VuZGlmCiB9Owog
CiBlbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKLSAgICBTZWVrRnJvbUJlZ2lubmluZyA9IDAs
Ci0gICAgU2Vla0Zyb21DdXJyZW50LAotICAgIFNlZWtGcm9tRW5kCisgICAgQmVnaW5uaW5nLAor
ICAgIEN1cnJlbnQsCisgICAgRW5kLAogfTsKIAogZW51bSBjbGFzcyBGaWxlTG9ja01vZGUgewot
ICAgIExvY2tTaGFyZWQgPSAxLAotICAgIExvY2tFeGNsdXNpdmUgPSAyLAotICAgIExvY2tOb25C
bG9ja2luZyA9IDQKKyAgICBTaGFyZWQgPSAxIDw8IDAsCisgICAgRXhjbHVzaXZlID0gMSA8PCAx
LAorICAgIE5vbmJsb2NraW5nID0gMSA8PCAyLAogfTsKIAogZW51bSBjbGFzcyBTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzIHsgTm8sIFllcyB9OwpAQCAtMTQ1LDcgKzE0Niw3IEBAIFdFQkNPUkVf
RVhQT1JUIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCiAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0
dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIFdFQkNPUkVfRVhQT1JUIGludCByZWFk
RnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAot
V0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBT
dHJpbmcmLCBGaWxlT3Blbk1vZGUsIEZpbGVMb2NrTW9kZSA9IEZpbGVMb2NrTW9kZTo6TG9ja0V4
Y2x1c2l2ZSk7CitXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tG
aWxlKGNvbnN0IFN0cmluZyYsIEZpbGVPcGVuTW9kZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4g
PSBGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHVubG9ja0Fu
ZENsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUpOwogCiAvLyBBcHBlbmRzIHRoZSBjb250ZW50
cyBvZiB0aGUgZmlsZSBmb3VuZCBhdCAncGF0aCcgdG8gdGhlIG9wZW4gUGxhdGZvcm1GaWxlSGFu
ZGxlLgpAQCAtMTU2LDcgKzE1Nyw3IEBAIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFu
ZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CiBib29sIGhhcmRM
aW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbik7CiAKICNpZiBVU0UoRklMRV9MT0NLKQotV0VCQ09SRV9FWFBPUlQgYm9vbCBsb2NrRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIEZpbGVMb2NrTW9kZSk7CitXRUJDT1JFX0VYUE9SVCBib29s
IGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4pOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCB1bmxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0
b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29j
b2EubW0KaW5kZXggN2I3NzNlMjA0ZjUuLjRjMGYwNzRlMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0KQEAgLTQzLDcgKzQzLDcg
QEAgRmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtR
dWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICBpZiAoIW1vZGlmaWNhdGlvbkhhbmRsZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yRXZlbnRzT25seSk7Cisg
ICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6OkV2ZW50c09ubHkpOwogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiRmFpbGVkIHRvIG9wZW4gc3RhdGlzdGljcyBmaWxlIGZv
ciBtb25pdG9yaW5nOiAlcyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5k
ZXggN2NiNmFlNTZhMzAuLjA2MTA4NGVkMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMzYzLDkgKzM2Myw5IEBAIFBsYXRmb3Jt
RmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2Rl
KQogCiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKGZpbGVuYW1lLmdldCgpKSk7CiAgICAgR0ZpbGVJT1N0cmVhbSogaW9TdHJlYW0gPSAwOwot
ICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUg
PT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQogICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3Jl
YWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKLSAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVu
TW9kZTo6T3BlbkZvcldyaXRlKSB7CisgICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6
OldyaXRlKSB7CiAgICAgICAgIGlmIChnX2ZpbGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGlj
X2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdV
TEFSKSkpCiAgICAgICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxl
LmdldCgpLCAwLCAwKTsKICAgICAgICAgZWxzZQpAQCAtMzg5LDEzICszODksMTMgQEAgbG9uZyBs
b25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQs
IEZpbGVTZWVrT3JpZ2luIG8KIHsKICAgICBHU2Vla1R5cGUgc2Vla1R5cGUgPSBHX1NFRUtfU0VU
OwogICAgIHN3aXRjaCAob3JpZ2luKSB7Ci0gICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zy
b21CZWdpbm5pbmc6CisgICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6QmVnaW5uaW5nOgogICAgICAg
ICBzZWVrVHlwZSA9IEdfU0VFS19TRVQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZVNl
ZWtPcmlnaW46OlNlZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2luOjpDdXJy
ZW50OgogICAgICAgICBzZWVrVHlwZSA9IEdfU0VFS19DVVI7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tRW5kOgorICAgIGNhc2UgRmlsZVNlZWtPcmln
aW46OkVuZDoKICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfRU5EOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgpAQCAtNDgxLDEzICs0ODEsMTMgQEAgc3RkOjpvcHRpb25hbDxpbnQzMl90
PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogfQogCiAjaWYgVVNFKEZJ
TEVfTE9DSykKLWJvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZUxv
Y2tNb2RlIGxvY2tNb2RlKQorYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBPcHRpb25TZXQ8RmlsZUxvY2tNb2RlPiBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VS
VChMT0NLX1NIID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpMb2Nr
U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FT
U0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpM
b2NrRXhjbHVzaXZlKSwgTG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBD
T01QSUxFX0FTU0VSVChMT0NLX05CID09IFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxv
Y2tNb2RlOjpMb2NrTm9uQmxvY2tpbmcpLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBl
Y3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlp
bmdUeXBlKEZpbGVMb2NrTW9kZTo6U2hhcmVkKSwgTG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVj
dGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX0VYID09IFdURjo6ZW51bVRvVW5kZXJseWlu
Z1R5cGUoRmlsZUxvY2tNb2RlOjpFeGNsdXNpdmUpLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0Fz
RXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gV1RGOjplbnVtVG9VbmRl
cmx5aW5nVHlwZShGaWxlTG9ja01vZGU6Ok5vbmJsb2NraW5nKSwgTG9ja05vbmJsb2NraW5nRW5j
b2RpbmdJc0FzRXhwZWN0ZWQpOwogICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1f
Z2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0g
ZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JB
U0VEKGlucHV0U3RyZWFtKSksIFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGUobG9ja01vZGUpKTsK
KyAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdf
RklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIGxvY2tNb2RlLnRvUmF3KCkpOwog
ICAgIHJldHVybiByZXN1bHQgIT0gLTE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDEzZjczOGYx
ODQ1Li5iN2RhMzczYmNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6cmVhZENhY2hlZERhdGEoUmVzb3VyY2VIYW5kbGUqIGpvYikKIAog
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
aGVhZGVyRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1faGVhZGVyRmlsZW5hbWUsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgaGVhZGVyRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1faGVhZGVy
RmlsZW5hbWUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIGlmICghRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoZWFkZXJGaWxlKSkgewogICAgICAgICBMT0coTmV0d29y
aywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3Igd3JpdGVcbiIsIG1faGVhZGVy
RmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3
LDcgKzIyNyw3IEBAIHZvaWQgQ3VybENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNv
bnN0IENTdHJpbmcmIHVybCkKIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCiB7CiAgICAgLy8g
T3BlbiB0aGUgZmlsZQotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZp
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5N
b2RlOjpPcGVuRm9yUmVhZCk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlu
cHV0RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVwYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1
dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBv
cGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6b3Bl
bkNvbnRlbnRGaWxlKCkKICAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRl
bnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgbV9jb250ZW50RmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fY29udGVudEZpbGVuYW1lLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgbV9jb250ZW50RmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKG1fY29udGVudEZpbGVuYW1lLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlKTsKIAogICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCBmY2U4ZTY4MmM0
My4uOWFjZDE5NWUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2
b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgU3RyaW5nIGluZGV4RmlsZVBh
dGgobV9jYWNoZURpcik7CiAgICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwog
Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3Bl
bkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZp
bGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgV2FybmluZzogQ291bGQgbm90IG9w
ZW4gJXMgZm9yIHJlYWRcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2
ZUluZGV4KCkKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CiAKICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwotICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAg
IGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExP
RyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwg
aW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCA1
MjA1NzViMzc3Mi4uMTk5N2QyNDI3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIFBsYXRmb3Jt
RmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2Rl
KQogICAgICAgICByZXR1cm4gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIAogICAgIGludCBw
bGF0Zm9ybUZsYWcgPSAwOwotICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6T3BlbkZvclJl
YWQpCisgICAgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpSZWFkKQogICAgICAgICBwbGF0Zm9y
bUZsYWcgfD0gT19SRE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6Ok9w
ZW5Gb3JXcml0ZSkKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpCiAg
ICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CiAj
aWYgT1MoREFSV0lOKQotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpPcGVuRm9y
RXZlbnRzT25seSkKKyAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6RXZlbnRzT25s
eSkKICAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fRVZUT05MWTsKICNlbmRpZgogCkBAIC0xMDcs
MTMgKzEwNywxMyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogewogICAgIGludCB3aGVuY2Ug
PSBTRUVLX1NFVDsKICAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgRmlsZVNlZWtPcmln
aW46OlNlZWtGcm9tQmVnaW5uaW5nOgorICAgIGNhc2UgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmlu
ZzoKICAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVTZWVrT3JpZ2lu
OjpDdXJyZW50OgogICAgICAgICB3aGVuY2UgPSBTRUVLX0NVUjsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21FbmQ6CisgICAgY2FzZSBGaWxlU2Vla09y
aWdpbjo6RW5kOgogICAgICAgICB3aGVuY2UgPSBTRUVLX0VORDsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKQEAgLTE0OSwxMiArMTQ5LDEyIEBAIGludCByZWFkRnJvbUZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIH0KIAogI2lmIFVT
RShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIEZp
bGVMb2NrTW9kZSBsb2NrTW9kZSkKK2Jvb2wgbG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgT3B0aW9uU2V0PEZpbGVMb2NrTW9kZT4gbG9ja01vZGUpCiB7Ci0gICAgQ09NUElMRV9B
U1NFUlQoTE9DS19TSCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6
TG9ja1NoYXJlZCksIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElM
RV9BU1NFUlQoTE9DS19FWCA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9k
ZTo6TG9ja0V4Y2x1c2l2ZSksIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0g
ICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZp
bGVMb2NrTW9kZTo6TG9ja05vbkJsb2NraW5nKSwgTG9ja05vbkJsb2NraW5nRW5jb2RpbmdJc0Fz
RXhwZWN0ZWQpOwotICAgIGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIFdURjo6ZW51bVRvVW5k
ZXJseWluZ1R5cGUobG9ja01vZGUpKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IFdU
Rjo6ZW51bVRvVW5kZXJseWluZ1R5cGUoRmlsZUxvY2tNb2RlOjpTaGFyZWQpLCBMb2NrU2hhcmVk
RW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gV1RG
OjplbnVtVG9VbmRlcmx5aW5nVHlwZShGaWxlTG9ja01vZGU6OkV4Y2x1c2l2ZSksIExvY2tFeGNs
dXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9
PSBXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlKEZpbGVMb2NrTW9kZTo6Tm9uYmxvY2tpbmcpLCBM
b2NrTm9uYmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgaW50IHJlc3VsdCA9IGZs
b2NrKGhhbmRsZSwgbG9ja01vZGUudG9SYXcoKSk7CiAgICAgcmV0dXJuIChyZXN1bHQgIT0gLTEp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAK
aW5kZXggNmUyYzI5Njg0NTMuLmVlMDEyODZkNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBnZXRG
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiB0aW1lKQogCiBzdGF0
aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGF1
dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7Cisg
ICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
QEAgLTQxOCwxMiArNDE4LDEyIEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogICAgIERXT1JEIGNyZWF0aW9uRGlzcG9z
aXRpb24gPSAwOwogICAgIERXT1JEIHNoYXJlTW9kZSA9IDA7CiAgICAgc3dpdGNoIChtb2RlKSB7
Ci0gICAgY2FzZSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkOgorICAgIGNhc2UgRmlsZU9wZW5N
b2RlOjpSZWFkOgogICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19SRUFEOwogICAgICAg
ICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BFTl9FWElTVElORzsKICAgICAgICAgc2hhcmVNb2Rl
ID0gRklMRV9TSEFSRV9SRUFEOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbGVPcGVuTW9k
ZTo6T3BlbkZvcldyaXRlOgorICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpXcml0ZToKICAgICAgICAg
ZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CiAgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRp
b24gPSBDUkVBVEVfQUxXQVlTOwogICAgICAgICBicmVhazsKQEAgLTQ0Nyw5ICs0NDcsOSBAQCBs
b25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9m
ZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogewogICAgIERXT1JEIG1vdmVNZXRob2QgPSBGSUxFX0JF
R0lOOwogCi0gICAgaWYgKG9yaWdpbiA9PSBGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21DdXJyZW50
KQorICAgIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmlnaW46OkN1cnJlbnQpCiAgICAgICAgIG1v
dmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7Ci0gICAgZWxzZSBpZiAob3JpZ2luID09IEZpbGVTZWVr
T3JpZ2luOjpTZWVrRnJvbUVuZCkKKyAgICBlbHNlIGlmIChvcmlnaW4gPT0gRmlsZVNlZWtPcmln
aW46OkVuZCkKICAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfRU5EOwogCiAgICAgTEFSR0VfSU5U
RUdFUiBsYXJnZU9mZnNldDsKQEAgLTUzMCw3ICs1MzAsNyBAQCBib29sIGdldFZvbHVtZUZyZWVT
cGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCiAKIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4g
Z2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKIHsKLSAgICBhdXRvIGhhbmRs
ZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOwor
ICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpS
ZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5j
cHAKaW5kZXggODA4MWYwMWY4MjkuLmQyMzQ1NjkxMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIFN0cmluZyBS
ZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKENGU3RyaW5nUmVmIG5hbWUs
IENGU3RyaW5nUmVmIHR5CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihyZXF1ZXN0ZWRVUkxSZWYuZ2V0KCksIGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0aCwgTUFYX1BB
VEgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHJl
cXVlc3RlZEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsK
KyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChyZXF1
ZXN0ZWRGaWxlSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDljYjI0NWExNmQyLi45MjRhMzljOThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Ny0xMS0wOCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAg
ICAgVXNlIGVudW0gY2xhc3NlcyB3aXRoaW4gRmlsZVN5c3RlbQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVjb3JkZXIuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcDoKKwogMjAxNy0xMS0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjIzNzczKTogW0dUS10gV2ViS2l0V2Vi
SW5zcGVjdG9yIGJyaW5nLXRvLWZyb250IHNpZ25hbCBpcyBlbWl0dGVkIHJpZ2h0IGFmdGVyIG9w
ZW4td2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlYjBhYzA1ZjljYi4uYWE0
ODg1YTA2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uUAogICAgIH0KIAogICAgIG1fZGVzdGluYXRpb25QYXRoID0g
ZGVzdGluYXRpb25QYXRoOwotICAgIG1fZGVzdGluYXRpb25GaWxlID0gRmlsZVN5c3RlbTo6b3Bl
bkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZv
cldyaXRlKTsKKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
ZGVzdGluYXRpb25QYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICBt
X2Rvd25sb2FkLmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAg
IG1fZG93bmxvYWQuY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDAy
Nzg5ZjI0OTlhLi5hYThhNWVhYWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00NjcsNyArNDY3LDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAKICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkIHRvICVzIiwgdGhpcywgbV9w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fZG93bmxvYWRG
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgIG1fZG93bmxvYWRGaWxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgaWYgKG1fZG93bmxvYWRGaWxlID09IEZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgZGlkRmFpbERv
d25sb2FkKGNhbmNlbGxlZEVycm9yKG1fZmlyc3RSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAppbmRleCBiOTQ0M2MwZjkwMi4uMWViNzkzZDllZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTU0Myw3ICs1
NDMsNyBAQCBTdHJpbmcgQ2FjaGU6OmR1bXBGaWxlUGF0aCgpIGNvbnN0CiAKIHZvaWQgQ2FjaGU6
OmR1bXBDb250ZW50c1RvRmlsZSgpCiB7Ci0gICAgYXV0byBmZCA9IG9wZW5GaWxlKGR1bXBGaWxl
UGF0aCgpLCBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBmZCA9IG9wZW5G
aWxlKGR1bXBGaWxlUGF0aCgpLCBGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQoZmQpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBwcm9sb2d1ZSA9IFN0cmlu
Zygie1xuXCJlbnRyaWVzXCI6IFtcbiIpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5j
cHAKaW5kZXggZWYyNmEyOTc4NTkuLjRiYWY3MThiNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5h
Z2VyLmNwcApAQCAtNzksMTEgKzc5LDExIEBAIHZvaWQgTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25z
dCBTdHJpbmcmIHJlY29yZFJlcGxheU1vZGUsIGNvbnN0IFN0cmluZyYgcmVjb3JkUmVwCiAgICAg
REVCVUdfTE9HKCJDYWNoZSBsb2NhdGlvbiA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RS
KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbikpOwogCiAgICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBv
cnRSZWNvcmRQYXRoKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9y
ZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCks
IEZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIH0gZWxzZSBpZiAoaXNSZXBsYXlpbmcoKSkgewot
ICAgICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJl
Y29yZFBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yUmVhZCk7Ci0gICAgICAgIG1fbG9hZEZp
bGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRoKCksIEZpbGVPcGVu
TW9kZTo6T3BlbkZvcldyaXRlKTsKLSAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxlID0gV2ViQ29y
ZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCksIEZpbGVPcGVuTW9kZTo6T3BlbkZvcldy
aXRlKTsKKyAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShy
ZXBvcnRSZWNvcmRQYXRoKCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgICAgIG1fbG9hZEZp
bGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRoKCksIEZpbGVPcGVu
TW9kZTo6V3JpdGUpOworICAgICAgICBtX3JlcGxheUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxl
SGFuZGxlKHJlcG9ydFJlcGxheVBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgICAg
IGxvYWRSZXNvdXJjZXMoKTsKICAgICB9CiB9CkBAIC00NjYsNyArNDY2LDcgQEAgV2ViQ29yZTo6
RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVPcGVuTW9kZQogICAgIC8vIElmIHdlJ3JlIG9wZW5pbmcgdGhlIGZpbGUgZm9yIHdyaXRp
bmcgKGluY2x1ZGluZyBhcHBlbmRpbmcpLCB0aGVuIHRyeQogICAgIC8vIGFnYWluIGFmdGVyIG1h
a2luZyBzdXJlIGFsbCBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgaGF2ZSBiZWVuIGNyZWF0ZWQu
CiAKLSAgICBpZiAobW9kZSAhPSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKSB7CisgICAgaWYg
KG1vZGUgIT0gRmlsZU9wZW5Nb2RlOjpSZWFkKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHBhcmVu
dERpciA9IGRpcmVjdG9yeU5hbWUoZmlsZVBhdGgpOwogICAgICAgICBpZiAoIW1ha2VBbGxEaXJl
Y3RvcmllcyhwYXJlbnREaXIpKSB7CiAgICAgICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9y
ICVkIHRyeWluZyB0byBjcmVhdGUgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzOiAiIFNUUklOR19T
UEVDSUZJRVIsIGVycm5vLCBERUJVR19TVFIocGFyZW50RGlyKSk7CkBAIC00ODEsNyArNDgxLDcg
QEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIEZpbGVPcGVuTW9kZQogICAgIC8vIENvdWxkIG5vdCBvcGVuIHRoZSBmaWxl
LiBMb2cgdGhlIGVycm9yIGFuZCBsZWF2ZSwgcmV0dXJuaW5nIHRoZSBpbnZhbGlkCiAgICAgLy8g
ZmlsZSBoYW5kbGUuCiAKLSAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFk
KQorICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKICAgICAgICAgREVCVUdfTE9H
X0VSUk9SKCJFcnJvciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3Ig
cmVhZGluZyIsIGVycm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKICAgICBlbHNlCiAgICAgICAg
IERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lG
SUVSICIgZm9yIHdyaXRpbmciLCBlcnJubywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZWNvcmRlci5jcHAKaW5kZXggMWEzMDU1Yzk4OGIuLmU5MDYyMGYwZjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJl
L05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZWNv
cmRlcjo6cmVjb3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
dm9pZCBSZWNvcmRlcjo6d3JpdGVFdmVudHMoKQogewogICAgIGF1dG8gcGF0aCA9IE1hbmFnZXI6
OnNpbmdsZXRvbigpLnJlcXVlc3RUb1BhdGgobV9pbml0aWFsUmVxdWVzdCk7Ci0gICAgYXV0byBo
YW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICBhdXRvIGhhbmRs
ZSA9IE1hbmFnZXI6OnNpbmdsZXRvbigpLm9wZW5DYWNoZUZpbGUocGF0aCwgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2Ft
cGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAppbmRl
eCA4ZDhmMDU1Yzc3ZC4uOWVmNzA2NTRkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1l
bW9yeVNhbXBsZXIuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVy
Ojppbml0aWFsaXplU2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUKICAgICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbXBs
ZUxvZ1NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKICAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRo
ID0gc2FtcGxlTG9nRmlsZVBhdGg7Ci0gICAgbV9zYW1wbGVMb2dGaWxlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUobV9zYW1wbGVMb2dGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpP
cGVuRm9yV3JpdGUpOworICAgIG1fc2FtcGxlTG9nRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KG1fc2FtcGxlTG9nRmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwog
ICAgIHdyaXRlSGVhZGVycygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA4NDUxZjBjYjYwMC4u
ODViYTdkOGRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyBz
dGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5n
JiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRpdGlvbnNBcHBseU9u
bHlUb0RvbWFpbiA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRh
KG1fbWV0YURhdGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBzZWVrRmlsZSht
X2ZpbGVIYW5kbGUsIDBsbCwgRmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAt
MSkgeworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBzZWVrRmlsZShtX2ZpbGVIYW5k
bGUsIDBsbCwgRmlsZVNlZWtPcmlnaW46OkJlZ2lubmluZykgPT0gLTEpIHsKICAgICAgICAgICAg
ICAgICBjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKICAgICAgICAgICAgICAgICBtX2ZpbGVFcnJv
ciA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBDb250ZW50
UnVsZUxpc3RTdG9yZTo6c3luY2hyb25vdXNSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKIAog
dm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBmaWxlID0gb3Bl
bkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBtX2xlZ2FjeUZp
bGVuYW1lKSwgRmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAgIGF1dG8gZmlsZSA9IG9w
ZW5GaWxlKGNvbnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0aCwgaWRlbnRpZmllciwgbV9sZWdhY3lG
aWxlbmFtZSksIEZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgIGlmIChmaWxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICBDb250ZW50UnVsZUxpc3RN
ZXRhRGF0YSBpbnZhbGlkSGVhZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggY2FlYzQ4M2U4YTUuLjM1NzE0MDQ0NzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
c3RhdGljIGJvb2wgaGFzRmlsZUNoYW5nZWRTaW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxU
aW1lIHNpbmNlKQogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURl
Y29kZXJGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmls
ZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JSZWFkKTsKKyAgICBhdXRv
IGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI2Miw3
ICsyNjIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6
d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiAgICAgICAgIGV4Y2x1ZGVGcm9tQmFja3VwKCk7CiAg
ICAgfQogCi0gICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocmVz
b3VyY2VMb2dGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Ok9wZW5Gb3JXcml0
ZSk7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocmVzb3Vy
Y2VMb2dGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICBp
ZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGJiMWMxMDgxZDYz
Li40MTVkOGU1MDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDE3LTExLTA4ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4K
KworICAgICAgICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBGaWxlU3lzdGVtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0
YWJhc2UuY3BwOgorCiAyMDE3LTExLTA2ICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBz
b255LmNvbT4KIAogICAgICAgICBVc2UgZW51bSBjbGFzc2VzIHdpdGhpbiBGaWxlU3lzdGVtCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3Bw
CmluZGV4IGVhMmQ2NDMzOWY2Li44ZmFiNWMwYjJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBA
QCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogCiAg
ICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7CiAgICAgU3RyaW5nIGFic29s
dXRlQ2FjaGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLCBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZp
bGVuYW1lKTsKLSAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBh
dGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQpOworICAgIGZpbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpSZWFkKTsKIAogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxl
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAgZmlsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFic29s
dXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKIAogICAgIGlm
ICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBvcGVuIHBsdWdpbiBtZXRhZGF0YSBjYWNoZSBmb3Igc2F2aW5nIik7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2U5OTcxZDll
ODUuLmI1MDM0NWFiMGExIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTEtMDggIENocmlzdG9waGVyIFJlaWQg
IDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFVzZSBlbnVtIGNsYXNzZXMgd2l0aGlu
IEZpbGVTeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVz
dC5tbToKKwogMjAxNy0xMS0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdXNlIEpTT046OntBcnJheSxPYmplY3Qs
VmFsdWV9IGluc3RlYWQgb2YgSW5zcGVjdG9ye0FycmF5LE9iamVjdCxWYWx1ZX0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDJi
MzY0MzllYTdlLi41ZjFkYzhiMmU0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIFN0
cmluZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGNvbnN0
ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDEwMjQ7CiAKLSAgICBhdXRvIHNvdXJjZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvclJlYWQp
OworICAgIGF1dG8gc291cmNlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQoc291cmNlKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKQEAgLTM3OSw3ICsz
NzksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1
ZW50Q2hhbmdlKQogICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewog
ICAgICAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgo
KSkpOwogCi0gICAgICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUodGVtcEZp
bGVQYXRoKCksIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6T3BlbkZvcldyaXRlKTsKKyAgICAg
ICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgICAgIEFTU0VSVF9ORShoYW5kbGUs
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogCiAgICAgICAgIGludCBy
YyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51
dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRvclRlc3REYXRhLmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJU
ZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNl
VHJhY2tlclRlc3QubW0KaW5kZXggNWI4YWM1ZGQ0YzguLjcxM2IzYTVkMzEwIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2Vy
VGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0
YWJhc2VUcmFja2VyVGVzdC5tbQpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVE
aXJlY3RvcnlBbmRBbGxDb250ZW50cyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAKIHN0
YXRpYyB2b2lkIGNyZWF0ZUZpbGVBdFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3Bl
bkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpPcGVuRm9yV3JpdGUpOworICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6
b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgRVhQ
RUNUX05FKC0xLCBmaWxlSGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhh
bmRsZSk7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>