<?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>174880</bug_id>
          
          <creation_ts>2017-07-26 17:02:24 -0700</creation_ts>
          <short_desc>Part 2 of: Rename DatabaseProcess to StorageProcess</short_desc>
          <delta_ts>2017-08-01 11:18:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=174879</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=175034</see_also>
          <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>
          <dependson>174961</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1332507</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-26 17:02:24 -0700</bug_when>
    <thetext>Part 2 of: Rename DatabaseProcess to StorageProcess

Part 1 renamed all of the relevant files on disk and then made the minimal set of code changes to keep things building.

This part will go through all of WebKit and rename all the other things that are now obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332509</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-26 17:02:52 -0700</bug_when>
    <thetext>Part 1 - https://bugs.webkit.org/show_bug.cgi?id=174879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332775</commentid>
    <comment_count>2</comment_count>
      <attachid>316581</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-27 16:52:10 -0700</bug_when>
    <thetext>Created attachment 316581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332776</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-27 16:53:23 -0700</bug_when>
    <thetext>Attachment 316581 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/NetworkProcess.cpp:306:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/NetworkProcess/NetworkProcess.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 42 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>1332778</commentid>
    <comment_count>4</comment_count>
      <attachid>316581</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-07-27 16:57:12 -0700</bug_when>
    <thetext>Comment on attachment 316581
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:315
&gt; -void NetworkProcess::didGrantSandboxExtensionsToDatabaseProcessForBlobs(uint64_t requestID)
&gt; +void NetworkProcess::didgrantSandboxExtensionsToStorageProcessForBlobs(uint64_t requestID)

Lower-case g doesn&apos;t look right.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:200
&gt; -    void didGrantSandboxExtensionsToDatabaseProcessForBlobs(uint64_t requestID);
&gt; +    void didgrantSandboxExtensionsToStorageProcessForBlobs(uint64_t requestID);

Ditto.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.messages.in:83
&gt; -    DidGrantSandboxExtensionsToDatabaseProcessForBlobs(uint64_t requestID)
&gt; +    DidgrantSandboxExtensionsToStorageProcessForBlobs(uint64_t requestID)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332779</commentid>
    <comment_count>5</comment_count>
      <attachid>316582</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-27 17:11:38 -0700</bug_when>
    <thetext>Created attachment 316582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332782</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-27 17:14:43 -0700</bug_when>
    <thetext>Attachment 316582 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/NetworkProcess.cpp:306:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/NetworkProcess/NetworkProcess.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 43 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>1332783</commentid>
    <comment_count>7</comment_count>
      <attachid>316584</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-27 17:16:57 -0700</bug_when>
    <thetext>Created attachment 316584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332785</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-27 17:19:53 -0700</bug_when>
    <thetext>Attachment 316584 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/NetworkProcess.cpp:306:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/NetworkProcess/NetworkProcess.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 43 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>1332818</commentid>
    <comment_count>9</comment_count>
      <attachid>316600</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-27 19:17:06 -0700</bug_when>
    <thetext>Created attachment 316600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332825</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-27 19:19:48 -0700</bug_when>
    <thetext>Attachment 316600 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/NetworkProcess.cpp:306:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/NetworkProcess/NetworkProcess.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 52 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>1332854</commentid>
    <comment_count>11</comment_count>
      <attachid>316600</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-27 20:32:38 -0700</bug_when>
    <thetext>Comment on attachment 316600
Patch

Clearing flags on attachment: 316600

Committed r219990: &lt;http://trac.webkit.org/changeset/219990&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332855</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-27 20:32:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333124</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-28 16:42:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/33601771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333145</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-28 17:49:48 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 174961</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333817</commentid>
    <comment_count>15</comment_count>
      <attachid>316863</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-01 09:40:25 -0700</bug_when>
    <thetext>Created attachment 316863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333822</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-01 09:43:58 -0700</bug_when>
    <thetext>Attachment 316863 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/NetworkProcess.cpp:306:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/NetworkProcess/NetworkProcess.h:118:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 52 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>1333863</commentid>
    <comment_count>17</comment_count>
      <attachid>316863</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-01 11:18:07 -0700</bug_when>
    <thetext>Comment on attachment 316863
Patch

Clearing flags on attachment: 316863

Committed r220105: &lt;http://trac.webkit.org/changeset/220105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333864</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-01 11:18:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316581</attachid>
            <date>2017-07-27 16:52:10 -0700</date>
            <delta_ts>2017-07-27 17:11:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174880-20170727165209.patch</filename>
            <type>text/plain</type>
            <size>66974</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1NzZlYmJiMDExYmFmMGY3
OGQzYjFiMzUyZThhZDRiNjc0YmZiZWIuLjg4M2RjMTMzOTVlZjAzYzg3Yzg4ZDhkMjBhOGFlZTA4
OTFjNDNmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUzIEBACiAyMDE3LTA3LTI3ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXJ0IDIgb2Y6IFJlbmFtZSBE
YXRhYmFzZVByb2Nlc3MgdG8gU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgc29tZSBtb3JlIHZhcmlhYmxlcywgY2xh
c3NlcywgZXRjLiB0byByZWZsZWN0IHRoZSBjaGFuZ2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxl
cyk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9y
YWdlUHJvY2Vzc0ZvckJsb2JzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRp
ZGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJh
c2VQcm9jZXNzRm9yQmxvYnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnMp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAg
ICAgICAgKiBTaGFyZWQvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmg6CisgICAgICAgICogU2hhcmVk
L2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpleGVj
dXRhYmxlUGF0aE9mU3RvcmFnZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpleGVjdXRhYmxl
UGF0aE9mRGF0YWJhc2VQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvd3BlL1By
b2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQ
YXRoT2ZTdG9yYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRoT2ZE
YXRhYmFzZVByb2Nlc3MpOiBEZWxldGVkLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6cHV0T3JBZGQpOgorCisgICAgICAgICogU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
UHJvY2Vzczo6cG9zdFN0b3JhZ2VUYXNrKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nl
c3M6OnBlcmZvcm1OZXh0U3RvcmFnZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpwb3N0RGF0YWJhc2VUYXNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuaDoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9tYWMvU3RvcmFnZVByb2Nlc3NNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05h
bWUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAg
IChXS0NvbnRleHRHZXREYXRhYmFzZVByb2Nlc3NJZGVudGlmaWVyKToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNz
UG9vbCBfdGVybWluYXRlU3RvcmFnZVByb2Nlc3NdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bCBfc3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2Vzc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9kYXRhYmFzZVByb2Nlc3NJZGVudGlmaWVyXSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorCisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6c2Vydmlj
ZU5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVy
V1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRl
bnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9y
QmxvYnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6Omdl
dExhdW5jaE9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJv
eHk6OmRpZENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENy
ZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRDbGllbnQ6OnN0b3JhZ2VQcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0Q2xpZW50OjpkYXRhYmFzZVByb2Nlc3NEaWRDcmFzaCk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaDoKKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
bnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQWRkZWRUb1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdl
YnNpdGVEYXRhU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpkYXRhYmFzZVByb2Nlc3NDcmFzaGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlRGF0
YWJhc2VQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb1N0b3JhZ2VQcm9j
ZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KTogRGVsZXRl
ZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnN0b3JhZ2VQcm9jZXNzUGFyYW1ldGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Np
b24pOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpk
aWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvU3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvU3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9y
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bjo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjp+V2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRvRGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbik6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRvU3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbjo6Y29ubmVjdGlvbik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25D
bG9zZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp3ZWJUb0RhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCisyMDE3LTA3LTI3ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBQYXJ0IDEgb2Y6IFJlbmFtZSBEYXRh
YmFzZVByb2Nlc3MgdG8gU3RvcmFnZVByb2Nlc3MuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4NzkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCAzNDliYzQ3ZWZhMjM2ZGVlNTNjOGM3MWVhMjNiZTc0M2MxYTU1MDc5Li41ZjgyOTky
YWY3ZDU2MWM4ZmQ3Yzc2ODRmNzBkMWQ2ZTI1Yjk1MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtMzk4LDcgKzM5OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpCiAgICAg
ICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVSZWZlcmVuY2VzKQogICAgICAgICAgICAgZmlsZS0+
cmV2b2tlRmlsZUFjY2VzcygpOwogCi0gICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24o
KS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhmaWxlTmFt
ZXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVz
dElkZW50aWZpZXIsIGZpbGVOYW1lc10oKSB7CisgICAgICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKS5ncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKGZp
bGVOYW1lcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBy
ZXF1ZXN0SWRlbnRpZmllciwgZmlsZU5hbWVzXSgpIHsKICAgICAgICAgICAgIGlmICghbV9jb25u
ZWN0aW9uLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDgwYTRlNTE0
MTVhMzFiN2Q0Nzk4MjE1MzBjYjNlZTZjMzk4YWJkNGIuLjkwNmM0OGU5MDAyZWE4NTg3NTQ1MGMx
M2MyNTM4OTEwNmMzY2Q5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMDMsMTYgKzMwMywxNiBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZXN0cm95U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIFNlc3Npb25UcmFj
a2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3Rv
cmFnZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGdW5j
dGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHN0YXRpYyB1aW50NjRf
dCBsYXN0UmVxdWVzdElEOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gKytsYXN0UmVxdWVz
dElEOwogICAgIG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzLnNl
dChyZXF1ZXN0SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpHcmFu
dFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyhyZXF1ZXN0SUQsIGZp
bGVuYW1lcyksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQ
cm9jZXNzRm9yQmxvYnMocmVxdWVzdElELCBmaWxlbmFtZXMpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9y
QmxvYnModWludDY0X3QgcmVxdWVzdElEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkZ3JhbnRT
YW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0
SUQpCiB7CiAgICAgaWYgKGF1dG8gaGFuZGxlciA9IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2Jz
Q29tcGxldGlvbkhhbmRsZXJzLnRha2UocmVxdWVzdElEKSkKICAgICAgICAgaGFuZGxlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGJk
MjE4OGJiNGVjMGI3YWE4NTFlM2RiZjliYTgwZWQyNzg1YzkyNzkuLjc4OTNjNjhhZTM1MWI1Njdm
OGI1ZGVlMGI5ODA0ZWRlNmYzNzZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmJik7CiAKLSAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vz
c0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9u
c1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
LCBGdW5jdGlvbjx2b2lkICgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogI2lmIEhBVkUoQ0ZO
RVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0
aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wg
c2hvdWxkQ2xlYXJGaXJzdCk7CkBAIC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wpOwogICAgIHZvaWQg
c3luY0FsbENvb2tpZXMoKTsKIAotICAgIHZvaWQgZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1Rv
RGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKTsKKyAgICB2b2lkIGRp
ZGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3Qg
cmVxdWVzdElEKTsKIAogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3Jz
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjBjZTY0YjgzNTAxMDZmYjhiZjVkOWQ2NDI4YTU3
NzJlOGQzOWVjYy4uMGUyOGEzYWMxODE0MDQ4ZWUzNjgwZmVhNTk5MzJjOTcwMjc3MjMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC04MCw3ICs4MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBDYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKICAgICBQcm9j
ZXNzRGlkUmVzdW1lKCkKIAotICAgIERpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNl
UHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkKKyAgICBEaWRncmFudFNhbmRib3hF
eHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkKIAog
I2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIFVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvclRvcFByaXZhdGVseU93bmVkRG9tYWlucyhWZWN0b3I8U3RyaW5nPiBk
b21haW5zVG9SZW1vdmUsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91bGRD
bGVhckZpcnN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUHJvY2Vzc0V4ZWN1
dGFibGVQYXRoLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGgu
aAppbmRleCBhNThhOTA3NjA3ZjlmZjFiY2QxMGJjNjJlZmZhZGFhMzg4NjRjZjY1Li5iNTE1OWZi
YjU2N2QwMmU3NmY0OTY3MzI4MDlkNGNmMmRjOGYwYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaApAQCAtMzIsNiArMzIsNiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mV2ViUHJvY2VzcygpOwogU3RyaW5nIGV4
ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7CiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZk5l
dHdvcmtQcm9jZXNzKCk7Ci1TdHJpbmcgZXhlY3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJvY2Vzcygp
OworU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdlUHJvY2VzcygpOwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3Bw
CmluZGV4IGYzOGUxY2U0Mjk5ZWRhMzBiMDRiZjZjZTIyOWJkMGIzYzg0YTU1NDkuLjhiMzgzMzM4
MDhiNTVhZDZmZjY5YjI3OGU0ODc2OWZiZDkwNDA2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCkBAIC04NCw5ICs4
NCw5IEBAIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKQogICAgIHJldHVy
biBmaW5kV2ViS2l0UHJvY2VzcygiV2ViS2l0TmV0d29ya1Byb2Nlc3MiKTsKIH0KIAotU3RyaW5n
IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MoKQorU3RyaW5nIGV4ZWN1dGFibGVQYXRo
T2ZTdG9yYWdlUHJvY2VzcygpCiB7Ci0gICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXZWJL
aXREYXRhYmFzZVByb2Nlc3MiKTsKKyAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldlYktp
dFN0b3JhZ2VQcm9jZXNzIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcApp
bmRleCA5ZWY0NjI5YjI1ZGJmZmI4ZThkYjdlMWY1ZGVkNTE1ZmIwN2Q5ZjQ2Li4yMmQ0NWNiYmJl
ZmE0YTI0MTQzOTZjZTVkNTE2ZjYzNmUxYTljMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcApAQCAtNzcsOSArNzcs
OSBAQCBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCkKICAgICByZXR1cm4g
ZmluZFdlYktpdFByb2Nlc3MoIldQRU5ldHdvcmtQcm9jZXNzIik7CiB9CiAKLVN0cmluZyBleGVj
dXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCkKK1N0cmluZyBleGVjdXRhYmxlUGF0aE9mU3Rv
cmFnZVByb2Nlc3MoKQogewotICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2VzcygiV1BFRGF0YWJh
c2VQcm9jZXNzIik7CisgICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXUEVTdG9yYWdlUHJv
Y2VzcyIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9DbGllbnQuY3BwCmluZGV4IDM4OTA1YzEzMTliN2NkYzQ5ZmQ1YmVhMTJkYzdmYTllYjE0
MTFiZDcuLmRmZWMwZmMzMGYwMjFkNWQ1ZmQ4OWRlMjllYzk2ZTRhMWFhYjZkMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQg
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCwgY29uc3QgSURCCiAgICAgICAgICYmIG92ZXJ3cml0ZU1vZGUgIT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3Jp
dGUpCiAgICAgICAgICYmIG92ZXJ3cml0ZU1vZGUgIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpPdmVyd3JpdGVGb3JDdXJzb3IpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2UgZnJvbSB0aGUgV2ViUHJvY2VzcyBpcyBj
b3JydXB0LgotICAgICAgICAvLyBUaGUgRGF0YWJhc2VQcm9jZXNzIHNob3VsZCByZXR1cm4gZWFy
bHkgYXQgdGhpcyBwb2ludCwgYnV0IGNhbiB3ZSBhbHNvIGtpbGwgdGhlIGJhZCBXZWJQcm9jZXNz
PworICAgICAgICAvLyBUaGUgU3RvcmFnZVByb2Nlc3Mgc2hvdWxkIHJldHVybiBlYXJseSBhdCB0
aGlzIHBvaW50LCBidXQgY2FuIHdlIGFsc28ga2lsbCB0aGUgYmFkIFdlYlByb2Nlc3M/CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZjRkOTRiY2QzNTFhY2QyMjYyOGQ2NjUwMTk5OTRhM2I5
ZTQzODU2Zi4uMWNjN2E2YmQ0MGUzNGYyMGI5NTVlMGU1NGMxZGI2NmUzZDIzNmJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplV2Vic2l0ZURhdGFT
dG9yZShjb25zdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTdG9yYWdlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4
aXN0cywgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICBwb3N0U3Rv
cmFnZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU3RvcmFnZVByb2Nlc3M6OmVu
c3VyZVBhdGhFeGlzdHMsIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KSk7CiAj
ZW5kaWYKIH0KIApAQCAtMTMzLDM5ICsxMzMsMzkgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZW5z
dXJlUGF0aEV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIG1ha2UgYWxsIGRpcmVjdG9yaWVzIGZvciBwYXRoICclcyciLCBwYXRoLnV0ZjgoKS5k
YXRhKCkpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0RGF0YWJhc2VUYXNrKENyb3Nz
VGhyZWFkVGFzayYmIHRhc2spCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0U3RvcmFnZVRhc2so
Q3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRleCk7CisgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zdG9yYWdlVGFza011dGV4KTsKIAotICAgIG1fZGF0YWJhc2VUYXNr
cy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgbV9zdG9yYWdlVGFza3MuYXBwZW5kKFdURk1v
dmUodGFzaykpOwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKLSAgICAgICAgcGVy
Zm9ybU5leHREYXRhYmFzZVRhc2soKTsKKyAgICAgICAgcGVyZm9ybU5leHRTdG9yYWdlVGFzaygp
OwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpwZXJmb3JtTmV4dERhdGFiYXNl
VGFzaygpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIENyb3NzVGhyZWFkVGFzayB0
YXNrOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZVRhc2tNdXRl
eCk7Ci0gICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZVRhc2tzLmlzRW1wdHkoKSk7Ci0gICAgICAg
IHRhc2sgPSBtX2RhdGFiYXNlVGFza3MudGFrZUZpcnN0KCk7CisgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fc3RvcmFnZVRhc2tNdXRleCk7CisgICAgICAgIEFTU0VSVCghbV9zdG9yYWdlVGFz
a3MuaXNFbXB0eSgpKTsKKyAgICAgICAgdGFzayA9IG1fc3RvcmFnZVRhc2tzLnRha2VGaXJzdCgp
OwogICAgIH0KIAogICAgIHRhc2sucGVyZm9ybVRhc2soKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKK3ZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKIHsKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIg
c29ja2V0UGFpciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKCk7
CiAgICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHNvY2tldFBhaXIuc2VydmVyKSk7Ci0gICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94
eTo6RGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dChzb2NrZXRQYWlyLmNsaWVudCkpLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQoc29ja2V0UGFpci5jbGllbnQpKSwg
MCk7CiAjZWxpZiBPUyhEQVJXSU4pCiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0ZW5pbmcgcG9ydC4K
ICAgICBtYWNoX3BvcnRfdCBsaXN0ZW5pbmdQb3J0OwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
U3RvcmFnZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAg
ICAgbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChTdG9yYWdlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0
ZW5pbmdQb3J0KSkpOwogCiAgICAgSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkRpZENyZWF0ZURhdGFi
YXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7CisgICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RGlk
Q3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCksIDApOwogI2Vs
c2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBP
cHRpb25TZXQ8V2Vic2l0ZURhdGEKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkgewogICAgICAgICAvLyBGSVhN
RTogUGljayB0aGUgcmlnaHQgZGF0YWJhc2Ugc3RvcmUgYmFzZWQgb24gdGhlIHNlc3Npb24gSUQu
Ci0gICAgICAgIHBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYXRoID0gV1RGTW92ZShw
YXRoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcG9zdFN0b3JhZ2VUYXNrKENyb3NzVGhyZWFkVGFz
ayhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
cGF0aCA9IFdURk1vdmUocGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHNlY3VyaXR5T3JpZ2lucyA9IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMocGF0aCldIHsK
ICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKICAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGE2N2M0
M2VlODUyN2FiZWE4MGY0NzhmZmRhMWRjOGIzMzBhYjA3MzAuLjNiYzcyZTIwNmEyMWMyMjAzNTM5
ODU1N2UwZmU3MGE5ZGUyNjQ0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgV29ya1F1
ZXVlJiBxdWV1ZSgpIHsgcmV0dXJuIG1fcXVldWUuZ2V0KCk7IH0KIAotICAgIHZvaWQgcG9zdERh
dGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2smJik7CisgICAgdm9pZCBwb3N0U3RvcmFnZVRhc2so
Q3Jvc3NUaHJlYWRUYXNrJiYpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAg
Ly8gV2ViQ29yZTo6SURCU2VydmVyOjpJREJCYWNraW5nU3RvcmVGaWxlSGFuZGxlcgpAQCAtOTAs
NyArOTAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQg
aW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUoY29uc3QgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKTsKLSAgICB2b2lkIGNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bigpOworICAgIHZvaWQgY3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAog
ICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAt
MTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIC8vIEZvciBleGVjdXRpb24g
b24gd29yayBxdWV1ZSB0aHJlYWQgb25seQotICAgIHZvaWQgcGVyZm9ybU5leHREYXRhYmFzZVRh
c2soKTsKKyAgICB2b2lkIHBlcmZvcm1OZXh0U3RvcmFnZVRhc2soKTsKICAgICB2b2lkIGVuc3Vy
ZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJik7CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0b3JhZ2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uPj4gbV9kYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25z
OwpAQCAtMTE5LDggKzExOSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPj4gbV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25z
OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkmJik+PiBtX3NhbmRib3hFeHRlbnNpb25Gb3JCbG9ic0NvbXBsZXRp
b25IYW5kbGVyczsKIAotICAgIERlcXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVRhc2tz
OwotICAgIExvY2sgbV9kYXRhYmFzZVRhc2tNdXRleDsKKyAgICBEZXF1ZTxDcm9zc1RocmVhZFRh
c2s+IG1fc3RvcmFnZVRhc2tzOworICAgIExvY2sgbV9zdG9yYWdlVGFza011dGV4OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwNTU4NzM3NTRiZTY2NTQ2
MDNjMTJiZGI3NTU5MjVmMzYxNTk3MDE3Li40YmRlYzczZTY0ZjFhY2ZlMDY1NDc3ZjE0YTZlZmEw
YTAwZTA4MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4g
U3RvcmFnZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluaXRpYWxpemVXZWJzaXRlRGF0
YVN0b3JlKHN0cnVjdCBXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9uIGZv
ciBjb21tdW5pY2F0aW9uIHdpdGggYSBXZWJQcm9jZXNzCi0gICAgQ3JlYXRlRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uKCkKKyAgICBDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbigpCiAKICAgICBGZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNp
dGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZp
ZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvbWFjL1N0b3JhZ2VQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9tYWMvU3RvcmFnZVByb2Nlc3NNYWMubW0KaW5kZXggZDZhZjE2OWNmNTdl
NDU4YzM5ZDE5NDUzNjAwMDk2ZjU3YjBhNzUwMS4uYzAzODg2MGY4ZjE0M2MwZGNmZmM5M2E1Mjc2
NmQ2MzQ1NDc0MWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9t
YWMvU3RvcmFnZVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9tYWMvU3RvcmFnZVByb2Nlc3NNYWMubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTdG9yYWdl
UHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXIKIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1l
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKLSAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6V0VCX1VJX1NUUklORygiJUAgRGF0YWJhc2UgU3RvcmFnZSIsICJ2aXNpYmxlIG5hbWUg
b2YgdGhlIGRhdGFiYXNlIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24g
bmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy51aVByb2Nlc3NOYW1lXTsKKyAgICBOU1N0
cmluZyAqYXBwbGljYXRpb25OYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJ
X1NUUklORygiJUAgU3RvcmFnZSIsICJ2aXNpYmxlIG5hbWUgb2YgdGhlIHN0b3JhZ2UgcHJvY2Vz
cy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKilw
YXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOwogICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFt
ZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25OYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggYTUwMTliMjUyMzY0NjRjZDQxMTViYWQw
N2Y2MGNhZjA4NTkxY2ZjMC4uZGI0NzA0YTA3Y2IyNmI5MzdhZmFlYmI4OWFjMjc5NGE4YmZiNjUw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC01
OTAsNSArNTkwLDUgQEAgcGlkX3QgV0tDb250ZXh0R2V0TmV0d29ya1Byb2Nlc3NJZGVudGlmaWVy
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogCiBwaWRfdCBXS0NvbnRleHRHZXREYXRhYmFzZVBy
b2Nlc3NJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewotICAgIHJldHVybiB0
b0ltcGwoY29udGV4dFJlZiktPmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gdG9JbXBsKGNvbnRleHRSZWYpLT5zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
aW5kZXggMjUwZjcxNmMwYzY4YjgwZjU4MDQ2MTQ3MzRmNzJkZDU4ZGE2ZTg4ZS4uMDc3OWEyMGVj
ODEzMmVmZWI0ZTQ1ZjA5MzAxNmY5NDkwMDkyOTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM4NSw5ICszODUsOSBA
QCAtICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hdGlvblNlc3Npb24gKilh
dXRvbWF0aW9uU2Vzc2lvbgogICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvblNlc3Npb24o
YXV0b21hdGlvblNlc3Npb24gPyBhdXRvbWF0aW9uU2Vzc2lvbi0+X3Nlc3Npb24uZ2V0KCkgOiBu
dWxscHRyKTsKIH0KIAotLSAodm9pZClfdGVybWluYXRlRGF0YWJhc2VQcm9jZXNzCistICh2b2lk
KV90ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcwogewotICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRl
RGF0YWJhc2VQcm9jZXNzKCk7CisgICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVTdG9yYWdlUHJv
Y2VzcygpOwogfQogCiAtICh2b2lkKV90ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcwpAQCAtNDAwLDkg
KzQwMCw5IEBAIC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIKICAgICByZXR1cm4g
X3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KIAotLSAocGlkX3Qp
X2RhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIKKy0gKHBpZF90KV9zdG9yYWdlUHJvY2Vzc0lkZW50
aWZpZXIKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3NJZGVudGlm
aWVyKCk7CisgICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+c3RvcmFnZVByb2Nlc3NJZGVudGlmaWVy
KCk7CiB9CiAKIC0gKHZvaWQpX3N5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKaW5kZXggMWE2YzZjYzEwMzBiNGQzZTAwOTlhYzU5N2M5ZjFlNGVjYjQ3MTk0Zi4uZGEzMTk2
OWUxM2E2MjM3MjJlZGRkYjk3Yjk1ODAwZTE0NTY4YzU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAg
LTcyLDEyICs3MiwxMiBAQAogLSAodm9pZClfc2V0QXV0b21hdGlvblNlc3Npb246KF9XS0F1dG9t
YXRpb25TZXNzaW9uICopYXV0b21hdGlvblNlc3Npb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTIpLCBpb3MoMTAuMCkpOwogCiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25s
eSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCi0tICh2b2lkKV90
ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3M7CistICh2b2lkKV90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vz
czsKIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzOwogCiAvLyBUZXN0IG9ubHkuCiAt
IChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAocGlkX3QpX2RhdGFiYXNlUHJvY2Vz
c0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistIChwaWRfdClfc3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9u
bHkuCiAtIChzaXplX3QpX3dlYlByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKaW5kZXggOGE1NjI0NmE3NzIzYjY1MmRm
YmFlNDQxNmVjZDJiNWQ3NTFiYWY0Yi4uNjc5OGZjOWY5ZDBmMjk5ZDZlNjZmM2UzNTZlY2NlOTli
ZWYxNzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBQbHVnaW42
NCwKICNlbmRpZgogICAgICAgICBOZXR3b3JrLAotICAgICAgICBEYXRhYmFzZSwKKyAgICAgICAg
U3RvcmFnZSwKICAgICB9OwogCiAgICAgc3RydWN0IExhdW5jaE9wdGlvbnMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5j
aGVyR3RrLmNwcAppbmRleCA2ZWQ0OTUwOGEzYzU3ZWM1ZDA1N2YxODBkYmQ2MzFlNGVlNjBkN2Yx
Li4yNTZiZmYzZmFlYmM2MmM4NGM0MWY2OTAyNjc0ZGUzOTA5NDEwOTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5j
aGVyR3RrLmNwcApAQCAtODEsOCArODEsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2VzcygpCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3Jr
OgogICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2Vz
cygpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5
cGU6OkRhdGFiYXNlOgotICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZE
YXRhYmFzZVByb2Nlc3MoKTsKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6
OlN0b3JhZ2U6CisgICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZlN0b3Jh
Z2VQcm9jZXNzKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KaW5kZXggMzkwY2ZlOTUyOTE0YWEy
NjQ3YzViMTU2NWJhNjA4MGI1N2MwNTRiZS4uNjA1N2I0YTk0ODgwMDYwMWRlYWFjOGE4NjJjNzVm
ZGI5M2EwY2FlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9M
YXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZShjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9w
dGlvbnMmIGxhdW5jaE9wdGlvCiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50IjsKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6
CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nIjsKLSAgICBjYXNl
IFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOgorICAgIGNhc2UgUHJvY2Vz
c0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6U3RvcmFnZToKICAgICAgICAgcmV0dXJuICJjb20uYXBw
bGUuV2ViS2l0LlN0b3JhZ2UiOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAg
IGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6UGx1Z2luMzI6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BF
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNo
ZXJXUEUuY3BwCmluZGV4IDU5NThhYjA5YTI5OTlhNGQwYTNlMjlhNTA1ODU3OTMyYjg5ZjBmNGEu
LjJjNjIzODQ3ZDBmODU2ZGM2MWRmOWFjYjAwZGQzMmM3M2Q5YzU2Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNo
ZXJXUEUuY3BwCkBAIC02Nyw4ICs2Nyw4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQ
cm9jZXNzKCkKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6
CiAgICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNz
KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlw
ZTo6RGF0YWJhc2U6Ci0gICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZkRh
dGFiYXNlUHJvY2VzcygpOworICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6
U3RvcmFnZToKKyAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mU3RvcmFn
ZVByb2Nlc3MoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwZTljMDc4NWNiNzdmZTExMDJhMTgz
YTg3MTU3ZTJiNDYzNWZhZGYxLi42ZTFhMzQ1NGExZjZlYjJiYzE2NmEyMTYzY2JhMDFkMWM5MGNj
YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI4OSwxOSArMjg5LDE5IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
cmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsKICNpZiBF
TkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5IGV4dGVuc2lvbnM7CiAgICAgZXh0ZW5zaW9ucy5hbGxvY2F0ZShwYXRocy5zaXplKCkpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
Ly8gUmVhZFdyaXRlIGlzIHJlcXVpcmVkIGZvciBjcmVhdGluZyBoYXJkIGxpbmtzIGFzIHdlbGwg
YXMgZGVsZXRpbmcgdGhlIHRlbXBvcmFyeSBmaWxlLCB3aGljaCB0aGUgRGF0YWJhc2VQcm9jZXNz
IHdpbGwgZG8uCisgICAgICAgIC8vIFJlYWRXcml0ZSBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcg
aGFyZCBsaW5rcyBhcyB3ZWxsIGFzIGRlbGV0aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSwgd2hpY2gg
dGhlIFN0b3JhZ2VQcm9jZXNzIHdpbGwgZG8uCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShwYXRoc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBleHRlbnNp
b25zW2ldKTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3NQb29sLnNlbmRUb0RhdGFiYXNlUHJvY2Vz
c1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpHcmFudFNh
bmRib3hFeHRlbnNpb25zRm9yQmxvYnMocGF0aHMsIGV4dGVuc2lvbnMpKTsKKyAgICBtX3Byb2Nl
c3NQb29sLnNlbmRUb1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OkdyYW50U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9icyhwYXRocywg
ZXh0ZW5zaW9ucykpOwogI2VuZGlmCi0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6RGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNz
Rm9yQmxvYnMocmVxdWVzdElEKSwgMCk7CisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6RGlkZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nl
c3NGb3JCbG9icyhyZXF1ZXN0SUQpLCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBl
OWJkYzYzZDk5NmJmOWJmZGM0NTkyMjY0YTEzODkzZmY3NTM3MzAwLi45MjNkZDJhOTA4NzMwOTIy
OTUzYWRjMWM3NTUyMDgzOTY4NjVkNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTExLDcgKzExMSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNr
SUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1
aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhdGhzKTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0
b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGF0aHMpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsK
ICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwYzkwMmVkN2FjMGM2OWZjZmZj
NTkyOWZjYzZhZjNlZDdiNGZjZWNlLi4yMDhkODVmYWJlMDU3MmNmZDFiZjFjNDEyNmE1YzIyYTUx
ODA0NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERp
ZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGlkRGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBHcmFudFNhbmRi
b3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQs
IFZlY3RvcjxTdHJpbmc+IHBhdGhzKQorICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3Jh
Z2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElELCBWZWN0b3I8U3RyaW5nPiBwYXRo
cykKIAogICAgIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCiAgICAgU2V0SXNIb2xkaW5nTG9ja2Vk
RmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVlNzhj
N2QwYTM2NjgyY2ZkNTEzY2YwYTdiM2Y1NjVmMmQ0NTE4MTcuLjIwZDIwZTBlZTNjZjM5ODQ4NjUy
NWFjZDFiMmNiZWNkYTRkMDRkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBT
dG9yYWdlUHJvY2Vzc1Byb3h5Ojp+U3RvcmFnZVByb2Nlc3NQcm94eSgpCiAKIHZvaWQgU3RvcmFn
ZVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9w
dGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7Ci0gICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9
IFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOworICAgIGxhdW5jaE9wdGlv
bnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpTdG9yYWdlOwog
ICAgIENoaWxkUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwog
fQogCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICBzZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHNl
c3Npb25JRCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQg
U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewogICAgIG1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTEyMCwx
MiArMTIwLDEyIEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNz
Q29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKCksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6Q3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpCiB7Ci0gICAgLy8gVGhlIGRhdGFiYXNlIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3Ig
ZXhpdGVkLCBzbyBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgor
ICAgIC8vIFRoZSBzdG9yYWdlIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBz
byBzZW5kIGFueSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxl
ICghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8g
cmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIApAQCAtMTUw
LDE5ICsxNTAsMTkgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mKQogICAgICAgICBjYWxsYmFjaygpOwogICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNp
dGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5jbGVhcigpOwogCi0gICAgLy8gVGVsbCBQcm9jZXNz
UG9vbCB0byBmb3JnZXQgYWJvdXQgdGhpcyBkYXRhYmFzZSBwcm9jZXNzLiBUaGlzIG1heSBjYXVz
ZSB1cyB0byBiZSBkZWxldGVkLgotICAgIG1fcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzc0Ny
YXNoZWQodGhpcyk7CisgICAgLy8gVGVsbCBQcm9jZXNzUG9vbCB0byBmb3JnZXQgYWJvdXQgdGhp
cyBzdG9yYWdlIHByb2Nlc3MuIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCisgICAg
bV9wcm9jZXNzUG9vbC0+c3RvcmFnZVByb2Nlc3NDcmFzaGVkKHRoaXMpOwogfQogCiB2b2lkIFN0
b3JhZ2VQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKIHsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRh
Y2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6
ZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2ht
ZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7CiAKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBs
eSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgIFJlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3Qo
KTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHJlcGx5LT5zZW5kKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6
OkNvbgogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBlbmRpbmdD
b25uZWN0aW9uUmVxdWVzdHM7ICsraSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3M6OkNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKCksIDApOwogICAgIAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1
ZXN0cyA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZVByb2Nlc3NQcm94eS5oCmluZGV4IGJiY2E3MGUwNTViOTFkM2JkZTQ2NjgxMjk2NGEy
NzA2MjBmOGJiYTMuLjVjMTEwNmQzNjhiMDc4Y2Y4MWUxYTJjYWZjNzU0MTFhMjBlMjA0Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nl
c3NQcm94eS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNp
dGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4sIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgdm9pZCBnZXRE
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQg
Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAKIHByaXZh
dGU6CiAgICAgU3RvcmFnZVByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCopOwpAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN0b3JhZ2VQcm9jZXNzUHJveHlN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgLy8gTWVzc2Fn
ZSBoYW5kbGVycwotICAgIHZvaWQgZGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOworICAgIHZvaWQgZGlkQ3JlYXRlU3RvcmFnZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAgICAgdm9pZCBk
aWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRh
Jik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsK
ICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFj
a0lEKTsKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzUG9vbCogbV9w
cm9jZXNzUG9vbDsKIAogICAgIHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0
czsKLSAgICBEZXF1ZTxSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXM7CisgICAgRGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXM7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVE
YXRhKT4+IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURh
dGFDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZmUxNzY5MzMz
ZDZjMDQ0ZjQ1NTJhN2JjNTEyYWJiNmI3NTRlODMzYy4uMmE3OGE2YjFjNzEzMDRmMjJiZDZkMDMz
YWE0ZTg3NGVlNTlkN2JkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEs
NyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKLSAgICBEaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIERpZENy
ZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSWRlbnRpZmllcikKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJh
Y2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlkRGVs
ZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29udGV4dENsaWVudC5jcHAKaW5kZXggNjRkYmRlZmFmMGJhMjcyMGRkN2JlYTJk
OTM5YjgxNjA3ZTZhZDlhZi4uNDFjMGMyNTcyN2NhNDY2MWFmZmY1YmQxZDYwOGI2MmQ0NTNhZGI5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBXZWJDb250ZXh0Q2xpZW50OjpuZXR3b3JrUHJvY2Vzc0RpZENy
YXNoKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICBtX2NsaWVudC5uZXR3b3JrUHJv
Y2Vzc0RpZENyYXNoKHRvQVBJKHByb2Nlc3NQb29sKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKIH0KIAotdm9pZCBXZWJDb250ZXh0Q2xpZW50OjpkYXRhYmFzZVByb2Nlc3NEaWRDcmFzaChX
ZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCit2b2lkIFdlYkNvbnRleHRDbGllbnQ6OnN0b3Jh
Z2VQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewogICAgIGlm
ICghbV9jbGllbnQuZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2gpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaAppbmRleCBiMjVjNGQzYjlk
NGE5MmVkZTE2MjY4MGJhYTc0NjFkNzdjZDIxNWUwLi4wMzhmNjNhNWM0MDhjZDUzMjE4MDI2MGQ1
YWQ4ZWM1NGE0ZTliYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b250ZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENs
aWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdlYkNvbnRleHRDbGllbnQgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tDb250ZXh0Q2xpZW50QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgcGx1
Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzQ2hhbmdlZChXZWJQcm9jZXNzUG9vbCopOwogICAgIHZv
aWQgbmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCopOwotICAgIHZvaWQgZGF0
YWJhc2VQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB2b2lkIHN0b3JhZ2VQ
cm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGYy
OGYwOTk3ODYxMGM1MWQwMDMwYjE5ZDZmNjI5YzJhYjI1NDU2NjIuLjgzZjNhNjczZjcyNGI2ZmI4
Yjk5YjE1ZDExNjNmZDA2ZDA5NDMxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdU
Rk1vdmUocmVwbHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQ
cm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByZWxldmFudERhdGFT
dG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSkKIHsKICAgICAv
LyAqKioqKioqKioKICAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9y
eSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBj
b25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEy
PikKICAgICAvLyAqKioqKioqKioKIAotICAgIGlmICghbV9kYXRhYmFzZVByb2Nlc3MpIHsKLSAg
ICAgICAgbV9kYXRhYmFzZVByb2Nlc3MgPSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhp
cyk7CisgICAgaWYgKCFtX3N0b3JhZ2VQcm9jZXNzKSB7CisgICAgICAgIG1fc3RvcmFnZVByb2Nl
c3MgPSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcyk7CiAKICAgICAgICAgU3RvcmFn
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKQEAgLTUzMywzMiArNTMzLDMyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVu
c3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSoK
ICNlbmRpZgogCiAgICAgICAgIEFTU0VSVCghcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKTsKLSAgICAgICAgbV9kYXRhYmFzZVByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJz
KSwgMCk7CisgICAgICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQ
cm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJzKSwgMCk7CiAgICAg
fQogCiAgICAgaWYgKCFyZWxldmFudERhdGFTdG9yZSB8fCByZWxldmFudERhdGFTdG9yZSA9PSAm
d2Vic2l0ZURhdGFTdG9yZSgpLndlYnNpdGVEYXRhU3RvcmUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9kYXRhYmFzZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpJ
bml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShyZWxldmFudERhdGFTdG9yZS0+ZGF0YWJhc2VQcm9j
ZXNzUGFyYW1ldGVycygpKSwgMCk7CisgICAgbV9zdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKHJlbGV2YW50RGF0
YVN0b3JlLT5zdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKSksIDApOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYgcmVwbHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewotICAgIGVuc3VyZURhdGFiYXNlUHJvY2Vz
c0FuZFdlYnNpdGVEYXRhU3RvcmUobnVsbHB0cik7CisgICAgZW5zdXJlU3RvcmFnZVByb2Nlc3NB
bmRXZWJzaXRlRGF0YVN0b3JlKG51bGxwdHIpOwogCi0gICAgbV9kYXRhYmFzZVByb2Nlc3MtPmdl
dERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOworICAgIG1fc3RvcmFn
ZVByb2Nlc3MtPmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKHJlcGx5KSk7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVBy
b2Nlc3NQcm94eSogZGF0YWJhc2VQcm9jZXNzUHJveHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpz
dG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3NQ
cm94eSkKIHsKLSAgICBBU1NFUlQobV9kYXRhYmFzZVByb2Nlc3MpOwotICAgIEFTU0VSVChkYXRh
YmFzZVByb2Nlc3NQcm94eSA9PSBtX2RhdGFiYXNlUHJvY2Vzcy5nZXQoKSk7CisgICAgQVNTRVJU
KG1fc3RvcmFnZVByb2Nlc3MpOworICAgIEFTU0VSVChzdG9yYWdlUHJvY2Vzc1Byb3h5ID09IG1f
c3RvcmFnZVByb2Nlc3MuZ2V0KCkpOwogCiAgICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9z
dXBwbGVtZW50cy52YWx1ZXMoKSkKLSAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENsb3Nl
KGRhdGFiYXNlUHJvY2Vzc1Byb3h5KTsKKyAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENs
b3NlKHN0b3JhZ2VQcm9jZXNzUHJveHkpOwogCi0gICAgbV9jbGllbnQuZGF0YWJhc2VQcm9jZXNz
RGlkQ3Jhc2godGhpcyk7Ci0gICAgbV9kYXRhYmFzZVByb2Nlc3MgPSBudWxscHRyOworICAgIG1f
Y2xpZW50LnN0b3JhZ2VQcm9jZXNzRGlkQ3Jhc2godGhpcyk7CisgICAgbV9zdG9yYWdlUHJvY2Vz
cyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbGxTdGFydFVzaW5nUHJp
dmF0ZUJyb3dzaW5nKCkKQEAgLTk1OSw5ICs5NTksOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
YWdlQWRkZWRUb1Byb2Nlc3MoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICAgICBwYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSksIDApOwogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCi0gICAgICAgIGF1dG8gZGF0YWJhc2VQYXJhbWV0ZXJzID0gcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkuZGF0YWJhc2VQcm9jZXNzUGFyYW1ldGVycygpOwotICAgICAgICBpZiAo
IWRhdGFiYXNlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgc2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShN
ZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKGRhdGFi
YXNlUGFyYW1ldGVycykpOworICAgICAgICBhdXRvIHN0b3JhZ2VQYXJhbWV0ZXJzID0gcGFnZS53
ZWJzaXRlRGF0YVN0b3JlKCkuc3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCk7CisgICAgICAgIGlm
ICghc3RvcmFnZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHNlbmRUb1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShN
ZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKHN0b3Jh
Z2VQYXJhbWV0ZXJzKSk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC0xMDczLDEyICsxMDczLDEyIEBA
IHBpZF90IFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKQogICAgIHJl
dHVybiBtX25ldHdvcmtQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQogCi1waWRfdCBX
ZWJQcm9jZXNzUG9vbDo6ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcigpCitwaWRfdCBXZWJQcm9j
ZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyKCkKIHsKLSAgICBpZiAoIW1fZGF0YWJh
c2VQcm9jZXNzKQorICAgIGlmICghbV9zdG9yYWdlUHJvY2VzcykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICByZXR1cm4gbV9kYXRhYmFzZVByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCk7Cisg
ICAgcmV0dXJuIG1fc3RvcmFnZVByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wg
YWx3YXlzVXNlQ29tcGxleFRleHQpCkBAIC0xMzAyLDEzICsxMzAyLDEzIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKQogICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJDYWNoZWRDcmVkZW50aWFs
cygpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlRGF0YWJhc2VQcm9j
ZXNzKCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKCkKIHsK
LSAgICBpZiAoIW1fZGF0YWJhc2VQcm9jZXNzKQorICAgIGlmICghbV9zdG9yYWdlUHJvY2VzcykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhYmFzZVByb2Nlc3MtPnRlcm1pbmF0ZSgpOwot
ICAgIG1fZGF0YWJhc2VQcm9jZXNzID0gbnVsbHB0cjsKKyAgICBtX3N0b3JhZ2VQcm9jZXNzLT50
ZXJtaW5hdGUoKTsKKyAgICBtX3N0b3JhZ2VQcm9jZXNzID0gbnVsbHB0cjsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZGY5ZWUyYTM2YTIzNTlhY2Y5YjdjZDVmNTQy
Y2YyMjlmNDJkNzUyNC4uZDhjYTYzNGUxZGFhMmRjMDU2MDc3Yjc3Mzc1MjYwOThjOGU4MTdhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNjAsOCArMTYw
LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHZvaWQg
c2VuZFN5bmNUb05ldHdvcmtpbmdQcm9jZXNzKFQmJiBtZXNzYWdlLCBVJiYgcmVwbHkpOwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKTsKIAotICAgIC8vIFNlbmRzIHRoZSBtZXNzYWdl
IHRvIFdlYlByb2Nlc3Mgb3IgRGF0YWJhc2VQcm9jZXNzIGFzIGFwcHJvcG9yaWF0ZSBmb3IgY3Vy
cmVudCBwcm9jZXNzIG1vZGVsLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRv
RGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSk7CisgICAg
Ly8gU2VuZHMgdGhlIG1lc3NhZ2UgdG8gV2ViUHJvY2VzcyBvciBTdG9yYWdlUHJvY2VzcyBhcyBh
cHByb3BvcmlhdGUgZm9yIGN1cnJlbnQgcHJvY2VzcyBtb2RlbC4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIHNlbmRUb1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShU
JiYgbWVzc2FnZSk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJv
Y2Vzc1Byb3h5Kik7CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
IHBpZF90IG5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwotICAgIHBpZF90IGRhdGFiYXNlUHJv
Y2Vzc0lkZW50aWZpZXIoKTsKKyAgICBwaWRfdCBzdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIoKTsK
IAogICAgIHZvaWQgc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAg
dm9pZCBzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOwpAQCAtMjU1LDcgKzI1NSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0
KGJvb2wpOwogCiAgICAgdm9pZCBjbGVhckNhY2hlZENyZWRlbnRpYWxzKCk7Ci0gICAgdm9pZCB0
ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MoKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVN0b3JhZ2VQcm9j
ZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCBz
eW5jTmV0d29ya1Byb2Nlc3NDb29raWVzKCk7CkBAIC0zMTIsMTAgKzMxMiwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYpOwogCi0gICAgdm9pZCBlbnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUqIHJlbGV2YW50RGF0YVN0b3JlKTsKLSAgICBTdG9yYWdlUHJvY2Vz
c1Byb3h5KiBkYXRhYmFzZVByb2Nlc3MoKSB7IHJldHVybiBtX2RhdGFiYXNlUHJvY2Vzcy5nZXQo
KTsgfQotICAgIHZvaWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmKTsKLSAgICB2b2lkIGRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQ
cm94eSopOworICAgIHZvaWQgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUqIHJlbGV2YW50RGF0YVN0b3JlKTsKKyAgICBTdG9yYWdlUHJvY2Vz
c1Byb3h5KiBzdG9yYWdlUHJvY2VzcygpIHsgcmV0dXJuIG1fc3RvcmFnZVByb2Nlc3MuZ2V0KCk7
IH0KKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgc3RvcmFnZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkq
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCgpIGNvbnN0OwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Nh
bkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uOwogICAgIGJvb2wgbV9kaWROZXR3b3Jr
UHJvY2Vzc0NyYXNoOwogICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQ
cm9jZXNzOwotICAgIFJlZlB0cjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBtX2RhdGFiYXNlUHJvY2Vz
czsKKyAgICBSZWZQdHI8U3RvcmFnZVByb2Nlc3NQcm94eT4gbV9zdG9yYWdlUHJvY2VzczsKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+PiBtX2RpY3Rp
b25hcnlDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFN0YXRpc3RpY3NS
ZXF1ZXN0Pj4gbV9zdGF0aXN0aWNzUmVxdWVzdHM7CkBAIC02MjcsMTAgKzYyNywxMCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoVCYmIG1lc3NhZ2UpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQm
JiBtZXNzYWdlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvU3RvcmFnZVByb2Nlc3NSZWxh
dW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKQogewotICAgIGVuc3VyZURhdGFiYXNlUHJv
Y2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUobnVsbHB0cik7Ci0gICAgbV9kYXRhYmFzZVByb2Nlc3Mt
PnNlbmQoc3RkOjpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKKyAgICBlbnN1cmVTdG9yYWdlUHJv
Y2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUobnVsbHB0cik7CisgICAgbV9zdG9yYWdlUHJvY2Vzcy0+
c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIDApOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
MzE2ODM4NDc0ODUyMWIxNDRhMTQyMzRjNTFiYTg2YTZkZGU5YjBhYy4uNzA4NWNlOTI0MDZhNjZi
YjE1NDRhOWEzMGE5NDYwMTZiZTMyNzczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01NzMsOSArNTczLDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eToKICAgICBtX3Byb2Nlc3NQb29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV1RG
TW92ZShyZXBseSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVw
bHkpCiB7Ci0gICAgbV9wcm9jZXNzUG9vbC0+Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihX
VEZNb3ZlKHJlcGx5KSk7CisgICAgbV9wcm9jZXNzUG9vbC0+Z2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGFmZWJmM2Y5N2JjOTk2
NDYxM2NlZmFlMDQ0ZGI1NDI2MGU0YWMxYy4uMWVlNDhmN2NiMmRhOGViMzc1MmJjMDA3OGM1MzU1
NGMwYWI5NmUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
QEAgLTIxNCw3ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24odWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7
CiAjZW5kaWYKICAgICB2b2lkIGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+JiYpOwotICAgIHZvaWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHk+JiYpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggMWZmNzY1NzFlZmIwOGFhNDE4MTBhMmYyNTZlZjkwYzYyYzA0MTc5
My4uYWQ2OWM1MmY0MDBjODY1ZjNhNDllYmYwZmZkYmQyYzUyZWRlYzI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MzcsNyArMzcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NU
b2tlbikgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlLCBib29sIHN1cHBvcnRz
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKICNlbmRpZgogICAgIEdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpIC0+IChJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRs
ZSkgRGVsYXllZAotICAgIEdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpB
dHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5ZWQKKyAgICBHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5
ZWQKICAgICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogICAgIERpZENhbmNlbFByb2Nlc3NTdXNw
ZW5zaW9uKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAzMDBiNWJmZTZlODFjMTFkMWFkOGQ3OTMy
ZmY4YzMxM2Y1NDlkOTFjLi45MWMwM2U2MGQ4YjI2NDMxYmQxODFhODJiOGYxY2Y5M2NkZTFkZmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNDMzLDEwICs0MzMsMTAgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRh
VHlwZXMsIE8KIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJ
bmRleGVkREJEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgcHJvY2Vzc1Bv
b2wtPmVuc3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7CisgICAg
ICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0
b3JlKHRoaXMpOwogCiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdD
YWxsYmFjaygpOwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2VzcygpLT5m
ZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0
b3IsIHByb2Nlc3NQb29sXShXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgeworICAgICAgICAgICAg
cHJvY2Vzc1Bvb2wtPnN0b3JhZ2VQcm9jZXNzKCktPmZldGNoV2Vic2l0ZURhdGEobV9zZXNzaW9u
SUQsIGRhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdKFdlYnNpdGVE
YXRhIHdlYnNpdGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5y
ZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KQEAgLTcyNywxMCArNzI3LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6
Y2hyCiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhl
ZERCRGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5l
bnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKHRoaXMpOworICAgICAgICAg
ICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0
aGlzKTsKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJh
Y2soKTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZGVsZXRl
V2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgW2NhbGxi
YWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5z
dG9yYWdlUHJvY2VzcygpLT5kZWxldGVXZWJzaXRlRGF0YShtX3Nlc3Npb25JRCwgZGF0YVR5cGVz
LCBtb2RpZmllZFNpbmNlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNzUG9vbF0gewogICAg
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtMTAwNCwxMCArMTAwNCwxMCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBjb25zdCBWZQogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAg
ICBwcm9jZXNzUG9vbC0+ZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0
aGlzKTsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdl
YnNpdGVEYXRhU3RvcmUodGhpcyk7CiAKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZGF0YWJhc2VQ
cm9jZXNzKCktPmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhtX3Nlc3Npb25JRCwgZGF0YVR5
cGVzLCBvcmlnaW5zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNzUG9vbF0geworICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPnN0b3JhZ2VQcm9jZXNzKCktPmRlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyhtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBbY2FsbGJhY2tBZ2dyZWdh
dG9yLCBwcm9jZXNzUG9vbF0gewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAt
MTMxNSw3ICsxMzE1LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW8KICAgICAgICAgcHJvY2Vz
c1Bvb2wtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHRydWUpOwogfQogCi1TdG9y
YWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpkYXRhYmFzZVBy
b2Nlc3NQYXJhbWV0ZXJzKCkKK1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmU6OnN0b3JhZ2VQcm9jZXNzUGFyYW1ldGVycygpCiB7CiAgICAgcmVzb2x2ZURp
cmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGI1NDkyMmNlMjk4ZDNm
MGI2M2UyOTU2NjJiNTg4YjI4NDAzMjNlYTYuLjQyOTc0MDcwNzlhNzViNWE3ZWFiZWQ3NTdjZjJk
OTg0NGIxNmZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0Fzc29jaWF0ZWRQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbCYpIGNvbnN0Owog
CiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycygpOwotICAgIFN0b3Jh
Z2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIGRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMoKTsK
KyAgICBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBzdG9yYWdlUHJvY2Vzc1BhcmFt
ZXRlcnMoKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHBlbmRpbmdDb29raWVzKCkg
Y29uc3Q7CiAgICAgdm9pZCBhZGRQZW5kaW5nQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXgg
NTRjMmQyODkxMDUxZjAzMjIyNjlkNTVhZTRmNGM1MDM1NWRjMzNmMS4uNGQ3NmZiYjQzZTBjZGFk
OTJiOGQ3ZWYyMjg1MTQ4MTQ4NTJjZTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6fldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiAKIElQQzo6Q29ubmVjdGlvbiog
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpCiB7Ci0g
ICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpOwogfQog
CiBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpjb3JlQ29ubmVjdGlvblRvU2VydmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyLmgKaW5kZXggZDE2M2MwOTBiZmVjZjIwMjEzYTA4NWJjY2I3ZjllZTUw
ODFjYjYwMy4uYzc5ZTA0MWQ0ZjE4YTMyMDhhZDFhZjI4MTgxOGYxNTQzZDQ4ZWYzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTc5LDcgKzc5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsg
UmVmQ291bnRlZDxXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI+OjpkZXJlZigpOyB9CiAKLSAgICAv
LyBNZXNzYWdlcyByZWNlaXZlZCBmcm9tIERhdGFiYXNlUHJvY2VzcworICAgIC8vIE1lc3NhZ2Vz
IHJlY2VpdmVkIGZyb20gU3RvcmFnZVByb2Nlc3MKICAgICB2b2lkIGRpZERlbGV0ZURhdGFiYXNl
KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZE9wZW5EYXRhYmFz
ZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRBYm9ydFRyYW5z
YWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAK
aW5kZXggNWNmN2ZkMmIzMjU4MTMxOTA1OTYzMjU2NjYzNjI1Mjc1YjMxOGNhNi4uMmI4N2JhZjk0
ZTdiZDI1MWMwNjIwNDBhODcxY2UyMjNiOWJmYmRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCkBA
IC03OSw4ICs3OSw4IEBAIFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVy
JiBXZWJEYXRhYmFzZVByb3ZpZGVyOjppZGJDb25uZWN0aW9uVG9TCiAgICAgICAgIHJldHVybiBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5jb25uZWN0aW9uVG9TZXJ2ZXIoKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uKCkpOwotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb0RhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbihz
ZXNzaW9uSUQpLmNvcmVDb25uZWN0aW9uVG9TZXJ2ZXIoKTsKKyAgICBBU1NFUlQoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CisgICAgcmV0
dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KCktPmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jb3JlQ29ubmVj
dGlvblRvU2VydmVyKCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDAwMTIxODUzZWZkMzI4YTllNTNmMmFmZTgzYzM3NjYxYzljNTJlY2QuLjZi
MjdkNzgxZDJkMTliZTI0YjQ3NDAzY2U0YmJkNjhmMWZlYTE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM1LDE3ICszNSwxNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbjo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK1dlYlRvU3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAq
dGhpcykpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCk7CiB9CiAKLVdlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbjo6fldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6fldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KCkKIHsKIH0KIAotdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQordm9pZCBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewpAQCAtNTksNyArNTksNyBAQCB2b2lkIFdlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQor
dm9pZCBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGZv
ciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViSURCQ29ubmVjdGlvbnNCeUlkZW50aWZpZXIudmFs
dWVzKCkpCkBAIC02OSwxNSArNjksMTUgQEAgdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICBtX3dlYklE
QkNvbm5lY3Rpb25zQnlTZXNzaW9uLmNsZWFyKCk7CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCh0aGlzKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bkNsb3NlZCh0aGlzKTsKIH0KIAotdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSkKK3ZvaWQgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKIHsKIH0KIAog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBX
ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNl
c3Npb24oY29uc3QgU2Vzc2lvbklEJiBzZXNzaW9uSUQpCitXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXImIFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJG
b3JTZXNzaW9uKGNvbnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQogewogICAgIGF1dG8gcmVzdWx0
ID0gbV93ZWJJREJDb25uZWN0aW9uc0J5U2Vzc2lvbi5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsK
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bi5oCmluZGV4IDBmMWNhOTI0YWZmMjY5N2U5Mzk3ZDZhOGIyNjlmODM2NTBmNjAxNmUuLjI0MjZl
NmNhZmIyMGYzNWIyNTc0Y2YyNzhjYjg1ODA5NWY2YThhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24uaApAQCAtMzgsMTMgKzM4LDEzIEBAIGNsYXNzIFNlc3Npb25JRDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbj4sIHB1Ymxp
YyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7Citj
bGFzcyBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xp
ZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFdlYlRvU3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiAgICAgfQotICAgIH5XZWJUb0RhdGFiYXNlUHJv
Y2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICB+V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
ICAgICAKICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5l
Y3Rpb24uZ2V0KCk7IH0KIApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJp
dmF0ZToKLSAgICBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKKyAgICBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IGQwMTMwZmRjMzg3MTZjYmM5MDMyOTg5MTljNzE3Y2E3MDUwN2MzNDkuLmQ0MDBhNzE5MzRiY2Jm
YjYxZGJkNWU3YmI0M2U3ZTE2ZTFlOTVmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTExMzYsMzEgKzExMzYsMzAgQEAgV2ViTG9hZGVyU3RyYXRlZ3kmIFdl
YlByb2Nlc3M6OndlYkxvYWRlclN0cmF0ZWd5KCkKICAgICByZXR1cm4gbV93ZWJMb2FkZXJTdHJh
dGVneTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjp3ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKiBjb25uZWN0aW9uKQordm9p
ZCBXZWJQcm9jZXNzOjp3ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjdGlvbikKIHsKLSAgICBBU1NFUlQobV93ZWJU
b0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgIEFTU0VSVChtX3dlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbiA9PSBjb25uZWN0aW9uKTsKKyAgICBBU1NFUlQobV93ZWJUb1N0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbik7CisgICAgQVNTRVJUKG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24gPT0gY29ubmVjdGlvbik7CiAKLSAgICBtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbiA9IG51bGxwdHI7CisgICAgbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbiA9
IG51bGxwdHI7CiB9CiAKLVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiogV2ViUHJvY2Vz
czo6d2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCkKK1dlYlRvU3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKiBXZWJQcm9jZXNzOjp3ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiB7
Ci0gICAgaWYgKCFtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbikKLSAgICAgICAgZW5z
dXJlV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgaWYgKCFtX3dlYlRvU3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICBlbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbigpOwogCi0gICAgcmV0dXJuIG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uLmdldCgpOworICAgIHJldHVybiBtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmdl
dCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbigpCit2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVdlYlRvU3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uKCkKIHsKLSAgICBpZiAobV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pCisg
ICAgaWYgKG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
IAogICAgIElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXI7CiAKLSAg
ICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKSwKLSAgICAgICAgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6UmVw
bHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRT
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZp
ZXIpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CkBAIC0xMTcyLDcgKzExNzEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVdlYlRvRGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbigpCiAjZW5kaWYKICAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjpp
ZGVudGlmaWVySXNOdWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uID0gV2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIG1fd2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRF
bmhhbmNlZEFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggNjBkM2VkNDBhYmNhNmZmMmFkNDNhMTI0YmU5YjMxZGRkNTk5OGQzMS4u
ZTBiZjg2YTYzMmRmNzhkZjVjZmQ3Y2EzZGRkZDM2YTRjOTFjNTEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIFdlYkxvYWRlclN0
cmF0ZWd5OwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogY2xhc3Mg
V2ViUHJvY2Vzc1N1cHBsZW1lbnQ7Ci1jbGFzcyBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b247CitjbGFzcyBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjsKIGVudW0gY2xhc3MgV2Vi
c2l0ZURhdGFUeXBlOwogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3Qg
V2ViUGFnZUdyb3VwRGF0YTsKQEAgLTE2NCw4ICsxNjQsOCBAQCBwdWJsaWM6CiAgICAgTGliV2Vi
UlRDTmV0d29yayYgbGliV2ViUlRDTmV0d29yaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb24qKTsKLSAgICBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIHdlYlRvRGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb25DbG9zZWQoV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKKyAgICBXZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbiogd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
IAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAKQEAgLTM4Myw4ICszODMsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk+IG1fYXV0b21hdGlvblNlc3Npb25Qcm94eTsKIAotICAgIHZvaWQgZW5zdXJlV2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgUmVmUHRyPFdlYlRvRGF0YWJhc2VQcm9jZXNz
Q29ubmVjdGlvbj4gbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgdm9pZCBl
bnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxXZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbj4gbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjsK
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFJlZlB0cjxQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI+IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316582</attachid>
            <date>2017-07-27 17:11:38 -0700</date>
            <delta_ts>2017-07-27 17:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174880-20170727171138.patch</filename>
            <type>text/plain</type>
            <size>67764</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1NzZlYmJiMDExYmFmMGY3
OGQzYjFiMzUyZThhZDRiNjc0YmZiZWIuLmE2MTdhYmRiYTEwYzZhODQxZDI2Y2RhYWU4NWZkYTg3
Mjg3NzEzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUzIEBACiAyMDE3LTA3LTI3ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXJ0IDIgb2Y6IFJlbmFtZSBE
YXRhYmFzZVByb2Nlc3MgdG8gU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmR5IEVzdGVzLgorCisgICAgICAgIFJlbmFtZSBzb21lIG1vcmUgdmFyaWFibGVzLCBjbGFzc2Vz
LCBldGMuIHRvIHJlZmxlY3QgdGhlIGNoYW5nZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToK
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQ
cm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkZ3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVBy
b2Nlc3NGb3JCbG9icyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoT2ZTdG9yYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRo
T2ZEYXRhYmFzZVByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC93cGUvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoV1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhP
ZlN0b3JhZ2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZkRhdGFi
YXNlUHJvY2Vzcyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZCk6CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpp
bml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzOjpwb3N0U3RvcmFnZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6
cGVyZm9ybU5leHRTdG9yYWdlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZSk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdL
Q29udGV4dEdldERhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc10pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9z
dG9yYWdlUHJvY2Vzc0lkZW50aWZpZXJdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfdGVy
bWluYXRlRGF0YWJhc2VQcm9jZXNzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX2RhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXJ2aWNlTmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgor
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9i
cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0TGF1
bmNoT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNz
UHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6
ZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dENsaWVudDo6c3RvcmFnZVByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRDbGllbnQ6OmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3Vy
ZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VBZGRlZFRvUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU3RvcmFnZVByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0
ZURhdGFTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpn
ZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVEYXRhYmFz
ZVByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvU3RvcmFnZVByb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkpOiBEZWxldGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFyYW1ldGVycyk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRGF0YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbik6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6fldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpX
ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uOjpjb25uZWN0aW9uKTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRv
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3Nl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKKzIwMTctMDctMjcgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIFBhcnQgMSBvZjogUmVuYW1lIERhdGFiYXNl
UHJvY2VzcyB0byBTdG9yYWdlUHJvY2Vzcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NDg3OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDM0OWJjNDdlZmEyMzZkZWU1M2M4YzcxZWEyM2JlNzQzYzFhNTUwNzkuLjVmODI5OTJhZjdk
NTYxYzhmZDdjNzY4NGY3MGQxZDZlMjViOTUwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmkKICAgICAgICAg
Zm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZv
a2VGaWxlQWNjZXNzKCk7CiAKLSAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGZpbGVOYW1lcywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRl
bnRpZmllciwgZmlsZU5hbWVzXSgpIHsKKyAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoZmlsZU5h
bWVzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyLCBmaWxlTmFtZXNdKCkgewogICAgICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODBhNGU1MTQxNWEz
MWI3ZDQ3OTgyMTUzMGNiM2VlNmMzOThhYmQ0Yi4uOTA2YzQ4ZTkwMDJlYTg1ODc1NDUwYzEzYzI1
Mzg5MTA2YzNjZDkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTMwMywxNiArMzAzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgU2Vzc2lvblRyYWNrZXI6
OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdl
UHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGxh
c3RSZXF1ZXN0SUQ7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSArK2xhc3RSZXF1ZXN0SUQ7
CiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnMuc2V0KHJl
cXVlc3RJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHJlcXVlc3RJRCwgZmlsZW5h
bWVzKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nl
c3NGb3JCbG9icyhyZXF1ZXN0SUQsIGZpbGVuYW1lcyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9i
cyh1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRncmFudFNhbmRi
b3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkK
IHsKICAgICBpZiAoYXV0byBoYW5kbGVyID0gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21w
bGV0aW9uSGFuZGxlcnMudGFrZShyZXF1ZXN0SUQpKQogICAgICAgICBoYW5kbGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmQyMTg4
YmI0ZWMwYjdhYTg1MWUzZGJmOWJhODBlZDI3ODVjOTI3OS4uNzg5M2M2OGFlMzUxYjU2N2Y4YjVk
ZWUwYjk4MDRlZGU2ZjM3NmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYm
KTsKIAotICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9y
QmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9T
dG9yYWdlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91
bGRDbGVhckZpcnN0KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCk7CiAgICAgdm9pZCBzeW5j
QWxsQ29va2llcygpOwogCi0gICAgdm9pZCBkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkZ3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1
ZXN0SUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMGNlNjRiODM1MDEwNmZiOGJmNWQ5ZDY0MjhhNTc3MmU4
ZDM5ZWNjLi4zNmU0Nzc3ODlmMjkyMzM2ZTg0MzA4NWExYmU0MjMyMTBkZWE4ZGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTgwLDcgKzgwLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFByb2Nlc3NE
aWRSZXN1bWUoKQogCi0gICAgRGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9j
ZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKQorICAgIERpZEdyYW50U2FuZGJveEV4dGVu
c2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKQogCiAjaWYg
SEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgVXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3RvcjxTdHJpbmc+IGRvbWFp
bnNUb1JlbW92ZSwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFy
Rmlyc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGguaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCmlu
ZGV4IGE1OGE5MDc2MDdmOWZmMWJjZDEwYmM2MmVmZmFkYWEzODg2NGNmNjUuLmI1MTU5ZmJiNTY3
ZDAyZTc2ZjQ5NjczMjgwOWQ0Y2YyZGM4ZjBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCkBAIC0zMiw2ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCk7CiBTdHJpbmcgZXhlY3V0
YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKTsKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29y
a1Byb2Nlc3MoKTsKLVN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CitT
dHJpbmcgZXhlY3V0YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNzKCk7CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKaW5k
ZXggZjM4ZTFjZTQyOTllZGEzMGIwNGJmNmNlMjI5YmQwYjNjODRhNTU0OS4uOGIzODMzMzgwOGI1
NWFkNmZmNjliMjc4ZTQ4NzY5ZmJkOTA0MDY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKQEAgLTg0LDkgKzg0LDkg
QEAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiAgICAgcmV0dXJuIGZp
bmRXZWJLaXRQcm9jZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQogCi1TdHJpbmcgZXhl
Y3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJvY2VzcygpCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZlN0
b3JhZ2VQcm9jZXNzKCkKIHsKLSAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldlYktpdERh
dGFiYXNlUHJvY2VzcyIpOworICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2VzcygiV2ViS2l0U3Rv
cmFnZVByb2Nlc3MiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCmluZGV4
IDllZjQ2MjliMjVkYmZmYjhlOGRiN2UxZjVkZWQ1MTVmYjA3ZDlmNDYuLjIyZDQ1Y2JiYmVmYTRh
MjQxNDM5NmNlNWQ1MTZmNjM2ZTFhOWMyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCkBAIC03Nyw5ICs3Nyw5IEBA
IFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKQogICAgIHJldHVybiBmaW5k
V2ViS2l0UHJvY2VzcygiV1BFTmV0d29ya1Byb2Nlc3MiKTsKIH0KIAotU3RyaW5nIGV4ZWN1dGFi
bGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MoKQorU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdl
UHJvY2VzcygpCiB7Ci0gICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXUEVEYXRhYmFzZVBy
b2Nlc3MiKTsKKyAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldQRVN0b3JhZ2VQcm9jZXNz
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKaW5kZXggMzg5MDVjMTMxOWI3Y2RjNDlmZDViZWExMmRjN2ZhOWViMTQxMWJk
Ny4uZGZlYzBmYzMwZjAyMWQ1ZDVmZDg5ZGUyOWVjOTZlNGExYWFiNmQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0LCBjb25zdCBJREIKICAgICAgICAgJiYgb3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZSkK
ICAgICAgICAgJiYgb3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvcikpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9jZXNzIGlzIGNvcnJ1
cHQuCi0gICAgICAgIC8vIFRoZSBEYXRhYmFzZVByb2Nlc3Mgc2hvdWxkIHJldHVybiBlYXJseSBh
dCB0aGlzIHBvaW50LCBidXQgY2FuIHdlIGFsc28ga2lsbCB0aGUgYmFkIFdlYlByb2Nlc3M/Cisg
ICAgICAgIC8vIFRoZSBTdG9yYWdlUHJvY2VzcyBzaG91bGQgcmV0dXJuIGVhcmx5IGF0IHRoaXMg
cG9pbnQsIGJ1dCBjYW4gd2UgYWxzbyBraWxsIHRoZSBiYWQgV2ViUHJvY2Vzcz8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcAppbmRleCBmNGQ5NGJjZDM1MWFjZDIyNjI4ZDY2NTAxOTk5NGEzYjllNDM4
NTZmLi4xY2M3YTZiZDQwZTM0ZjIwYjk1NWUwZTU0YzFkYjY2ZTNkMjM2YmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3Jl
KGNvbnN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3Rz
LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSkpOworICAgIHBvc3RTdG9yYWdl
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTdG9yYWdlUHJvY2Vzczo6ZW5zdXJl
UGF0aEV4aXN0cywgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpKTsKICNlbmRp
ZgogfQogCkBAIC0xMzMsMzkgKzEzMywzOSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQ
YXRoRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gbWFrZSBhbGwgZGlyZWN0b3JpZXMgZm9yIHBhdGggJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJl
YWRUYXNrJiYgdGFzaykKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RTdG9yYWdlVGFzayhDcm9z
c1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N0b3JhZ2VUYXNrTXV0ZXgpOwogCi0gICAgbV9kYXRhYmFzZVRhc2tzLmFw
cGVuZChXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3N0b3JhZ2VUYXNrcy5hcHBlbmQoV1RGTW92ZSh0
YXNrKSk7CiAKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBwZXJmb3Jt
TmV4dERhdGFiYXNlVGFzaygpOworICAgICAgICBwZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VUYXNr
KCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0U3RvcmFnZVRhc2soKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgQ3Jvc3NUaHJlYWRUYXNrIHRhc2s7
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsK
LSAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKTsKLSAgICAgICAgdGFz
ayA9IG1fZGF0YWJhc2VUYXNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zdG9yYWdlVGFza011dGV4KTsKKyAgICAgICAgQVNTRVJUKCFtX3N0b3JhZ2VUYXNrcy5p
c0VtcHR5KCkpOworICAgICAgICB0YXNrID0gbV9zdG9yYWdlVGFza3MudGFrZUZpcnN0KCk7CiAg
ICAgfQogCiAgICAgdGFzay5wZXJmb3JtVGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2Nr
ZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKICAg
ICBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpKTsKLSAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpE
aWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50KHNv
Y2tldFBhaXIuY2xpZW50KSksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudChzb2NrZXRQYWlyLmNsaWVudCkpLCAwKTsK
ICNlbGlmIE9TKERBUldJTikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgogICAg
IG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTdG9y
YWdlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBt
X2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3Rlbmlu
Z1BvcnQpKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0
LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWRDcmVh
dGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7CiAjZWxzZQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
aWNrIHRoZSByaWdodCBkYXRhYmFzZSBzdG9yZSBiYXNlZCBvbiB0aGUgc2Vzc2lvbiBJRC4KLSAg
ICAgICAgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhdGggPSBXVEZNb3ZlKHBhdGgp
XSgpIG11dGFibGUgeworICAgICAgICBwb3N0U3RvcmFnZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYXRo
ID0gV1RGTW92ZShwYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0gewogICAg
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggYTY3YzQzZWU4
NTI3YWJlYTgwZjQ3OGZmZGExZGM4YjMzMGFiMDczMC4uM2JjNzJlMjA2YTIxYzIyMDM1Mzk4NTU3
ZTBmZTcwYTlkZTI2NDRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXb3JrUXVldWUm
IHF1ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCi0gICAgdm9pZCBwb3N0RGF0YWJh
c2VUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKKyAgICB2b2lkIHBvc3RTdG9yYWdlVGFzayhDcm9z
c1RocmVhZFRhc2smJik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAvLyBX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZUZpbGVIYW5kbGVyCkBAIC05MCw3ICs5
MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0
aWFsaXplV2Vic2l0ZURhdGFTdG9yZShjb25zdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpOwotICAgIHZvaWQgY3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCk7
CisgICAgdm9pZCBjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAg
dm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC0xMDUs
NyArMTA1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gRm9yIGV4ZWN1dGlvbiBvbiB3
b3JrIHF1ZXVlIHRocmVhZCBvbmx5Ci0gICAgdm9pZCBwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygp
OworICAgIHZvaWQgcGVyZm9ybU5leHRTdG9yYWdlVGFzaygpOwogICAgIHZvaWQgZW5zdXJlUGF0
aEV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+PiBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnM7CkBA
IC0xMTksOCArMTE5LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+PiBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYmKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhh
bmRsZXJzOwogCi0gICAgRGVxdWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlVGFza3M7Ci0g
ICAgTG9jayBtX2RhdGFiYXNlVGFza011dGV4OworICAgIERlcXVlPENyb3NzVGhyZWFkVGFzaz4g
bV9zdG9yYWdlVGFza3M7CisgICAgTG9jayBtX3N0b3JhZ2VUYXNrTXV0ZXg7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDA1NTg3Mzc1NGJlNjY1NDYwM2Mx
MmJkYjc1NTkyNWYzNjE1OTcwMTcuLjRiZGVjNzNlNjRmMWFjZmUwNjU0NzdmMTRhNmVmYTBhMDBl
MDgyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBTdG9y
YWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3Rv
cmUoc3RydWN0IFdlYktpdDo6U3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNv
bW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVEYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oKQorICAgIENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
KCkKIAogICAgIEZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURh
dGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9tYWMvU3RvcmFnZVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vzc01hYy5tbQppbmRleCBkNmFmMTY5Y2Y1N2U0NThj
MzlkMTk0NTM2MDAwOTZmNTdiMGE3NTAxLi5jMDM4ODYwZjhmMTQzYzBkY2ZmYzkzYTUyNzY2ZDYz
NDU0NzQxZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21hYy9T
dG9yYWdlUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21h
Yy9TdG9yYWdlUHJvY2Vzc01hYy5tbQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcgogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewot
ICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpXRUJfVUlfU1RSSU5HKCIlQCBEYXRhYmFzZSBTdG9yYWdlIiwgInZpc2libGUgbmFtZSBvZiB0
aGUgZGF0YWJhc2UgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1l
LiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOworICAgIE5TU3RyaW5n
ICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RS
SU5HKCIlQCBTdG9yYWdlIiwgInZpc2libGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBwcm9jZXNzLiBU
aGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFt
ZXRlcnMudWlQcm9jZXNzTmFtZV07CiAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChD
RlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBhNTAxOWIyNTIzNjQ2NGNkNDExNWJhZDA3ZjYw
Y2FmMDg1OTFjZmMwLi5kYjQ3MDRhMDdjYjI2YjkzN2FmYWViYjg5YWMyNzk0YThiZmI2NTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTU5MCw1
ICs1OTAsNSBAQCBwaWRfdCBXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYpCiAKIHBpZF90IFdLQ29udGV4dEdldERhdGFiYXNlUHJvY2Vz
c0lkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1w
bChjb250ZXh0UmVmKS0+ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcigpOworICAgIHJldHVybiB0
b0ltcGwoY29udGV4dFJlZiktPnN0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcigpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRl
eCAyNTBmNzE2YzBjNjhiODBmNTgwNDYxNDczNGY3MmRkNThkYTZlODhlLi4wNzc5YTIwZWM4MTMy
ZWZlYjRlNDVmMDkzMDE2Zjk0OTAwOTI5MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzg1LDkgKzM4NSw5IEBAIC0g
KHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lvbiAqKWF1dG9t
YXRpb25TZXNzaW9uCiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRv
bWF0aW9uU2Vzc2lvbiA/IGF1dG9tYXRpb25TZXNzaW9uLT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxw
dHIpOwogfQogCi0tICh2b2lkKV90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MKKy0gKHZvaWQpX3Rl
cm1pbmF0ZVN0b3JhZ2VQcm9jZXNzCiB7Ci0gICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVEYXRh
YmFzZVByb2Nlc3MoKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNz
KCk7CiB9CiAKIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzCkBAIC00MDAsOSArNDAw
LDkgQEAgLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllcgogICAgIHJldHVybiBfcHJv
Y2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwogfQogCi0tIChwaWRfdClfZGF0
YWJhc2VQcm9jZXNzSWRlbnRpZmllcgorLSAocGlkX3QpX3N0b3JhZ2VQcm9jZXNzSWRlbnRpZmll
cgogewotICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIo
KTsKKyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIoKTsK
IH0KIAogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApp
bmRleCAxYTZjNmNjMTAzMGI0ZDNlMDA5OWFjNTk3YzlmMWU0ZWNiNDcxOTRmLi5kYTMxOTY5ZTEz
YTYyMzcyMmVkZGRiOTdiOTU4MDBlMTQ1NjhjNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNzIs
MTIgKzcyLDEyIEBACiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hdGlv
blNlc3Npb24gKilhdXRvbWF0aW9uU2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdo
aWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KLS0gKHZvaWQpX3Rlcm1p
bmF0ZURhdGFiYXNlUHJvY2VzczsKKy0gKHZvaWQpX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzOwog
LSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBp
ZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tIChwaWRfdClfZGF0YWJhc2VQcm9jZXNzSWRl
bnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHBpZF90KV9zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4K
IC0gKHNpemVfdClfd2ViUHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hp
bGRQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZlZjc2ODA1YTE5Y2QxZjM1ZjBjMzIyNWZiMDdiZTEy
NzhjY2QzOTguLmE2ZTRkOGFmYjQ3YmNkYTgxY2E3NmIyZGU5MTYxN2RlNzlhNDk0NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAKQEAgLTcwLDgg
KzcwLDggQEAgdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNz
TGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE8KICAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CiAgICAgICAgIHZhcm5hbWUgPSAiTkVUV09SS19QUk9D
RVNTX0NNRF9QUkVGSVgiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOgotICAgICAgICB2YXJuYW1lID0gIkRBVEFCQVNFX1BS
T0NFU1NfQ01EX1BSRUZJWCI7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBl
OjpTdG9yYWdlOgorICAgICAgICB2YXJuYW1lID0gIlNUT1JBR0VfUFJPQ0VTU19DTURfUFJFRklY
IjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNvbnN0IGNoYXIqIHByb2Nlc3NDbWRQcmVm
aXggPSBnZXRlbnYodmFybmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDhhNTYyNDZhNzcyM2I2NTJkZmJhZTQ0MTZl
Y2QyYjVkNzUxYmFmNGIuLjY3OThmYzlmOWQwZjI5OWQ2ZTY2ZjNlMzU2ZWNjZTk5YmVmMTcwYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUGx1Z2luNjQsCiAjZW5k
aWYKICAgICAgICAgTmV0d29yaywKLSAgICAgICAgRGF0YWJhc2UsCisgICAgICAgIFN0b3JhZ2Us
CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXVuY2hPcHRpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKaW5kZXggNmVkNDk1MDhhM2M1N2VjNWQwNTdmMTgwZGJkNjMxZTRlZTYwZDdmMS4uMjU2YmZm
M2ZhZWJjNjJjODRjNDFmNjkwMjY3NGRlMzkwOTQxMDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6TmV0d29yazoKICAgICAg
ICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRh
YmFzZToKLSAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQ
cm9jZXNzKCk7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpTdG9yYWdl
OgorICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdlUHJvY2Vz
cygpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IDM5MGNmZTk1MjkxNGFhMjY0N2M1YjE1
NjViYTYwODBiNTdjMDU0YmUuLjYwNTdiNGE5NDg4MDA2MDFkZWFhYzhhODYyYzc1ZmRiOTNhMGNh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogc2VydmljZU5hbWUoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpbwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCI7
CiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgogICAgICAg
ICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0gICAgY2FzZSBQcm9jZXNz
TGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZToKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6OlN0b3JhZ2U6CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktp
dC5TdG9yYWdlIjsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBjYXNlIFBy
b2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OlBsdWdpbjMyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd3BlL1Byb2Nlc3NMYXVuY2hlcldQRS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNw
cAppbmRleCA1OTU4YWIwOWEyOTk5YTRkMGEzZTI5YTUwNTg1NzkzMmI4OWYwZjRhLi4yYzYyMzg0
N2QwZjg1NmRjNjFkZjlhY2IwMGRkMzJjNzNkOWM1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNw
cApAQCAtNjcsOCArNjcsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgogICAgICAg
ICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OkRhdGFi
YXNlOgotICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVBy
b2Nlc3MoKTsKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OlN0b3JhZ2U6
CisgICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNz
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGU5YzA3ODVjYjc3ZmUxMTAyYTE4M2E4NzE1N2Uy
YjQ2MzVmYWRmMS4uY2YzOTZmNGIxMGY1NWQ2Yzk4MDg1YTM2ZGQyOGQ3YTgyMmY5NzJjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0yODksMTkgKzI4OSwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5k
Ym94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiB7CiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRl
bnNpb25zOwogICAgIGV4dGVuc2lvbnMuYWxsb2NhdGUocGF0aHMuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIC8vIFJlYWRX
cml0ZSBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcgaGFyZCBsaW5rcyBhcyB3ZWxsIGFzIGRlbGV0
aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSwgd2hpY2ggdGhlIERhdGFiYXNlUHJvY2VzcyB3aWxsIGRv
LgorICAgICAgICAvLyBSZWFkV3JpdGUgaXMgcmVxdWlyZWQgZm9yIGNyZWF0aW5nIGhhcmQgbGlu
a3MgYXMgd2VsbCBhcyBkZWxldGluZyB0aGUgdGVtcG9yYXJ5IGZpbGUsIHdoaWNoIHRoZSBTdG9y
YWdlUHJvY2VzcyB3aWxsIGRvLgogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgZXh0ZW5zaW9uc1tpXSk7
CiAgICAgfQogCi0gICAgbV9wcm9jZXNzUG9vbC5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6R3JhbnRTYW5kYm94RXh0
ZW5zaW9uc0ZvckJsb2JzKHBhdGhzLCBleHRlbnNpb25zKSk7CisgICAgbV9wcm9jZXNzUG9vbC5z
ZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpHcmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMocGF0aHMsIGV4dGVuc2lv
bnMpKTsKICNlbmRpZgotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2Jz
KHJlcXVlc3RJRCksIDApOworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxv
YnMocmVxdWVzdElEKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZTliZGM2M2Q5
OTZiZjliZmRjNDU5MjI2NGExMzg5M2ZmNzUzNzMwMC4uOTIzZGQyYTkwODczMDkyMjk1M2FkYzFj
NzU1MjA4Mzk2ODY1ZDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25z
dCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRocyk7CisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJv
Y2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
dGhzKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9p
ZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1
bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMGM5MDJlZDdhYzBjNjlmY2ZmYzU5MjlmY2M2
YWYzZWQ3YjRmY2VjZS4uMjA4ZDg1ZmFiZTA1NzJjZmQxYmYxYzQxMjZhNWMyMmE1MTgwNDU1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjksNyArMjksNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWREZWxldGVX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgR3JhbnRTYW5kYm94RXh0ZW5z
aW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElELCBWZWN0b3I8
U3RyaW5nPiBwYXRocykKKyAgICBHcmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vz
c0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0cmluZz4gcGF0aHMpCiAKICAg
ICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJv
b2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1ZTc4YzdkMGEzNjY4
MmNmZDUxM2NmMGE3YjNmNTY1ZjJkNDUxODE3Li4yMGQyMGUwZWUzY2YzOTg0ODY1MjVhY2QxYjJj
YmVjZGE0ZDA0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU3RvcmFnZVBy
b2Nlc3NQcm94eTo6flN0b3JhZ2VQcm9jZXNzUHJveHkoKQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNz
UHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNz
TGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZTsKKyAgICBsYXVuY2hPcHRpb25zLnByb2Nl
c3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6U3RvcmFnZTsKICAgICBDaGls
ZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKIH0KIApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgc2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQs
IGRhdGFUeXBlcywgb3JpZ2lucywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFN0b3JhZ2VQ
cm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwogCkBAIC0xMjAsMTIgKzEyMCwx
MiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbigpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCksIDAsIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAog
dm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewot
ICAgIC8vIFRoZSBkYXRhYmFzZSBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwg
c28gc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KKyAgICAvLyBU
aGUgc3RvcmFnZSBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc28gc2VuZCBh
bnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHJlcGx5ID0g
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKQEAgLTE1MCwxOSArMTUw
LDE5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
JikKICAgICAgICAgY2FsbGJhY2soKTsKICAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnNDYWxsYmFja3MuY2xlYXIoKTsKIAotICAgIC8vIFRlbGwgUHJvY2Vzc1Bvb2wgdG8g
Zm9yZ2V0IGFib3V0IHRoaXMgZGF0YWJhc2UgcHJvY2Vzcy4gVGhpcyBtYXkgY2F1c2UgdXMgdG8g
YmUgZGVsZXRlZC4KLSAgICBtX3Byb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3NDcmFzaGVkKHRo
aXMpOworICAgIC8vIFRlbGwgUHJvY2Vzc1Bvb2wgdG8gZm9yZ2V0IGFib3V0IHRoaXMgc3RvcmFn
ZSBwcm9jZXNzLiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgorICAgIG1fcHJvY2Vz
c1Bvb2wtPnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpCiB7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3Jl
YXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYg
Y29ubmVjdGlvbklkZW50aWZpZXIpCit2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0
ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5pc0VtcHR5KCkpOwogCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNp
ZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRl
bnRpZmllcik7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICAg
ICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QZW5kaW5nQ29ubmVjdGlv
blJlcXVlc3RzOyArK2kpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpD
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbigpLCAwKTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQ
cm9jZXNzUHJveHkuaAppbmRleCBiYmNhNzBlMDU1YjkxZDNiZGU0NjY4MTI5NjRhMjcwNjIwZjhi
YmEzLi41YzExMDZkMzY4YjA3OGNmODFlMWEyY2FmYzc1NDExYTIwZTIwNGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShX
ZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgIHZvaWQgZ2V0RGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCiBwcml2YXRlOgogICAg
IFN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKQEAgLTY5LDcgKzY5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc1Byb3h5TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMKLSAgICB2b2lkIGRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBJUEM6OkF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGRpZENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogICAgIHZvaWQgZGlkRmV0Y2hX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwogICAg
IHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bv
b2w7CiAKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7Ci0gICAg
RGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAg
IERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+PiBt
X3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJh
Y2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlMTc2OTMzM2Q2YzA0NGY0
NTUyYTdiYzUxMmFiYjZiNzU0ZTgzM2MuLjJhNzhhNmIxYzcxMzA0ZjIyYmQ2ZDAzM2FhNGU4NzRl
ZTU5ZDdiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7Ci0gICAgRGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
KElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBEaWRDcmVhdGVTdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0
cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdlYnNp
dGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRDbGllbnQuY3BwCmluZGV4IDY0ZGJkZWZhZjBiYTI3MjBkZDdiZWEyZDkzOWI4MTYw
N2U2YWQ5YWYuLjQxYzBjMjU3MjdjYTQ2NjFhZmZmNWJkMWQ2MDhiNjJkNDUzYWRiOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIHZvaWQgV2ViQ29udGV4dENsaWVudDo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXZWJQ
cm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgbV9jbGllbnQubmV0d29ya1Byb2Nlc3NEaWRD
cmFzaCh0b0FQSShwcm9jZXNzUG9vbCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
LXZvaWQgV2ViQ29udGV4dENsaWVudDo6ZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sKQordm9pZCBXZWJDb250ZXh0Q2xpZW50OjpzdG9yYWdlUHJvY2Vz
c0RpZENyYXNoKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmgKaW5kZXggYjI1YzRkM2I5ZDRhOTJlZGUx
NjI2ODBiYWE3NDYxZDc3Y2QyMTVlMC4uMDM4ZjYzYTVjNDA4Y2Q1MzIxODAyNjBkNWFkOGVjNTRh
NGU5YmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaApA
QCAtNDUsNyArNDUsNyBAQCBjbGFzcyBXZWJDb250ZXh0Q2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQ29udGV4dENsaWVudEJhc2U+IHsKIHB1YmxpYzoKICAgICB2b2lkIHBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlc0NoYW5nZWQoV2ViUHJvY2Vzc1Bvb2wqKTsKICAgICB2b2lkIG5ldHdv
cmtQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wqKTsKLSAgICB2b2lkIGRhdGFiYXNlUHJv
Y2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sKik7CisgICAgdm9pZCBzdG9yYWdlUHJvY2Vzc0Rp
ZENyYXNoKFdlYlByb2Nlc3NQb29sKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmMjhmMDk5Nzg2
MTBjNTFkMDAzMGIxOWQ2ZjYyOWMyYWIyNTQ1NjYyLi44M2YzYTY3M2Y3MjRiNmZiOGI5OWIxNWQx
MTYzZmQwNmQwOTQzMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OgogICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKHJl
cGx5KSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2Vzc0Fu
ZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpCiB7CiAgICAgLy8gKioqKioq
KioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0
dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGlu
ZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCiAgICAg
Ly8gKioqKioqKioqCiAKLSAgICBpZiAoIW1fZGF0YWJhc2VQcm9jZXNzKSB7Ci0gICAgICAgIG1f
ZGF0YWJhc2VQcm9jZXNzID0gU3RvcmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOworICAg
IGlmICghbV9zdG9yYWdlUHJvY2VzcykgeworICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzID0gU3Rv
cmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOwogCiAgICAgICAgIFN0b3JhZ2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCkBAIC01MzMsMzIgKzUzMywzMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRh
YmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUqCiAjZW5kaWYK
IAogICAgICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwor
ICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6
SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwogICAgIH0KIAogICAg
IGlmICghcmVsZXZhbnREYXRhU3RvcmUgfHwgcmVsZXZhbnREYXRhU3RvcmUgPT0gJndlYnNpdGVE
YXRhU3RvcmUoKS53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZGF0YWJhc2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6SW5pdGlhbGl6
ZVdlYnNpdGVEYXRhU3RvcmUocmVsZXZhbnREYXRhU3RvcmUtPmRhdGFiYXNlUHJvY2Vzc1BhcmFt
ZXRlcnMoKSksIDApOworICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShyZWxldmFudERhdGFTdG9yZS0+
c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKIHsKLSAgICBlbnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJz
aXRlRGF0YVN0b3JlKG51bGxwdHIpOworICAgIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0
ZURhdGFTdG9yZShudWxscHRyKTsKIAotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5nZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3N0b3JhZ2VQcm9jZXNz
LT5nZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpkYXRhYmFzZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJv
eHkqIGRhdGFiYXNlUHJvY2Vzc1Byb3h5KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVBy
b2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzUHJveHkpCiB7
Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VQcm9jZXNzKTsKLSAgICBBU1NFUlQoZGF0YWJhc2VQcm9j
ZXNzUHJveHkgPT0gbV9kYXRhYmFzZVByb2Nlc3MuZ2V0KCkpOworICAgIEFTU0VSVChtX3N0b3Jh
Z2VQcm9jZXNzKTsKKyAgICBBU1NFUlQoc3RvcmFnZVByb2Nlc3NQcm94eSA9PSBtX3N0b3JhZ2VQ
cm9jZXNzLmdldCgpKTsKIAogICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVu
dHMudmFsdWVzKCkpCi0gICAgICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZShkYXRhYmFz
ZVByb2Nlc3NQcm94eSk7CisgICAgICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZShzdG9y
YWdlUHJvY2Vzc1Byb3h5KTsKIAotICAgIG1fY2xpZW50LmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNo
KHRoaXMpOwotICAgIG1fZGF0YWJhc2VQcm9jZXNzID0gbnVsbHB0cjsKKyAgICBtX2NsaWVudC5z
dG9yYWdlUHJvY2Vzc0RpZENyYXNoKHRoaXMpOworICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBudWxs
cHRyOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93
c2luZygpCkBAIC05NTksOSArOTU5LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVk
VG9Qcm9jZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpLCAwKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQotICAgICAgICBhdXRvIGRhdGFiYXNlUGFyYW1ldGVycyA9IHBhZ2Uud2Vic2l0ZURhdGFT
dG9yZSgpLmRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMoKTsKLSAgICAgICAgaWYgKCFkYXRhYmFz
ZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShkYXRhYmFzZVBhcmFt
ZXRlcnMpKTsKKyAgICAgICAgYXV0byBzdG9yYWdlUGFyYW1ldGVycyA9IHBhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpLnN0b3JhZ2VQcm9jZXNzUGFyYW1ldGVycygpOworICAgICAgICBpZiAoIXN0b3Jh
Z2VQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBzZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShzdG9yYWdlUGFyYW1l
dGVycykpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMTA3MywxMiArMTA3MywxMiBAQCBwaWRfdCBX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCkKICAgICByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KIAotcGlkX3QgV2ViUHJvY2Vz
c1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIoKQorcGlkX3QgV2ViUHJvY2Vzc1Bvb2w6
OnN0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcigpCiB7Ci0gICAgaWYgKCFtX2RhdGFiYXNlUHJvY2Vz
cykKKyAgICBpZiAoIW1fc3RvcmFnZVByb2Nlc3MpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIG1fZGF0YWJhc2VQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOworICAgIHJldHVy
biBtX3N0b3JhZ2VQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGFsd2F5c1Vz
ZUNvbXBsZXhUZXh0KQpAQCAtMTMwMiwxMyArMTMwMiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKSwgMCk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZURhdGFiYXNlUHJvY2VzcygpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcygpCiB7Ci0gICAgaWYg
KCFtX2RhdGFiYXNlUHJvY2VzcykKKyAgICBpZiAoIW1fc3RvcmFnZVByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT50ZXJtaW5hdGUoKTsKLSAgICBtX2Rh
dGFiYXNlUHJvY2VzcyA9IG51bGxwdHI7CisgICAgbV9zdG9yYWdlUHJvY2Vzcy0+dGVybWluYXRl
KCk7CisgICAgbV9zdG9yYWdlUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IGRmOWVlMmEzNmEyMzU5YWNmOWI3Y2Q1ZjU0MmNmMjI5ZjQy
ZDc1MjQuLmQ4Y2E2MzRlMWRhYTJkYzA1NjA3N2I3NzM3NTI2MDk4YzhlODE3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTYwLDggKzE2MCw4IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiB2b2lkIHNlbmRTeW5j
VG9OZXR3b3JraW5nUHJvY2VzcyhUJiYgbWVzc2FnZSwgVSYmIHJlcGx5KTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShUJiYgbWVzc2FnZSk7CiAKLSAgICAvLyBTZW5kcyB0aGUgbWVzc2FnZSB0byBXZWJQ
cm9jZXNzIG9yIERhdGFiYXNlUHJvY2VzcyBhcyBhcHByb3BvcmlhdGUgZm9yIGN1cnJlbnQgcHJv
Y2VzcyBtb2RlbC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0RhdGFiYXNl
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2UpOworICAgIC8vIFNlbmRz
IHRoZSBtZXNzYWdlIHRvIFdlYlByb2Nlc3Mgb3IgU3RvcmFnZVByb2Nlc3MgYXMgYXBwcm9wb3Jp
YXRlIGZvciBjdXJyZW50IHByb2Nlc3MgbW9kZWwuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBzZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoVCYmIG1lc3Nh
Z2UpOwogCiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94
eSopOwogCkBAIC0xOTksNyArMTk5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBwaWRfdCBu
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSAgICBwaWRfdCBkYXRhYmFzZVByb2Nlc3NJZGVu
dGlmaWVyKCk7CisgICAgcGlkX3Qgc3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyKCk7CiAKICAgICB2
b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0
U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sKTsK
IAogICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOwotICAgIHZvaWQgdGVybWluYXRl
RGF0YWJhc2VQcm9jZXNzKCk7CisgICAgdm9pZCB0ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcygpOwog
ICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgc3luY05ldHdv
cmtQcm9jZXNzQ29va2llcygpOwpAQCAtMzEyLDEwICszMTIsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKIAot
ICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7Ci0gICAgU3RvcmFnZVByb2Nlc3NQcm94eSog
ZGF0YWJhc2VQcm9jZXNzKCkgeyByZXR1cm4gbV9kYXRhYmFzZVByb2Nlc3MuZ2V0KCk7IH0KLSAg
ICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7
Ci0gICAgdm9pZCBkYXRhYmFzZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsK
KyAgICB2b2lkIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7CisgICAgU3RvcmFnZVByb2Nlc3NQcm94eSog
c3RvcmFnZVByb2Nlc3MoKSB7IHJldHVybiBtX3N0b3JhZ2VQcm9jZXNzLmdldCgpOyB9CisgICAg
dm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIHN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9yYWdlUHJvY2Vzc1Byb3h5Kik7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBj
b25zdDsKQEAgLTU0OSw3ICs1NDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBib29sIG1fZGlkTmV0d29ya1Byb2Nlc3ND
cmFzaDsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsK
LSAgICBSZWZQdHI8U3RvcmFnZVByb2Nlc3NQcm94eT4gbV9kYXRhYmFzZVByb2Nlc3M7CisgICAg
UmVmUHRyPFN0b3JhZ2VQcm9jZXNzUHJveHk+IG1fc3RvcmFnZVByb2Nlc3M7CiAKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPj4gbV9kaWN0aW9uYXJ5Q2Fs
bGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4+
IG1fc3RhdGlzdGljc1JlcXVlc3RzOwpAQCAtNjI3LDEwICs2MjcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQm
JiBtZXNzYWdlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2Fn
ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKIHsKLSAgICBlbnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRX
ZWJzaXRlRGF0YVN0b3JlKG51bGxwdHIpOwotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5zZW5kKHN0
ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CisgICAgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRX
ZWJzaXRlRGF0YVN0b3JlKG51bGxwdHIpOworICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoc3Rk
Ojpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMxNjgzODQ3
NDg1MjFiMTQ0YTE0MjM0YzUxYmE4NmE2ZGRlOWIwYWMuLjcwODVjZTkyNDA2YTY2YmIxNTQ0YTlh
MzBhOTQ2MDE2YmUzMjc3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNTczLDkgKzU3Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6CiAg
ICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewot
ICAgIG1fcHJvY2Vzc1Bvb2wtPmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShy
ZXBseSkpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihX
VEZNb3ZlKHJlcGx5KSk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDhhZmViZjNmOTdiYzk5NjQ2MTNjZWZh
ZTA0NGRiNTQyNjBlNGFjMWMuLjFlZTQ4ZjdjYjJkYThlYjM3NTJiYzAwNzhjNTM1NTRjMGFiOTZl
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMTQs
NyArMjE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogI2VuZGlm
CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYm
KTsKLSAgICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmKTsKIAogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDFmZjc2NTcxZWZiMDhhYTQxODEwYTJmMjU2ZWY5MGM2MmMwNDE3OTMuLmFkNjlj
NTJmNDAwYzg2NWYzYTQ5ZWJmMGZmZGJkMmM1MmVkZWMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pIC0+
IChJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVkCiAjZW5kaWYKICAgICBHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5
ZWQKLSAgICBHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCisgICAgR2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCiAgICAg
UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkKICAgICBEaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMzAwYjViZmU2ZTgxYzExZDFhZDhkNzkzMmZmOGMzMTNm
NTQ5ZDkxYy4uOTFjMDNlNjBkOGIyNjQzMWJkMTgxYTgyYjhmMWNmOTNjZGUxZGZlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKQEAgLTQzMywxMCArNDMzLDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBP
CiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1
cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKHRoaXMpOworICAgICAgICAgICAg
cHJvY2Vzc1Bvb2wtPmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlz
KTsKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZmV0Y2hXZWJz
aXRlRGF0YShtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9j
ZXNzUG9vbF0oV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT5zdG9yYWdlUHJvY2VzcygpLT5mZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRh
VHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHByb2Nlc3NQb29sXShXZWJzaXRlRGF0YSB3ZWJz
aXRlRGF0YSkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVu
ZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CkBAIC03MjcsMTAgKzcyNywxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogCiAg
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlRGF0
YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlzKTsKKyAgICAgICAgICAgIHByb2Nl
c3NQb29sLT5lbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7CiAK
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0g
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZGF0YWJhc2VQcm9jZXNzKCktPmRlbGV0ZVdlYnNpdGVE
YXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IsIHByb2Nlc3NQb29sXSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c3RvcmFnZVBy
b2Nlc3MoKS0+ZGVsZXRlV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZp
ZWRTaW5jZSwgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKICAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTEwMDQsMTAgKzEwMDQsMTAgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgY29uc3QgVmUKIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPmVuc3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7Cisg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0
YVN0b3JlKHRoaXMpOwogCiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzcygp
LT5kZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3Jp
Z2lucywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKKyAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT5zdG9yYWdlUHJvY2VzcygpLT5kZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
bV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJv
Y2Vzc1Bvb2xdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTEzMTUsNyAr
MTMxNSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvCiAgICAgICAgIHByb2Nlc3NQb29sLT5z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh0cnVlKTsKIH0KIAotU3RvcmFnZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFy
YW1ldGVycygpCitTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpzdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKQogewogICAgIHJlc29sdmVEaXJlY3Rvcmll
c0lmTmVjZXNzYXJ5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBiNTQ5MjJjZTI5OGQzZjBiNjNlMjk1
NjYyYjU4OGIyODQwMzIzZWE2Li40Mjk3NDA3MDc5YTc1YjVhN2VhYmVkNzU3Y2YyZDk4NDRiMTZm
ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmKSBjb25zdDsKIAogICAgIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMoKTsKLSAgICBTdG9yYWdlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyBkYXRhYmFzZVByb2Nlc3NQYXJhbWV0ZXJzKCk7CisgICAgU3Rv
cmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgc3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCk7
CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBwZW5kaW5nQ29va2llcygpIGNvbnN0Owog
ICAgIHZvaWQgYWRkUGVuZGluZ0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDU0YzJkMjg5
MTA1MWYwMzIyMjY5ZDU1YWU0ZjRjNTAzNTVkYzMzZjEuLjRkNzZmYmI0M2UwY2RhZDkyYjhkN2Vm
MjI4NTE0ODE0ODUyY2U0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
On5XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIoKQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQogewotICAgIHJldHVy
biAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKTsKIH0KIAogSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29y
ZUNvbm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5oCmluZGV4IGQxNjNjMDkwYmZlY2YyMDIxM2EwODViY2NiN2Y5ZWU1MDgxY2I2MDMu
LmM3OWUwNDFkNGYxOGEzMjA4YWQxYWYyODE4MThmMTU0M2Q0OGVmMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50
ZWQ8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPjo6ZGVyZWYoKTsgfQogCi0gICAgLy8gTWVzc2Fn
ZXMgcmVjZWl2ZWQgZnJvbSBEYXRhYmFzZVByb2Nlc3MKKyAgICAvLyBNZXNzYWdlcyByZWNlaXZl
ZCBmcm9tIFN0b3JhZ2VQcm9jZXNzCiAgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCmluZGV4IDVj
ZjdmZDJiMzI1ODEzMTkwNTk2MzI1NjY2MzYyNTI3NWIzMThjYTYuLjJiODdiYWY5NGU3YmQyNTFj
MDYyMDQwYTg3MWNlMjIzYjliZmJkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcApAQCAtNzksOCAr
NzksOCBAQCBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViRGF0
YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvUwogICAgICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvU2VydmVyKCk7CiAgICAgfQogCi0gICAgQVNTRVJU
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigp
KTsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKCktPmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklE
KS5jb3JlQ29ubmVjdGlvblRvU2VydmVyKCk7CisgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCkpOworICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5pZGJD
b25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29yZUNvbm5lY3Rpb25Ub1Nl
cnZlcigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCAwMDEyMTg1M2VmZDMyOGE5ZTUzZjJhZmU4M2MzNzY2MWM5YzUyZWNkLi42YjI3ZDc4MWQy
ZDE5YmUyNGI0NzQwM2NlNGJiZDY4ZjFmZWExODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0zNSwxNyArMzUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246
OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQog
ewogICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwogfQogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246On5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKQorV2ViVG9TdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiB9
CiAKLXZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3Zv
aWQgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGkKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLnZhbHVlcygpKQpA
QCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgbV93ZWJJREJDb25uZWN0
aW9uc0J5U2Vzc2lvbi5jbGVhcigpOwogI2VuZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQodGhpcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQo
dGhpcyk7CiB9CiAKLXZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2
b2lkIFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCiB7CiB9CiAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKLVdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKGNv
bnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQorV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lv
bihjb25zdCBTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fd2Vi
SURCQ29ubmVjdGlvbnNCeVNlc3Npb24uYWRkKHNlc3Npb25JRCwgbnVsbHB0cik7CiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCAwZjFjYTkyNGFmZjI2OTdlOTM5N2Q2YThiMjY5ZjgzNjUwZjYwMTZlLi4yNDI2ZTZjYWZiMjBm
MzViMjU3NGNmMjc4Y2I4NTgwOTVmNmE4YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uLmgKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+LCBwdWJsaWMgSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xhc3MgV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJUb1N0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbj4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihjb25u
ZWN0aW9uSWRlbnRpZmllcikpOwogICAgIH0KLSAgICB+V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uKCk7CisgICAgfldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgCiAg
ICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdl
dCgpOyB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CisgICAgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkMDEzMGZk
YzM4NzE2Y2JjOTAzMjk4OTE5YzcxN2NhNzA1MDdjMzQ5Li5kNDAwYTcxOTM0YmNiZmI2MWRiZDVl
N2JiNDNlN2UxNmUxZTk1ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xMTM2LDMxICsxMTM2LDMwIEBAIFdlYkxvYWRlclN0cmF0ZWd5JiBXZWJQcm9jZXNz
Ojp3ZWJMb2FkZXJTdHJhdGVneSgpCiAgICAgcmV0dXJuIG1fd2ViTG9hZGVyU3RyYXRlZ3k7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzczo6d2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2Vk
KFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjdGlvbikKK3ZvaWQgV2ViUHJv
Y2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKG1fd2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICBBU1NFUlQobV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24gPT0gY29ubmVjdGlvbik7CisgICAgQVNTRVJUKG1fd2ViVG9TdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24pOworICAgIEFTU0VSVChtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
ID09IGNvbm5lY3Rpb24pOwogCi0gICAgbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBudWxscHRyOworICAgIG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRy
OwogfQogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIFdlYlByb2Nlc3M6OndlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
biogV2ViUHJvY2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIGlm
ICghbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pCi0gICAgICAgIGVuc3VyZVdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGlmICghbV93ZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbikKKyAgICAgICAgZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKIAotICAgIHJldHVybiBtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5nZXQo
KTsKKyAgICByZXR1cm4gbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24o
KQordm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigp
CiB7Ci0gICAgaWYgKG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmICht
X3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBJ
UEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyOwogCi0gICAgaWYgKCFw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCksCi0gICAgICAgIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQorICAgIGlmICghcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKCksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkp
CiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQpAQCAtMTE3
Miw3ICsxMTcxLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogI2VuZGlmCiAgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmll
cklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3dl
YlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX3dlYlRvU3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uID0gV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShj
b25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRB
Y2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDYwZDNlZDQwYWJjYTZmZjJhZDQzYTEyNGJlOWIzMWRkZDU5OThkMzEuLmUwYmY4NmE2
MzJkZjc4ZGY1Y2ZkN2NhM2RkZGQzNmE0YzkxYzUxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBXZWJMb2FkZXJTdHJhdGVneTsK
IGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdlYlByb2Nl
c3NTdXBwbGVtZW50OwotY2xhc3MgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOworY2xh
c3MgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRh
VHlwZTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlBhZ2VH
cm91cERhdGE7CkBAIC0xNjQsOCArMTY0LDggQEAgcHVibGljOgogICAgIExpYldlYlJUQ05ldHdv
cmsmIGxpYldlYlJUQ05ldHdvcmsoKTsKICNlbmRpZgogCi0gICAgdm9pZCB3ZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKik7
Ci0gICAgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKiB3ZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uQ2xv
c2VkKFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKik7CisgICAgV2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24qIHdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwogCkBAIC0zODMsOCArMzgzLDggQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PiBtX2F1
dG9tYXRpb25TZXNzaW9uUHJveHk7CiAKLSAgICB2b2lkIGVuc3VyZVdlYlRvRGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbigpOwotICAgIFJlZlB0cjxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24+IG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOworICAgIHZvaWQgZW5zdXJlV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8V2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24+IG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb247CiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyPiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316584</attachid>
            <date>2017-07-27 17:16:57 -0700</date>
            <delta_ts>2017-07-27 19:17:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174880-20170727171655.patch</filename>
            <type>text/plain</type>
            <size>67764</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1NzZlYmJiMDExYmFmMGY3
OGQzYjFiMzUyZThhZDRiNjc0YmZiZWIuLmE2MTdhYmRiYTEwYzZhODQxZDI2Y2RhYWU4NWZkYTg3
Mjg3NzEzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUzIEBACiAyMDE3LTA3LTI3ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXJ0IDIgb2Y6IFJlbmFtZSBE
YXRhYmFzZVByb2Nlc3MgdG8gU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmR5IEVzdGVzLgorCisgICAgICAgIFJlbmFtZSBzb21lIG1vcmUgdmFyaWFibGVzLCBjbGFzc2Vz
LCBldGMuIHRvIHJlZmxlY3QgdGhlIGNoYW5nZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToK
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQ
cm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkZ3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVBy
b2Nlc3NGb3JCbG9icyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoT2ZTdG9yYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRo
T2ZEYXRhYmFzZVByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC93cGUvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoV1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhP
ZlN0b3JhZ2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZkRhdGFi
YXNlUHJvY2Vzcyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZCk6CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpp
bml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzOjpwb3N0U3RvcmFnZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6
cGVyZm9ybU5leHRTdG9yYWdlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZSk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdL
Q29udGV4dEdldERhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc10pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9z
dG9yYWdlUHJvY2Vzc0lkZW50aWZpZXJdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfdGVy
bWluYXRlRGF0YWJhc2VQcm9jZXNzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX2RhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXJ2aWNlTmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgor
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9i
cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0TGF1
bmNoT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNz
UHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6
ZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dENsaWVudDo6c3RvcmFnZVByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRDbGllbnQ6OmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3Vy
ZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VBZGRlZFRvUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU3RvcmFnZVByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0
ZURhdGFTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpn
ZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVEYXRhYmFz
ZVByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvU3RvcmFnZVByb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkpOiBEZWxldGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFyYW1ldGVycyk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRGF0YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbik6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6fldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpX
ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uOjpjb25uZWN0aW9uKTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRv
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3Nl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKKzIwMTctMDctMjcgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIFBhcnQgMSBvZjogUmVuYW1lIERhdGFiYXNl
UHJvY2VzcyB0byBTdG9yYWdlUHJvY2Vzcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NDg3OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDM0OWJjNDdlZmEyMzZkZWU1M2M4YzcxZWEyM2JlNzQzYzFhNTUwNzkuLjVmODI5OTJhZjdk
NTYxYzhmZDdjNzY4NGY3MGQxZDZlMjViOTUwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmkKICAgICAgICAg
Zm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZv
a2VGaWxlQWNjZXNzKCk7CiAKLSAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGZpbGVOYW1lcywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRl
bnRpZmllciwgZmlsZU5hbWVzXSgpIHsKKyAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoZmlsZU5h
bWVzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyLCBmaWxlTmFtZXNdKCkgewogICAgICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODBhNGU1MTQxNWEz
MWI3ZDQ3OTgyMTUzMGNiM2VlNmMzOThhYmQ0Yi4uOGEwNjFjZDcyMjk4MzBhYTg0OGM5MTg2YThl
MTlhY2ViMjgxNDExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTMwMywxNiArMzAzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgU2Vzc2lvblRyYWNrZXI6
OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdl
UHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGxh
c3RSZXF1ZXN0SUQ7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSArK2xhc3RSZXF1ZXN0SUQ7
CiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnMuc2V0KHJl
cXVlc3RJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHJlcXVlc3RJRCwgZmlsZW5h
bWVzKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nl
c3NGb3JCbG9icyhyZXF1ZXN0SUQsIGZpbGVuYW1lcyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9i
cyh1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRi
b3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkK
IHsKICAgICBpZiAoYXV0byBoYW5kbGVyID0gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21w
bGV0aW9uSGFuZGxlcnMudGFrZShyZXF1ZXN0SUQpKQogICAgICAgICBoYW5kbGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmQyMTg4
YmI0ZWMwYjdhYTg1MWUzZGJmOWJhODBlZDI3ODVjOTI3OS4uNjc0NmJlOTE0OTQxYmQxOWIyNDY3
M2E4MGZjNWM5YjM3ZjNkOTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYm
KTsKIAotICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9y
QmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9T
dG9yYWdlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91
bGRDbGVhckZpcnN0KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCk7CiAgICAgdm9pZCBzeW5j
QWxsQ29va2llcygpOwogCi0gICAgdm9pZCBkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkR3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1
ZXN0SUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMGNlNjRiODM1MDEwNmZiOGJmNWQ5ZDY0MjhhNTc3MmU4
ZDM5ZWNjLi4zNmU0Nzc3ODlmMjkyMzM2ZTg0MzA4NWExYmU0MjMyMTBkZWE4ZGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTgwLDcgKzgwLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFByb2Nlc3NE
aWRSZXN1bWUoKQogCi0gICAgRGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9j
ZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKQorICAgIERpZEdyYW50U2FuZGJveEV4dGVu
c2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKQogCiAjaWYg
SEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgVXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3RvcjxTdHJpbmc+IGRvbWFp
bnNUb1JlbW92ZSwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFy
Rmlyc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGguaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCmlu
ZGV4IGE1OGE5MDc2MDdmOWZmMWJjZDEwYmM2MmVmZmFkYWEzODg2NGNmNjUuLmI1MTU5ZmJiNTY3
ZDAyZTc2ZjQ5NjczMjgwOWQ0Y2YyZGM4ZjBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCkBAIC0zMiw2ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCk7CiBTdHJpbmcgZXhlY3V0
YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKTsKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29y
a1Byb2Nlc3MoKTsKLVN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CitT
dHJpbmcgZXhlY3V0YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNzKCk7CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKaW5k
ZXggZjM4ZTFjZTQyOTllZGEzMGIwNGJmNmNlMjI5YmQwYjNjODRhNTU0OS4uOGIzODMzMzgwOGI1
NWFkNmZmNjliMjc4ZTQ4NzY5ZmJkOTA0MDY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKQEAgLTg0LDkgKzg0LDkg
QEAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiAgICAgcmV0dXJuIGZp
bmRXZWJLaXRQcm9jZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQogCi1TdHJpbmcgZXhl
Y3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJvY2VzcygpCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZlN0
b3JhZ2VQcm9jZXNzKCkKIHsKLSAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldlYktpdERh
dGFiYXNlUHJvY2VzcyIpOworICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2VzcygiV2ViS2l0U3Rv
cmFnZVByb2Nlc3MiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCmluZGV4
IDllZjQ2MjliMjVkYmZmYjhlOGRiN2UxZjVkZWQ1MTVmYjA3ZDlmNDYuLjIyZDQ1Y2JiYmVmYTRh
MjQxNDM5NmNlNWQ1MTZmNjM2ZTFhOWMyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCkBAIC03Nyw5ICs3Nyw5IEBA
IFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKQogICAgIHJldHVybiBmaW5k
V2ViS2l0UHJvY2VzcygiV1BFTmV0d29ya1Byb2Nlc3MiKTsKIH0KIAotU3RyaW5nIGV4ZWN1dGFi
bGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MoKQorU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdl
UHJvY2VzcygpCiB7Ci0gICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXUEVEYXRhYmFzZVBy
b2Nlc3MiKTsKKyAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldQRVN0b3JhZ2VQcm9jZXNz
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKaW5kZXggMzg5MDVjMTMxOWI3Y2RjNDlmZDViZWExMmRjN2ZhOWViMTQxMWJk
Ny4uZGZlYzBmYzMwZjAyMWQ1ZDVmZDg5ZGUyOWVjOTZlNGExYWFiNmQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0LCBjb25zdCBJREIKICAgICAgICAgJiYgb3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZSkK
ICAgICAgICAgJiYgb3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvcikpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9jZXNzIGlzIGNvcnJ1
cHQuCi0gICAgICAgIC8vIFRoZSBEYXRhYmFzZVByb2Nlc3Mgc2hvdWxkIHJldHVybiBlYXJseSBh
dCB0aGlzIHBvaW50LCBidXQgY2FuIHdlIGFsc28ga2lsbCB0aGUgYmFkIFdlYlByb2Nlc3M/Cisg
ICAgICAgIC8vIFRoZSBTdG9yYWdlUHJvY2VzcyBzaG91bGQgcmV0dXJuIGVhcmx5IGF0IHRoaXMg
cG9pbnQsIGJ1dCBjYW4gd2UgYWxzbyBraWxsIHRoZSBiYWQgV2ViUHJvY2Vzcz8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcAppbmRleCBmNGQ5NGJjZDM1MWFjZDIyNjI4ZDY2NTAxOTk5NGEzYjllNDM4
NTZmLi4xY2M3YTZiZDQwZTM0ZjIwYjk1NWUwZTU0YzFkYjY2ZTNkMjM2YmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3Jl
KGNvbnN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3Rz
LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSkpOworICAgIHBvc3RTdG9yYWdl
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTdG9yYWdlUHJvY2Vzczo6ZW5zdXJl
UGF0aEV4aXN0cywgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpKTsKICNlbmRp
ZgogfQogCkBAIC0xMzMsMzkgKzEzMywzOSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQ
YXRoRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gbWFrZSBhbGwgZGlyZWN0b3JpZXMgZm9yIHBhdGggJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJl
YWRUYXNrJiYgdGFzaykKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RTdG9yYWdlVGFzayhDcm9z
c1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N0b3JhZ2VUYXNrTXV0ZXgpOwogCi0gICAgbV9kYXRhYmFzZVRhc2tzLmFw
cGVuZChXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3N0b3JhZ2VUYXNrcy5hcHBlbmQoV1RGTW92ZSh0
YXNrKSk7CiAKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBwZXJmb3Jt
TmV4dERhdGFiYXNlVGFzaygpOworICAgICAgICBwZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VUYXNr
KCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0U3RvcmFnZVRhc2soKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgQ3Jvc3NUaHJlYWRUYXNrIHRhc2s7
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsK
LSAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKTsKLSAgICAgICAgdGFz
ayA9IG1fZGF0YWJhc2VUYXNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zdG9yYWdlVGFza011dGV4KTsKKyAgICAgICAgQVNTRVJUKCFtX3N0b3JhZ2VUYXNrcy5p
c0VtcHR5KCkpOworICAgICAgICB0YXNrID0gbV9zdG9yYWdlVGFza3MudGFrZUZpcnN0KCk7CiAg
ICAgfQogCiAgICAgdGFzay5wZXJmb3JtVGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2Nr
ZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKICAg
ICBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpKTsKLSAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpE
aWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50KHNv
Y2tldFBhaXIuY2xpZW50KSksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudChzb2NrZXRQYWlyLmNsaWVudCkpLCAwKTsK
ICNlbGlmIE9TKERBUldJTikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgogICAg
IG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTdG9y
YWdlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBt
X2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3Rlbmlu
Z1BvcnQpKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0
LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWRDcmVh
dGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7CiAjZWxzZQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
aWNrIHRoZSByaWdodCBkYXRhYmFzZSBzdG9yZSBiYXNlZCBvbiB0aGUgc2Vzc2lvbiBJRC4KLSAg
ICAgICAgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhdGggPSBXVEZNb3ZlKHBhdGgp
XSgpIG11dGFibGUgeworICAgICAgICBwb3N0U3RvcmFnZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYXRo
ID0gV1RGTW92ZShwYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0gewogICAg
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggYTY3YzQzZWU4
NTI3YWJlYTgwZjQ3OGZmZGExZGM4YjMzMGFiMDczMC4uM2JjNzJlMjA2YTIxYzIyMDM1Mzk4NTU3
ZTBmZTcwYTlkZTI2NDRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXb3JrUXVldWUm
IHF1ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCi0gICAgdm9pZCBwb3N0RGF0YWJh
c2VUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKKyAgICB2b2lkIHBvc3RTdG9yYWdlVGFzayhDcm9z
c1RocmVhZFRhc2smJik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAvLyBX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZUZpbGVIYW5kbGVyCkBAIC05MCw3ICs5
MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0
aWFsaXplV2Vic2l0ZURhdGFTdG9yZShjb25zdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpOwotICAgIHZvaWQgY3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCk7
CisgICAgdm9pZCBjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAg
dm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC0xMDUs
NyArMTA1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gRm9yIGV4ZWN1dGlvbiBvbiB3
b3JrIHF1ZXVlIHRocmVhZCBvbmx5Ci0gICAgdm9pZCBwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygp
OworICAgIHZvaWQgcGVyZm9ybU5leHRTdG9yYWdlVGFzaygpOwogICAgIHZvaWQgZW5zdXJlUGF0
aEV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+PiBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnM7CkBA
IC0xMTksOCArMTE5LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+PiBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYmKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhh
bmRsZXJzOwogCi0gICAgRGVxdWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlVGFza3M7Ci0g
ICAgTG9jayBtX2RhdGFiYXNlVGFza011dGV4OworICAgIERlcXVlPENyb3NzVGhyZWFkVGFzaz4g
bV9zdG9yYWdlVGFza3M7CisgICAgTG9jayBtX3N0b3JhZ2VUYXNrTXV0ZXg7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDA1NTg3Mzc1NGJlNjY1NDYwM2Mx
MmJkYjc1NTkyNWYzNjE1OTcwMTcuLjRiZGVjNzNlNjRmMWFjZmUwNjU0NzdmMTRhNmVmYTBhMDBl
MDgyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBTdG9y
YWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3Rv
cmUoc3RydWN0IFdlYktpdDo6U3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNv
bW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVEYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oKQorICAgIENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
KCkKIAogICAgIEZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURh
dGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9tYWMvU3RvcmFnZVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vzc01hYy5tbQppbmRleCBkNmFmMTY5Y2Y1N2U0NThj
MzlkMTk0NTM2MDAwOTZmNTdiMGE3NTAxLi5jMDM4ODYwZjhmMTQzYzBkY2ZmYzkzYTUyNzY2ZDYz
NDU0NzQxZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21hYy9T
dG9yYWdlUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21h
Yy9TdG9yYWdlUHJvY2Vzc01hYy5tbQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcgogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewot
ICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpXRUJfVUlfU1RSSU5HKCIlQCBEYXRhYmFzZSBTdG9yYWdlIiwgInZpc2libGUgbmFtZSBvZiB0
aGUgZGF0YWJhc2UgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1l
LiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOworICAgIE5TU3RyaW5n
ICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RS
SU5HKCIlQCBTdG9yYWdlIiwgInZpc2libGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBwcm9jZXNzLiBU
aGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFt
ZXRlcnMudWlQcm9jZXNzTmFtZV07CiAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChD
RlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBhNTAxOWIyNTIzNjQ2NGNkNDExNWJhZDA3ZjYw
Y2FmMDg1OTFjZmMwLi5kYjQ3MDRhMDdjYjI2YjkzN2FmYWViYjg5YWMyNzk0YThiZmI2NTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTU5MCw1
ICs1OTAsNSBAQCBwaWRfdCBXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYpCiAKIHBpZF90IFdLQ29udGV4dEdldERhdGFiYXNlUHJvY2Vz
c0lkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1w
bChjb250ZXh0UmVmKS0+ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcigpOworICAgIHJldHVybiB0
b0ltcGwoY29udGV4dFJlZiktPnN0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcigpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRl
eCAyNTBmNzE2YzBjNjhiODBmNTgwNDYxNDczNGY3MmRkNThkYTZlODhlLi4wNzc5YTIwZWM4MTMy
ZWZlYjRlNDVmMDkzMDE2Zjk0OTAwOTI5MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzg1LDkgKzM4NSw5IEBAIC0g
KHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lvbiAqKWF1dG9t
YXRpb25TZXNzaW9uCiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRv
bWF0aW9uU2Vzc2lvbiA/IGF1dG9tYXRpb25TZXNzaW9uLT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxw
dHIpOwogfQogCi0tICh2b2lkKV90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MKKy0gKHZvaWQpX3Rl
cm1pbmF0ZVN0b3JhZ2VQcm9jZXNzCiB7Ci0gICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVEYXRh
YmFzZVByb2Nlc3MoKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNz
KCk7CiB9CiAKIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzCkBAIC00MDAsOSArNDAw
LDkgQEAgLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllcgogICAgIHJldHVybiBfcHJv
Y2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwogfQogCi0tIChwaWRfdClfZGF0
YWJhc2VQcm9jZXNzSWRlbnRpZmllcgorLSAocGlkX3QpX3N0b3JhZ2VQcm9jZXNzSWRlbnRpZmll
cgogewotICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIo
KTsKKyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIoKTsK
IH0KIAogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApp
bmRleCAxYTZjNmNjMTAzMGI0ZDNlMDA5OWFjNTk3YzlmMWU0ZWNiNDcxOTRmLi5kYTMxOTY5ZTEz
YTYyMzcyMmVkZGRiOTdiOTU4MDBlMTQ1NjhjNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNzIs
MTIgKzcyLDEyIEBACiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hdGlv
blNlc3Npb24gKilhdXRvbWF0aW9uU2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdo
aWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KLS0gKHZvaWQpX3Rlcm1p
bmF0ZURhdGFiYXNlUHJvY2VzczsKKy0gKHZvaWQpX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzOwog
LSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBp
ZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tIChwaWRfdClfZGF0YWJhc2VQcm9jZXNzSWRl
bnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHBpZF90KV9zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4K
IC0gKHNpemVfdClfd2ViUHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hp
bGRQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZlZjc2ODA1YTE5Y2QxZjM1ZjBjMzIyNWZiMDdiZTEy
NzhjY2QzOTguLmE2ZTRkOGFmYjQ3YmNkYTgxY2E3NmIyZGU5MTYxN2RlNzlhNDk0NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAKQEAgLTcwLDgg
KzcwLDggQEAgdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNz
TGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE8KICAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CiAgICAgICAgIHZhcm5hbWUgPSAiTkVUV09SS19QUk9D
RVNTX0NNRF9QUkVGSVgiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOgotICAgICAgICB2YXJuYW1lID0gIkRBVEFCQVNFX1BS
T0NFU1NfQ01EX1BSRUZJWCI7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBl
OjpTdG9yYWdlOgorICAgICAgICB2YXJuYW1lID0gIlNUT1JBR0VfUFJPQ0VTU19DTURfUFJFRklY
IjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNvbnN0IGNoYXIqIHByb2Nlc3NDbWRQcmVm
aXggPSBnZXRlbnYodmFybmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDhhNTYyNDZhNzcyM2I2NTJkZmJhZTQ0MTZl
Y2QyYjVkNzUxYmFmNGIuLjY3OThmYzlmOWQwZjI5OWQ2ZTY2ZjNlMzU2ZWNjZTk5YmVmMTcwYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUGx1Z2luNjQsCiAjZW5k
aWYKICAgICAgICAgTmV0d29yaywKLSAgICAgICAgRGF0YWJhc2UsCisgICAgICAgIFN0b3JhZ2Us
CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXVuY2hPcHRpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKaW5kZXggNmVkNDk1MDhhM2M1N2VjNWQwNTdmMTgwZGJkNjMxZTRlZTYwZDdmMS4uMjU2YmZm
M2ZhZWJjNjJjODRjNDFmNjkwMjY3NGRlMzkwOTQxMDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6TmV0d29yazoKICAgICAg
ICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRh
YmFzZToKLSAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQ
cm9jZXNzKCk7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpTdG9yYWdl
OgorICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdlUHJvY2Vz
cygpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IDM5MGNmZTk1MjkxNGFhMjY0N2M1YjE1
NjViYTYwODBiNTdjMDU0YmUuLjYwNTdiNGE5NDg4MDA2MDFkZWFhYzhhODYyYzc1ZmRiOTNhMGNh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogc2VydmljZU5hbWUoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpbwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCI7
CiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgogICAgICAg
ICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0gICAgY2FzZSBQcm9jZXNz
TGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZToKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6OlN0b3JhZ2U6CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktp
dC5TdG9yYWdlIjsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBjYXNlIFBy
b2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OlBsdWdpbjMyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd3BlL1Byb2Nlc3NMYXVuY2hlcldQRS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNw
cAppbmRleCA1OTU4YWIwOWEyOTk5YTRkMGEzZTI5YTUwNTg1NzkzMmI4OWYwZjRhLi4yYzYyMzg0
N2QwZjg1NmRjNjFkZjlhY2IwMGRkMzJjNzNkOWM1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNw
cApAQCAtNjcsOCArNjcsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgogICAgICAg
ICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OkRhdGFi
YXNlOgotICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVBy
b2Nlc3MoKTsKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OlN0b3JhZ2U6
CisgICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNz
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGU5YzA3ODVjYjc3ZmUxMTAyYTE4M2E4NzE1N2Uy
YjQ2MzVmYWRmMS4uY2YzOTZmNGIxMGY1NWQ2Yzk4MDg1YTM2ZGQyOGQ3YTgyMmY5NzJjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0yODksMTkgKzI4OSwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5k
Ym94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiB7CiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRl
bnNpb25zOwogICAgIGV4dGVuc2lvbnMuYWxsb2NhdGUocGF0aHMuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIC8vIFJlYWRX
cml0ZSBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcgaGFyZCBsaW5rcyBhcyB3ZWxsIGFzIGRlbGV0
aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSwgd2hpY2ggdGhlIERhdGFiYXNlUHJvY2VzcyB3aWxsIGRv
LgorICAgICAgICAvLyBSZWFkV3JpdGUgaXMgcmVxdWlyZWQgZm9yIGNyZWF0aW5nIGhhcmQgbGlu
a3MgYXMgd2VsbCBhcyBkZWxldGluZyB0aGUgdGVtcG9yYXJ5IGZpbGUsIHdoaWNoIHRoZSBTdG9y
YWdlUHJvY2VzcyB3aWxsIGRvLgogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgZXh0ZW5zaW9uc1tpXSk7
CiAgICAgfQogCi0gICAgbV9wcm9jZXNzUG9vbC5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6R3JhbnRTYW5kYm94RXh0
ZW5zaW9uc0ZvckJsb2JzKHBhdGhzLCBleHRlbnNpb25zKSk7CisgICAgbV9wcm9jZXNzUG9vbC5z
ZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpHcmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMocGF0aHMsIGV4dGVuc2lv
bnMpKTsKICNlbmRpZgotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2Jz
KHJlcXVlc3RJRCksIDApOworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxv
YnMocmVxdWVzdElEKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZTliZGM2M2Q5
OTZiZjliZmRjNDU5MjI2NGExMzg5M2ZmNzUzNzMwMC4uOTIzZGQyYTkwODczMDkyMjk1M2FkYzFj
NzU1MjA4Mzk2ODY1ZDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25z
dCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRocyk7CisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJv
Y2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
dGhzKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9p
ZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1
bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMGM5MDJlZDdhYzBjNjlmY2ZmYzU5MjlmY2M2
YWYzZWQ3YjRmY2VjZS4uMjA4ZDg1ZmFiZTA1NzJjZmQxYmYxYzQxMjZhNWMyMmE1MTgwNDU1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjksNyArMjksNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWREZWxldGVX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgR3JhbnRTYW5kYm94RXh0ZW5z
aW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElELCBWZWN0b3I8
U3RyaW5nPiBwYXRocykKKyAgICBHcmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vz
c0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0cmluZz4gcGF0aHMpCiAKICAg
ICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJv
b2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1ZTc4YzdkMGEzNjY4
MmNmZDUxM2NmMGE3YjNmNTY1ZjJkNDUxODE3Li4yMGQyMGUwZWUzY2YzOTg0ODY1MjVhY2QxYjJj
YmVjZGE0ZDA0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU3RvcmFnZVBy
b2Nlc3NQcm94eTo6flN0b3JhZ2VQcm9jZXNzUHJveHkoKQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNz
UHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNz
TGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZTsKKyAgICBsYXVuY2hPcHRpb25zLnByb2Nl
c3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6U3RvcmFnZTsKICAgICBDaGls
ZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKIH0KIApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgc2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQs
IGRhdGFUeXBlcywgb3JpZ2lucywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFN0b3JhZ2VQ
cm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwogCkBAIC0xMjAsMTIgKzEyMCwx
MiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbigpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCksIDAsIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAog
dm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewot
ICAgIC8vIFRoZSBkYXRhYmFzZSBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwg
c28gc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KKyAgICAvLyBU
aGUgc3RvcmFnZSBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc28gc2VuZCBh
bnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHJlcGx5ID0g
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKQEAgLTE1MCwxOSArMTUw
LDE5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
JikKICAgICAgICAgY2FsbGJhY2soKTsKICAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnNDYWxsYmFja3MuY2xlYXIoKTsKIAotICAgIC8vIFRlbGwgUHJvY2Vzc1Bvb2wgdG8g
Zm9yZ2V0IGFib3V0IHRoaXMgZGF0YWJhc2UgcHJvY2Vzcy4gVGhpcyBtYXkgY2F1c2UgdXMgdG8g
YmUgZGVsZXRlZC4KLSAgICBtX3Byb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3NDcmFzaGVkKHRo
aXMpOworICAgIC8vIFRlbGwgUHJvY2Vzc1Bvb2wgdG8gZm9yZ2V0IGFib3V0IHRoaXMgc3RvcmFn
ZSBwcm9jZXNzLiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgorICAgIG1fcHJvY2Vz
c1Bvb2wtPnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpCiB7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3Jl
YXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYg
Y29ubmVjdGlvbklkZW50aWZpZXIpCit2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0
ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5pc0VtcHR5KCkpOwogCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNp
ZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRl
bnRpZmllcik7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICAg
ICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QZW5kaW5nQ29ubmVjdGlv
blJlcXVlc3RzOyArK2kpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpD
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbigpLCAwKTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQ
cm9jZXNzUHJveHkuaAppbmRleCBiYmNhNzBlMDU1YjkxZDNiZGU0NjY4MTI5NjRhMjcwNjIwZjhi
YmEzLi41YzExMDZkMzY4YjA3OGNmODFlMWEyY2FmYzc1NDExYTIwZTIwNGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShX
ZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgIHZvaWQgZ2V0RGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCiBwcml2YXRlOgogICAg
IFN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKQEAgLTY5LDcgKzY5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc1Byb3h5TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMKLSAgICB2b2lkIGRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBJUEM6OkF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGRpZENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogICAgIHZvaWQgZGlkRmV0Y2hX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwogICAg
IHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bv
b2w7CiAKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7Ci0gICAg
RGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAg
IERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+PiBt
X3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJh
Y2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlMTc2OTMzM2Q2YzA0NGY0
NTUyYTdiYzUxMmFiYjZiNzU0ZTgzM2MuLjJhNzhhNmIxYzcxMzA0ZjIyYmQ2ZDAzM2FhNGU4NzRl
ZTU5ZDdiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7Ci0gICAgRGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
KElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBEaWRDcmVhdGVTdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0
cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdlYnNp
dGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRDbGllbnQuY3BwCmluZGV4IDY0ZGJkZWZhZjBiYTI3MjBkZDdiZWEyZDkzOWI4MTYw
N2U2YWQ5YWYuLjQxYzBjMjU3MjdjYTQ2NjFhZmZmNWJkMWQ2MDhiNjJkNDUzYWRiOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIHZvaWQgV2ViQ29udGV4dENsaWVudDo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXZWJQ
cm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgbV9jbGllbnQubmV0d29ya1Byb2Nlc3NEaWRD
cmFzaCh0b0FQSShwcm9jZXNzUG9vbCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
LXZvaWQgV2ViQ29udGV4dENsaWVudDo6ZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sKQordm9pZCBXZWJDb250ZXh0Q2xpZW50OjpzdG9yYWdlUHJvY2Vz
c0RpZENyYXNoKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmgKaW5kZXggYjI1YzRkM2I5ZDRhOTJlZGUx
NjI2ODBiYWE3NDYxZDc3Y2QyMTVlMC4uMDM4ZjYzYTVjNDA4Y2Q1MzIxODAyNjBkNWFkOGVjNTRh
NGU5YmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaApA
QCAtNDUsNyArNDUsNyBAQCBjbGFzcyBXZWJDb250ZXh0Q2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQ29udGV4dENsaWVudEJhc2U+IHsKIHB1YmxpYzoKICAgICB2b2lkIHBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlc0NoYW5nZWQoV2ViUHJvY2Vzc1Bvb2wqKTsKICAgICB2b2lkIG5ldHdv
cmtQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wqKTsKLSAgICB2b2lkIGRhdGFiYXNlUHJv
Y2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sKik7CisgICAgdm9pZCBzdG9yYWdlUHJvY2Vzc0Rp
ZENyYXNoKFdlYlByb2Nlc3NQb29sKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmMjhmMDk5Nzg2
MTBjNTFkMDAzMGIxOWQ2ZjYyOWMyYWIyNTQ1NjYyLi44M2YzYTY3M2Y3MjRiNmZiOGI5OWIxNWQx
MTYzZmQwNmQwOTQzMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OgogICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKHJl
cGx5KSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2Vzc0Fu
ZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpCiB7CiAgICAgLy8gKioqKioq
KioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0
dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGlu
ZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCiAgICAg
Ly8gKioqKioqKioqCiAKLSAgICBpZiAoIW1fZGF0YWJhc2VQcm9jZXNzKSB7Ci0gICAgICAgIG1f
ZGF0YWJhc2VQcm9jZXNzID0gU3RvcmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOworICAg
IGlmICghbV9zdG9yYWdlUHJvY2VzcykgeworICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzID0gU3Rv
cmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOwogCiAgICAgICAgIFN0b3JhZ2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCkBAIC01MzMsMzIgKzUzMywzMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRh
YmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUqCiAjZW5kaWYK
IAogICAgICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwor
ICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6
SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwogICAgIH0KIAogICAg
IGlmICghcmVsZXZhbnREYXRhU3RvcmUgfHwgcmVsZXZhbnREYXRhU3RvcmUgPT0gJndlYnNpdGVE
YXRhU3RvcmUoKS53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZGF0YWJhc2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6SW5pdGlhbGl6
ZVdlYnNpdGVEYXRhU3RvcmUocmVsZXZhbnREYXRhU3RvcmUtPmRhdGFiYXNlUHJvY2Vzc1BhcmFt
ZXRlcnMoKSksIDApOworICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShyZWxldmFudERhdGFTdG9yZS0+
c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKIHsKLSAgICBlbnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJz
aXRlRGF0YVN0b3JlKG51bGxwdHIpOworICAgIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0
ZURhdGFTdG9yZShudWxscHRyKTsKIAotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5nZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3N0b3JhZ2VQcm9jZXNz
LT5nZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpkYXRhYmFzZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJv
eHkqIGRhdGFiYXNlUHJvY2Vzc1Byb3h5KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVBy
b2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzUHJveHkpCiB7
Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VQcm9jZXNzKTsKLSAgICBBU1NFUlQoZGF0YWJhc2VQcm9j
ZXNzUHJveHkgPT0gbV9kYXRhYmFzZVByb2Nlc3MuZ2V0KCkpOworICAgIEFTU0VSVChtX3N0b3Jh
Z2VQcm9jZXNzKTsKKyAgICBBU1NFUlQoc3RvcmFnZVByb2Nlc3NQcm94eSA9PSBtX3N0b3JhZ2VQ
cm9jZXNzLmdldCgpKTsKIAogICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVu
dHMudmFsdWVzKCkpCi0gICAgICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZShkYXRhYmFz
ZVByb2Nlc3NQcm94eSk7CisgICAgICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZShzdG9y
YWdlUHJvY2Vzc1Byb3h5KTsKIAotICAgIG1fY2xpZW50LmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNo
KHRoaXMpOwotICAgIG1fZGF0YWJhc2VQcm9jZXNzID0gbnVsbHB0cjsKKyAgICBtX2NsaWVudC5z
dG9yYWdlUHJvY2Vzc0RpZENyYXNoKHRoaXMpOworICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBudWxs
cHRyOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93
c2luZygpCkBAIC05NTksOSArOTU5LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVk
VG9Qcm9jZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpLCAwKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQotICAgICAgICBhdXRvIGRhdGFiYXNlUGFyYW1ldGVycyA9IHBhZ2Uud2Vic2l0ZURhdGFT
dG9yZSgpLmRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMoKTsKLSAgICAgICAgaWYgKCFkYXRhYmFz
ZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShkYXRhYmFzZVBhcmFt
ZXRlcnMpKTsKKyAgICAgICAgYXV0byBzdG9yYWdlUGFyYW1ldGVycyA9IHBhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpLnN0b3JhZ2VQcm9jZXNzUGFyYW1ldGVycygpOworICAgICAgICBpZiAoIXN0b3Jh
Z2VQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBzZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShzdG9yYWdlUGFyYW1l
dGVycykpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMTA3MywxMiArMTA3MywxMiBAQCBwaWRfdCBX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCkKICAgICByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KIAotcGlkX3QgV2ViUHJvY2Vz
c1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIoKQorcGlkX3QgV2ViUHJvY2Vzc1Bvb2w6
OnN0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcigpCiB7Ci0gICAgaWYgKCFtX2RhdGFiYXNlUHJvY2Vz
cykKKyAgICBpZiAoIW1fc3RvcmFnZVByb2Nlc3MpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIG1fZGF0YWJhc2VQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOworICAgIHJldHVy
biBtX3N0b3JhZ2VQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGFsd2F5c1Vz
ZUNvbXBsZXhUZXh0KQpAQCAtMTMwMiwxMyArMTMwMiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKSwgMCk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZURhdGFiYXNlUHJvY2VzcygpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcygpCiB7Ci0gICAgaWYg
KCFtX2RhdGFiYXNlUHJvY2VzcykKKyAgICBpZiAoIW1fc3RvcmFnZVByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT50ZXJtaW5hdGUoKTsKLSAgICBtX2Rh
dGFiYXNlUHJvY2VzcyA9IG51bGxwdHI7CisgICAgbV9zdG9yYWdlUHJvY2Vzcy0+dGVybWluYXRl
KCk7CisgICAgbV9zdG9yYWdlUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IGRmOWVlMmEzNmEyMzU5YWNmOWI3Y2Q1ZjU0MmNmMjI5ZjQy
ZDc1MjQuLmQ4Y2E2MzRlMWRhYTJkYzA1NjA3N2I3NzM3NTI2MDk4YzhlODE3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTYwLDggKzE2MCw4IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiB2b2lkIHNlbmRTeW5j
VG9OZXR3b3JraW5nUHJvY2VzcyhUJiYgbWVzc2FnZSwgVSYmIHJlcGx5KTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShUJiYgbWVzc2FnZSk7CiAKLSAgICAvLyBTZW5kcyB0aGUgbWVzc2FnZSB0byBXZWJQ
cm9jZXNzIG9yIERhdGFiYXNlUHJvY2VzcyBhcyBhcHByb3BvcmlhdGUgZm9yIGN1cnJlbnQgcHJv
Y2VzcyBtb2RlbC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0RhdGFiYXNl
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2UpOworICAgIC8vIFNlbmRz
IHRoZSBtZXNzYWdlIHRvIFdlYlByb2Nlc3Mgb3IgU3RvcmFnZVByb2Nlc3MgYXMgYXBwcm9wb3Jp
YXRlIGZvciBjdXJyZW50IHByb2Nlc3MgbW9kZWwuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBzZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoVCYmIG1lc3Nh
Z2UpOwogCiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94
eSopOwogCkBAIC0xOTksNyArMTk5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBwaWRfdCBu
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSAgICBwaWRfdCBkYXRhYmFzZVByb2Nlc3NJZGVu
dGlmaWVyKCk7CisgICAgcGlkX3Qgc3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyKCk7CiAKICAgICB2
b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0
U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sKTsK
IAogICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOwotICAgIHZvaWQgdGVybWluYXRl
RGF0YWJhc2VQcm9jZXNzKCk7CisgICAgdm9pZCB0ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcygpOwog
ICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgc3luY05ldHdv
cmtQcm9jZXNzQ29va2llcygpOwpAQCAtMzEyLDEwICszMTIsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKIAot
ICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7Ci0gICAgU3RvcmFnZVByb2Nlc3NQcm94eSog
ZGF0YWJhc2VQcm9jZXNzKCkgeyByZXR1cm4gbV9kYXRhYmFzZVByb2Nlc3MuZ2V0KCk7IH0KLSAg
ICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7
Ci0gICAgdm9pZCBkYXRhYmFzZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsK
KyAgICB2b2lkIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7CisgICAgU3RvcmFnZVByb2Nlc3NQcm94eSog
c3RvcmFnZVByb2Nlc3MoKSB7IHJldHVybiBtX3N0b3JhZ2VQcm9jZXNzLmdldCgpOyB9CisgICAg
dm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIHN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9yYWdlUHJvY2Vzc1Byb3h5Kik7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBj
b25zdDsKQEAgLTU0OSw3ICs1NDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBib29sIG1fZGlkTmV0d29ya1Byb2Nlc3ND
cmFzaDsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsK
LSAgICBSZWZQdHI8U3RvcmFnZVByb2Nlc3NQcm94eT4gbV9kYXRhYmFzZVByb2Nlc3M7CisgICAg
UmVmUHRyPFN0b3JhZ2VQcm9jZXNzUHJveHk+IG1fc3RvcmFnZVByb2Nlc3M7CiAKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPj4gbV9kaWN0aW9uYXJ5Q2Fs
bGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4+
IG1fc3RhdGlzdGljc1JlcXVlc3RzOwpAQCAtNjI3LDEwICs2MjcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQm
JiBtZXNzYWdlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2Fn
ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKIHsKLSAgICBlbnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRX
ZWJzaXRlRGF0YVN0b3JlKG51bGxwdHIpOwotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5zZW5kKHN0
ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CisgICAgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRX
ZWJzaXRlRGF0YVN0b3JlKG51bGxwdHIpOworICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoc3Rk
Ojpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMxNjgzODQ3
NDg1MjFiMTQ0YTE0MjM0YzUxYmE4NmE2ZGRlOWIwYWMuLjcwODVjZTkyNDA2YTY2YmIxNTQ0YTlh
MzBhOTQ2MDE2YmUzMjc3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNTczLDkgKzU3Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6CiAg
ICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewot
ICAgIG1fcHJvY2Vzc1Bvb2wtPmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShy
ZXBseSkpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihX
VEZNb3ZlKHJlcGx5KSk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDhhZmViZjNmOTdiYzk5NjQ2MTNjZWZh
ZTA0NGRiNTQyNjBlNGFjMWMuLjFlZTQ4ZjdjYjJkYThlYjM3NTJiYzAwNzhjNTM1NTRjMGFiOTZl
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMTQs
NyArMjE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogI2VuZGlm
CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYm
KTsKLSAgICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmKTsKIAogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDFmZjc2NTcxZWZiMDhhYTQxODEwYTJmMjU2ZWY5MGM2MmMwNDE3OTMuLmFkNjlj
NTJmNDAwYzg2NWYzYTQ5ZWJmMGZmZGJkMmM1MmVkZWMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pIC0+
IChJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVkCiAjZW5kaWYKICAgICBHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5
ZWQKLSAgICBHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCisgICAgR2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCiAgICAg
UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkKICAgICBEaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMzAwYjViZmU2ZTgxYzExZDFhZDhkNzkzMmZmOGMzMTNm
NTQ5ZDkxYy4uOTFjMDNlNjBkOGIyNjQzMWJkMTgxYTgyYjhmMWNmOTNjZGUxZGZlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKQEAgLTQzMywxMCArNDMzLDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBP
CiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1
cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKHRoaXMpOworICAgICAgICAgICAg
cHJvY2Vzc1Bvb2wtPmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlz
KTsKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZmV0Y2hXZWJz
aXRlRGF0YShtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9j
ZXNzUG9vbF0oV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT5zdG9yYWdlUHJvY2VzcygpLT5mZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRh
VHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHByb2Nlc3NQb29sXShXZWJzaXRlRGF0YSB3ZWJz
aXRlRGF0YSkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVu
ZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CkBAIC03MjcsMTAgKzcyNywxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogCiAg
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlRGF0
YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlzKTsKKyAgICAgICAgICAgIHByb2Nl
c3NQb29sLT5lbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7CiAK
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0g
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZGF0YWJhc2VQcm9jZXNzKCktPmRlbGV0ZVdlYnNpdGVE
YXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IsIHByb2Nlc3NQb29sXSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c3RvcmFnZVBy
b2Nlc3MoKS0+ZGVsZXRlV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZp
ZWRTaW5jZSwgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKICAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTEwMDQsMTAgKzEwMDQsMTAgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgY29uc3QgVmUKIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPmVuc3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7Cisg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0
YVN0b3JlKHRoaXMpOwogCiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzcygp
LT5kZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3Jp
Z2lucywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKKyAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT5zdG9yYWdlUHJvY2VzcygpLT5kZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
bV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJv
Y2Vzc1Bvb2xdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTEzMTUsNyAr
MTMxNSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvCiAgICAgICAgIHByb2Nlc3NQb29sLT5z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh0cnVlKTsKIH0KIAotU3RvcmFnZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFy
YW1ldGVycygpCitTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpzdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKQogewogICAgIHJlc29sdmVEaXJlY3Rvcmll
c0lmTmVjZXNzYXJ5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBiNTQ5MjJjZTI5OGQzZjBiNjNlMjk1
NjYyYjU4OGIyODQwMzIzZWE2Li40Mjk3NDA3MDc5YTc1YjVhN2VhYmVkNzU3Y2YyZDk4NDRiMTZm
ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmKSBjb25zdDsKIAogICAgIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMoKTsKLSAgICBTdG9yYWdlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyBkYXRhYmFzZVByb2Nlc3NQYXJhbWV0ZXJzKCk7CisgICAgU3Rv
cmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgc3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCk7
CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBwZW5kaW5nQ29va2llcygpIGNvbnN0Owog
ICAgIHZvaWQgYWRkUGVuZGluZ0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDU0YzJkMjg5
MTA1MWYwMzIyMjY5ZDU1YWU0ZjRjNTAzNTVkYzMzZjEuLjRkNzZmYmI0M2UwY2RhZDkyYjhkN2Vm
MjI4NTE0ODE0ODUyY2U0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
On5XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIoKQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQogewotICAgIHJldHVy
biAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKTsKIH0KIAogSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29y
ZUNvbm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5oCmluZGV4IGQxNjNjMDkwYmZlY2YyMDIxM2EwODViY2NiN2Y5ZWU1MDgxY2I2MDMu
LmM3OWUwNDFkNGYxOGEzMjA4YWQxYWYyODE4MThmMTU0M2Q0OGVmMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50
ZWQ8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPjo6ZGVyZWYoKTsgfQogCi0gICAgLy8gTWVzc2Fn
ZXMgcmVjZWl2ZWQgZnJvbSBEYXRhYmFzZVByb2Nlc3MKKyAgICAvLyBNZXNzYWdlcyByZWNlaXZl
ZCBmcm9tIFN0b3JhZ2VQcm9jZXNzCiAgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCmluZGV4IDVj
ZjdmZDJiMzI1ODEzMTkwNTk2MzI1NjY2MzYyNTI3NWIzMThjYTYuLjJiODdiYWY5NGU3YmQyNTFj
MDYyMDQwYTg3MWNlMjIzYjliZmJkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcApAQCAtNzksOCAr
NzksOCBAQCBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViRGF0
YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvUwogICAgICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvU2VydmVyKCk7CiAgICAgfQogCi0gICAgQVNTRVJU
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigp
KTsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKCktPmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklE
KS5jb3JlQ29ubmVjdGlvblRvU2VydmVyKCk7CisgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCkpOworICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5pZGJD
b25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29yZUNvbm5lY3Rpb25Ub1Nl
cnZlcigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCAwMDEyMTg1M2VmZDMyOGE5ZTUzZjJhZmU4M2MzNzY2MWM5YzUyZWNkLi42YjI3ZDc4MWQy
ZDE5YmUyNGI0NzQwM2NlNGJiZDY4ZjFmZWExODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0zNSwxNyArMzUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246
OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQog
ewogICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwogfQogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246On5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKQorV2ViVG9TdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiB9
CiAKLXZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3Zv
aWQgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGkKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLnZhbHVlcygpKQpA
QCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgbV93ZWJJREJDb25uZWN0
aW9uc0J5U2Vzc2lvbi5jbGVhcigpOwogI2VuZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQodGhpcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQo
dGhpcyk7CiB9CiAKLXZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2
b2lkIFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCiB7CiB9CiAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKLVdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKGNv
bnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQorV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lv
bihjb25zdCBTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fd2Vi
SURCQ29ubmVjdGlvbnNCeVNlc3Npb24uYWRkKHNlc3Npb25JRCwgbnVsbHB0cik7CiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCAwZjFjYTkyNGFmZjI2OTdlOTM5N2Q2YThiMjY5ZjgzNjUwZjYwMTZlLi4yNDI2ZTZjYWZiMjBm
MzViMjU3NGNmMjc4Y2I4NTgwOTVmNmE4YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uLmgKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+LCBwdWJsaWMgSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xhc3MgV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJUb1N0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbj4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihjb25u
ZWN0aW9uSWRlbnRpZmllcikpOwogICAgIH0KLSAgICB+V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uKCk7CisgICAgfldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgCiAg
ICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdl
dCgpOyB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CisgICAgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkMDEzMGZk
YzM4NzE2Y2JjOTAzMjk4OTE5YzcxN2NhNzA1MDdjMzQ5Li5kNDAwYTcxOTM0YmNiZmI2MWRiZDVl
N2JiNDNlN2UxNmUxZTk1ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xMTM2LDMxICsxMTM2LDMwIEBAIFdlYkxvYWRlclN0cmF0ZWd5JiBXZWJQcm9jZXNz
Ojp3ZWJMb2FkZXJTdHJhdGVneSgpCiAgICAgcmV0dXJuIG1fd2ViTG9hZGVyU3RyYXRlZ3k7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzczo6d2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2Vk
KFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjdGlvbikKK3ZvaWQgV2ViUHJv
Y2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKG1fd2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICBBU1NFUlQobV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24gPT0gY29ubmVjdGlvbik7CisgICAgQVNTRVJUKG1fd2ViVG9TdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24pOworICAgIEFTU0VSVChtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
ID09IGNvbm5lY3Rpb24pOwogCi0gICAgbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBudWxscHRyOworICAgIG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRy
OwogfQogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIFdlYlByb2Nlc3M6OndlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
biogV2ViUHJvY2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIGlm
ICghbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pCi0gICAgICAgIGVuc3VyZVdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGlmICghbV93ZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbikKKyAgICAgICAgZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKIAotICAgIHJldHVybiBtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5nZXQo
KTsKKyAgICByZXR1cm4gbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24o
KQordm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigp
CiB7Ci0gICAgaWYgKG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmICht
X3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBJ
UEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyOwogCi0gICAgaWYgKCFw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCksCi0gICAgICAgIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQorICAgIGlmICghcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKCksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkp
CiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQpAQCAtMTE3
Miw3ICsxMTcxLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogI2VuZGlmCiAgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmll
cklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3dl
YlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX3dlYlRvU3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uID0gV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShj
b25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRB
Y2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDYwZDNlZDQwYWJjYTZmZjJhZDQzYTEyNGJlOWIzMWRkZDU5OThkMzEuLmUwYmY4NmE2
MzJkZjc4ZGY1Y2ZkN2NhM2RkZGQzNmE0YzkxYzUxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBXZWJMb2FkZXJTdHJhdGVneTsK
IGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdlYlByb2Nl
c3NTdXBwbGVtZW50OwotY2xhc3MgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOworY2xh
c3MgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRh
VHlwZTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlBhZ2VH
cm91cERhdGE7CkBAIC0xNjQsOCArMTY0LDggQEAgcHVibGljOgogICAgIExpYldlYlJUQ05ldHdv
cmsmIGxpYldlYlJUQ05ldHdvcmsoKTsKICNlbmRpZgogCi0gICAgdm9pZCB3ZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKik7
Ci0gICAgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKiB3ZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uQ2xv
c2VkKFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKik7CisgICAgV2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24qIHdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwogCkBAIC0zODMsOCArMzgzLDggQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PiBtX2F1
dG9tYXRpb25TZXNzaW9uUHJveHk7CiAKLSAgICB2b2lkIGVuc3VyZVdlYlRvRGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbigpOwotICAgIFJlZlB0cjxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24+IG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOworICAgIHZvaWQgZW5zdXJlV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8V2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24+IG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb247CiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyPiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316600</attachid>
            <date>2017-07-27 19:17:06 -0700</date>
            <delta_ts>2017-08-01 09:40:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174880-20170727191705.patch</filename>
            <type>text/plain</type>
            <size>77070</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1NzZlYmJiMDExYmFmMGY3
OGQzYjFiMzUyZThhZDRiNjc0YmZiZWIuLmE2MTdhYmRiYTEwYzZhODQxZDI2Y2RhYWU4NWZkYTg3
Mjg3NzEzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUzIEBACiAyMDE3LTA3LTI3ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXJ0IDIgb2Y6IFJlbmFtZSBE
YXRhYmFzZVByb2Nlc3MgdG8gU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmR5IEVzdGVzLgorCisgICAgICAgIFJlbmFtZSBzb21lIG1vcmUgdmFyaWFibGVzLCBjbGFzc2Vz
LCBldGMuIHRvIHJlZmxlY3QgdGhlIGNoYW5nZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToK
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQ
cm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkZ3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVBy
b2Nlc3NGb3JCbG9icyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoT2ZTdG9yYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRo
T2ZEYXRhYmFzZVByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC93cGUvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoV1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhP
ZlN0b3JhZ2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZkRhdGFi
YXNlUHJvY2Vzcyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZCk6CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpp
bml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzOjpwb3N0U3RvcmFnZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6
cGVyZm9ybU5leHRTdG9yYWdlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZSk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdL
Q29udGV4dEdldERhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc10pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9z
dG9yYWdlUHJvY2Vzc0lkZW50aWZpZXJdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfdGVy
bWluYXRlRGF0YWJhc2VQcm9jZXNzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX2RhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXJ2aWNlTmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgor
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9i
cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0TGF1
bmNoT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNz
UHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6
ZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dENsaWVudDo6c3RvcmFnZVByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHRDbGllbnQ6OmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3Vy
ZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VBZGRlZFRvUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU3RvcmFnZVByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0
ZURhdGFTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpn
ZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVEYXRhYmFz
ZVByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvU3RvcmFnZVByb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkpOiBEZWxldGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFyYW1ldGVycyk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRGF0YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbik6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6fldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpX
ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uOjpjb25uZWN0aW9uKTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRv
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3Nl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKKzIwMTctMDctMjcgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIFBhcnQgMSBvZjogUmVuYW1lIERhdGFiYXNl
UHJvY2VzcyB0byBTdG9yYWdlUHJvY2Vzcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NDg3OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDM0OWJjNDdlZmEyMzZkZWU1M2M4YzcxZWEyM2JlNzQzYzFhNTUwNzkuLjVmODI5OTJhZjdk
NTYxYzhmZDdjNzY4NGY3MGQxZDZlMjViOTUwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmkKICAgICAgICAg
Zm9yIChhdXRvJiBmaWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZv
a2VGaWxlQWNjZXNzKCk7CiAKLSAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGZpbGVOYW1lcywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRl
bnRpZmllciwgZmlsZU5hbWVzXSgpIHsKKyAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRv
bigpLmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoZmlsZU5h
bWVzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyLCBmaWxlTmFtZXNdKCkgewogICAgICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24tPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODBhNGU1MTQxNWEz
MWI3ZDQ3OTgyMTUzMGNiM2VlNmMzOThhYmQ0Yi4uOGEwNjFjZDcyMjk4MzBhYTg0OGM5MTg2YThl
MTlhY2ViMjgxNDExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTMwMywxNiArMzAzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgU2Vzc2lvblRyYWNrZXI6
OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdl
UHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9u
PHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGxh
c3RSZXF1ZXN0SUQ7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSArK2xhc3RSZXF1ZXN0SUQ7
CiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnMuc2V0KHJl
cXVlc3RJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHJlcXVlc3RJRCwgZmlsZW5h
bWVzKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nl
c3NGb3JCbG9icyhyZXF1ZXN0SUQsIGZpbGVuYW1lcyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9i
cyh1aW50NjRfdCByZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRi
b3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkK
IHsKICAgICBpZiAoYXV0byBoYW5kbGVyID0gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21w
bGV0aW9uSGFuZGxlcnMudGFrZShyZXF1ZXN0SUQpKQogICAgICAgICBoYW5kbGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmQyMTg4
YmI0ZWMwYjdhYTg1MWUzZGJmOWJhODBlZDI3ODVjOTI3OS4uNjc0NmJlOTE0OTQxYmQxOWIyNDY3
M2E4MGZjNWM5YjM3ZjNkOTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYm
KTsKIAotICAgIHZvaWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9y
QmxvYnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9T
dG9yYWdlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1
bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JUb3BQcml2YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91
bGRDbGVhckZpcnN0KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCk7CiAgICAgdm9pZCBzeW5j
QWxsQ29va2llcygpOwogCi0gICAgdm9pZCBkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkR3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1
ZXN0SUQpOwogCiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMGNlNjRiODM1MDEwNmZiOGJmNWQ5ZDY0MjhhNTc3MmU4
ZDM5ZWNjLi4zNmU0Nzc3ODlmMjkyMzM2ZTg0MzA4NWExYmU0MjMyMTBkZWE4ZGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTgwLDcgKzgwLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFByb2Nlc3NE
aWRSZXN1bWUoKQogCi0gICAgRGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9j
ZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKQorICAgIERpZEdyYW50U2FuZGJveEV4dGVu
c2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKQogCiAjaWYg
SEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgVXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nRm9yVG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3RvcjxTdHJpbmc+IGRvbWFp
bnNUb1JlbW92ZSwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFy
Rmlyc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGguaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCmlu
ZGV4IGE1OGE5MDc2MDdmOWZmMWJjZDEwYmM2MmVmZmFkYWEzODg2NGNmNjUuLmI1MTU5ZmJiNTY3
ZDAyZTc2ZjQ5NjczMjgwOWQ0Y2YyZGM4ZjBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCkBAIC0zMiw2ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCk7CiBTdHJpbmcgZXhlY3V0
YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKTsKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29y
a1Byb2Nlc3MoKTsKLVN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CitT
dHJpbmcgZXhlY3V0YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNzKCk7CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKaW5k
ZXggZjM4ZTFjZTQyOTllZGEzMGIwNGJmNmNlMjI5YmQwYjNjODRhNTU0OS4uOGIzODMzMzgwOGI1
NWFkNmZmNjliMjc4ZTQ4NzY5ZmJkOTA0MDY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKQEAgLTg0LDkgKzg0LDkg
QEAgU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiAgICAgcmV0dXJuIGZp
bmRXZWJLaXRQcm9jZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQogCi1TdHJpbmcgZXhl
Y3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJvY2VzcygpCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZlN0
b3JhZ2VQcm9jZXNzKCkKIHsKLSAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldlYktpdERh
dGFiYXNlUHJvY2VzcyIpOworICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2VzcygiV2ViS2l0U3Rv
cmFnZVByb2Nlc3MiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCmluZGV4
IDllZjQ2MjliMjVkYmZmYjhlOGRiN2UxZjVkZWQ1MTVmYjA3ZDlmNDYuLjIyZDQ1Y2JiYmVmYTRh
MjQxNDM5NmNlNWQ1MTZmNjM2ZTFhOWMyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCkBAIC03Nyw5ICs3Nyw5IEBA
IFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKQogICAgIHJldHVybiBmaW5k
V2ViS2l0UHJvY2VzcygiV1BFTmV0d29ya1Byb2Nlc3MiKTsKIH0KIAotU3RyaW5nIGV4ZWN1dGFi
bGVQYXRoT2ZEYXRhYmFzZVByb2Nlc3MoKQorU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdl
UHJvY2VzcygpCiB7Ci0gICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXUEVEYXRhYmFzZVBy
b2Nlc3MiKTsKKyAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldQRVN0b3JhZ2VQcm9jZXNz
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKaW5kZXggMzg5MDVjMTMxOWI3Y2RjNDlmZDViZWExMmRjN2ZhOWViMTQxMWJk
Ny4uZGZlYzBmYzMwZjAyMWQ1ZDVmZDg5ZGUyOWVjOTZlNGExYWFiNmQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0LCBjb25zdCBJREIKICAgICAgICAgJiYgb3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZSkK
ICAgICAgICAgJiYgb3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSW5kZXhl
ZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvcikpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9jZXNzIGlzIGNvcnJ1
cHQuCi0gICAgICAgIC8vIFRoZSBEYXRhYmFzZVByb2Nlc3Mgc2hvdWxkIHJldHVybiBlYXJseSBh
dCB0aGlzIHBvaW50LCBidXQgY2FuIHdlIGFsc28ga2lsbCB0aGUgYmFkIFdlYlByb2Nlc3M/Cisg
ICAgICAgIC8vIFRoZSBTdG9yYWdlUHJvY2VzcyBzaG91bGQgcmV0dXJuIGVhcmx5IGF0IHRoaXMg
cG9pbnQsIGJ1dCBjYW4gd2UgYWxzbyBraWxsIHRoZSBiYWQgV2ViUHJvY2Vzcz8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcAppbmRleCBmNGQ5NGJjZDM1MWFjZDIyNjI4ZDY2NTAxOTk5NGEzYjllNDM4
NTZmLi4xY2M3YTZiZDQwZTM0ZjIwYjk1NWUwZTU0YzFkYjY2ZTNkMjM2YmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3Jl
KGNvbnN0IFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3Rz
LCBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSkpOworICAgIHBvc3RTdG9yYWdl
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTdG9yYWdlUHJvY2Vzczo6ZW5zdXJl
UGF0aEV4aXN0cywgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpKTsKICNlbmRp
ZgogfQogCkBAIC0xMzMsMzkgKzEzMywzOSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQ
YXRoRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gbWFrZSBhbGwgZGlyZWN0b3JpZXMgZm9yIHBhdGggJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEo
KSk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJl
YWRUYXNrJiYgdGFzaykKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RTdG9yYWdlVGFzayhDcm9z
c1RocmVhZFRhc2smJiB0YXNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N0b3JhZ2VUYXNrTXV0ZXgpOwogCi0gICAgbV9kYXRhYmFzZVRhc2tzLmFw
cGVuZChXVEZNb3ZlKHRhc2spKTsKKyAgICBtX3N0b3JhZ2VUYXNrcy5hcHBlbmQoV1RGTW92ZSh0
YXNrKSk7CiAKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBwZXJmb3Jt
TmV4dERhdGFiYXNlVGFzaygpOworICAgICAgICBwZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VUYXNr
KCkKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0U3RvcmFnZVRhc2soKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgQ3Jvc3NUaHJlYWRUYXNrIHRhc2s7
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsK
LSAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKTsKLSAgICAgICAgdGFz
ayA9IG1fZGF0YWJhc2VUYXNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9zdG9yYWdlVGFza011dGV4KTsKKyAgICAgICAgQVNTRVJUKCFtX3N0b3JhZ2VUYXNrcy5p
c0VtcHR5KCkpOworICAgICAgICB0YXNrID0gbV9zdG9yYWdlVGFza3MudGFrZUZpcnN0KCk7CiAg
ICAgfQogCiAgICAgdGFzay5wZXJmb3JtVGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6Y3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2Nr
ZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKICAg
ICBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpKTsKLSAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpE
aWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50KHNv
Y2tldFBhaXIuY2xpZW50KSksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudChzb2NrZXRQYWlyLmNsaWVudCkpLCAwKTsK
ICNlbGlmIE9TKERBUldJTikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgogICAg
IG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTdG9y
YWdlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBt
X2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3Rlbmlu
Z1BvcnQpKSk7CiAKICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0
LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWRDcmVh
dGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7CiAjZWxzZQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaXRlRGF0YQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
aWNrIHRoZSByaWdodCBkYXRhYmFzZSBzdG9yZSBiYXNlZCBvbiB0aGUgc2Vzc2lvbiBJRC4KLSAg
ICAgICAgcG9zdERhdGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhdGggPSBXVEZNb3ZlKHBhdGgp
XSgpIG11dGFibGUgeworICAgICAgICBwb3N0U3RvcmFnZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYXRo
ID0gV1RGTW92ZShwYXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgc2VjdXJpdHlPcmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0gewogICAg
ICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggYTY3YzQzZWU4
NTI3YWJlYTgwZjQ3OGZmZGExZGM4YjMzMGFiMDczMC4uM2JjNzJlMjA2YTIxYzIyMDM1Mzk4NTU3
ZTBmZTcwYTlkZTI2NDRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXb3JrUXVldWUm
IHF1ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCi0gICAgdm9pZCBwb3N0RGF0YWJh
c2VUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKKyAgICB2b2lkIHBvc3RTdG9yYWdlVGFzayhDcm9z
c1RocmVhZFRhc2smJik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAvLyBX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZUZpbGVIYW5kbGVyCkBAIC05MCw3ICs5
MCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0
aWFsaXplV2Vic2l0ZURhdGFTdG9yZShjb25zdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYpOwotICAgIHZvaWQgY3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCk7
CisgICAgdm9pZCBjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAg
dm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC0xMDUs
NyArMTA1LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gRm9yIGV4ZWN1dGlvbiBvbiB3
b3JrIHF1ZXVlIHRocmVhZCBvbmx5Ci0gICAgdm9pZCBwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygp
OworICAgIHZvaWQgcGVyZm9ybU5leHRTdG9yYWdlVGFzaygpOwogICAgIHZvaWQgZW5zdXJlUGF0
aEV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+PiBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnM7CkBA
IC0xMTksOCArMTE5LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+PiBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnM7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYmKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhh
bmRsZXJzOwogCi0gICAgRGVxdWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlVGFza3M7Ci0g
ICAgTG9jayBtX2RhdGFiYXNlVGFza011dGV4OworICAgIERlcXVlPENyb3NzVGhyZWFkVGFzaz4g
bV9zdG9yYWdlVGFza3M7CisgICAgTG9jayBtX3N0b3JhZ2VUYXNrTXV0ZXg7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDA1NTg3Mzc1NGJlNjY1NDYwM2Mx
MmJkYjc1NTkyNWYzNjE1OTcwMTcuLjRiZGVjNzNlNjRmMWFjZmUwNjU0NzdmMTRhNmVmYTBhMDBl
MDgyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBTdG9y
YWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3Rv
cmUoc3RydWN0IFdlYktpdDo6U3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNv
bW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVEYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oKQorICAgIENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
KCkKIAogICAgIEZldGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURh
dGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9tYWMvU3RvcmFnZVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vzc01hYy5tbQppbmRleCBkNmFmMTY5Y2Y1N2U0NThj
MzlkMTk0NTM2MDAwOTZmNTdiMGE3NTAxLi5jMDM4ODYwZjhmMTQzYzBkY2ZmYzkzYTUyNzY2ZDYz
NDU0NzQxZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21hYy9T
dG9yYWdlUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21h
Yy9TdG9yYWdlUHJvY2Vzc01hYy5tbQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjppbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcgogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewot
ICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpXRUJfVUlfU1RSSU5HKCIlQCBEYXRhYmFzZSBTdG9yYWdlIiwgInZpc2libGUgbmFtZSBvZiB0
aGUgZGF0YWJhc2UgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1l
LiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOworICAgIE5TU3RyaW5n
ICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RS
SU5HKCIlQCBTdG9yYWdlIiwgInZpc2libGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBwcm9jZXNzLiBU
aGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFt
ZXRlcnMudWlQcm9jZXNzTmFtZV07CiAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChD
RlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBhNTAxOWIyNTIzNjQ2NGNkNDExNWJhZDA3ZjYw
Y2FmMDg1OTFjZmMwLi5kYjQ3MDRhMDdjYjI2YjkzN2FmYWViYjg5YWMyNzk0YThiZmI2NTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTU5MCw1
ICs1OTAsNSBAQCBwaWRfdCBXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYpCiAKIHBpZF90IFdLQ29udGV4dEdldERhdGFiYXNlUHJvY2Vz
c0lkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1w
bChjb250ZXh0UmVmKS0+ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcigpOworICAgIHJldHVybiB0
b0ltcGwoY29udGV4dFJlZiktPnN0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcigpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRl
eCAyNTBmNzE2YzBjNjhiODBmNTgwNDYxNDczNGY3MmRkNThkYTZlODhlLi4wNzc5YTIwZWM4MTMy
ZWZlYjRlNDVmMDkzMDE2Zjk0OTAwOTI5MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzg1LDkgKzM4NSw5IEBAIC0g
KHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lvbiAqKWF1dG9t
YXRpb25TZXNzaW9uCiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRv
bWF0aW9uU2Vzc2lvbiA/IGF1dG9tYXRpb25TZXNzaW9uLT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxw
dHIpOwogfQogCi0tICh2b2lkKV90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MKKy0gKHZvaWQpX3Rl
cm1pbmF0ZVN0b3JhZ2VQcm9jZXNzCiB7Ci0gICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVEYXRh
YmFzZVByb2Nlc3MoKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNz
KCk7CiB9CiAKIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzCkBAIC00MDAsOSArNDAw
LDkgQEAgLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllcgogICAgIHJldHVybiBfcHJv
Y2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwogfQogCi0tIChwaWRfdClfZGF0
YWJhc2VQcm9jZXNzSWRlbnRpZmllcgorLSAocGlkX3QpX3N0b3JhZ2VQcm9jZXNzSWRlbnRpZmll
cgogewotICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIo
KTsKKyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIoKTsK
IH0KIAogLSAodm9pZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApp
bmRleCAxYTZjNmNjMTAzMGI0ZDNlMDA5OWFjNTk3YzlmMWU0ZWNiNDcxOTRmLi5kYTMxOTY5ZTEz
YTYyMzcyMmVkZGRiOTdiOTU4MDBlMTQ1NjhjNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNzIs
MTIgKzcyLDEyIEBACiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hdGlv
blNlc3Npb24gKilhdXRvbWF0aW9uU2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdo
aWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KLS0gKHZvaWQpX3Rlcm1p
bmF0ZURhdGFiYXNlUHJvY2VzczsKKy0gKHZvaWQpX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzOwog
LSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBp
ZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tIChwaWRfdClfZGF0YWJhc2VQcm9jZXNzSWRl
bnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKHBpZF90KV9zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4K
IC0gKHNpemVfdClfd2ViUHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hp
bGRQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZlZjc2ODA1YTE5Y2QxZjM1ZjBjMzIyNWZiMDdiZTEy
NzhjY2QzOTguLmE2ZTRkOGFmYjQ3YmNkYTgxY2E3NmIyZGU5MTYxN2RlNzlhNDk0NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAKQEAgLTcwLDgg
KzcwLDggQEAgdm9pZCBDaGlsZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNz
TGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE8KICAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CiAgICAgICAgIHZhcm5hbWUgPSAiTkVUV09SS19QUk9D
RVNTX0NNRF9QUkVGSVgiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOgotICAgICAgICB2YXJuYW1lID0gIkRBVEFCQVNFX1BS
T0NFU1NfQ01EX1BSRUZJWCI7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBl
OjpTdG9yYWdlOgorICAgICAgICB2YXJuYW1lID0gIlNUT1JBR0VfUFJPQ0VTU19DTURfUFJFRklY
IjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNvbnN0IGNoYXIqIHByb2Nlc3NDbWRQcmVm
aXggPSBnZXRlbnYodmFybmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCmluZGV4IDhhNTYyNDZhNzcyM2I2NTJkZmJhZTQ0MTZl
Y2QyYjVkNzUxYmFmNGIuLjY3OThmYzlmOWQwZjI5OWQ2ZTY2ZjNlMzU2ZWNjZTk5YmVmMTcwYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVu
Y2hlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUGx1Z2luNjQsCiAjZW5k
aWYKICAgICAgICAgTmV0d29yaywKLSAgICAgICAgRGF0YWJhc2UsCisgICAgICAgIFN0b3JhZ2Us
CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXVuY2hPcHRpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKaW5kZXggNmVkNDk1MDhhM2M1N2VjNWQwNTdmMTgwZGJkNjMxZTRlZTYwZDdmMS4uMjU2YmZm
M2ZhZWJjNjJjODRjNDFmNjkwMjY3NGRlMzkwOTQxMDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5j
cHAKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3Mo
KQogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6TmV0d29yazoKICAgICAg
ICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRh
YmFzZToKLSAgICAgICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQ
cm9jZXNzKCk7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpTdG9yYWdl
OgorICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdlUHJvY2Vz
cygpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IDM5MGNmZTk1MjkxNGFhMjY0N2M1YjE1
NjViYTYwODBiNTdjMDU0YmUuLjYwNTdiNGE5NDg4MDA2MDFkZWFhYzhhODYyYzc1ZmRiOTNhMGNh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9j
ZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogc2VydmljZU5hbWUoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpbwogICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCI7
CiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgogICAgICAg
ICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0gICAgY2FzZSBQcm9jZXNz
TGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZToKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6OlN0b3JhZ2U6CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktp
dC5TdG9yYWdlIjsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBjYXNlIFBy
b2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OlBsdWdpbjMyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvd3BlL1Byb2Nlc3NMYXVuY2hlcldQRS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNw
cAppbmRleCA1OTU4YWIwOWEyOTk5YTRkMGEzZTI5YTUwNTg1NzkzMmI4OWYwZjRhLi4yYzYyMzg0
N2QwZjg1NmRjNjFkZjlhY2IwMGRkMzJjNzNkOWM1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNw
cApAQCAtNjcsOCArNjcsOCBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcygp
CiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgogICAgICAg
ICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OkRhdGFi
YXNlOgotICAgICAgICBleGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZEYXRhYmFzZVBy
b2Nlc3MoKTsKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OlN0b3JhZ2U6
CisgICAgICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNz
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGU5YzA3ODVjYjc3ZmUxMTAyYTE4M2E4NzE1N2Uy
YjQ2MzVmYWRmMS4uY2YzOTZmNGIxMGY1NWQ2Yzk4MDg1YTM2ZGQyOGQ3YTgyMmY5NzJjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0yODksMTkgKzI4OSwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5k
Ym94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiB7CiAjaWYgRU5BQkxFKFNB
TkRCT1hfRVhURU5TSU9OUykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBleHRl
bnNpb25zOwogICAgIGV4dGVuc2lvbnMuYWxsb2NhdGUocGF0aHMuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIC8vIFJlYWRX
cml0ZSBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcgaGFyZCBsaW5rcyBhcyB3ZWxsIGFzIGRlbGV0
aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSwgd2hpY2ggdGhlIERhdGFiYXNlUHJvY2VzcyB3aWxsIGRv
LgorICAgICAgICAvLyBSZWFkV3JpdGUgaXMgcmVxdWlyZWQgZm9yIGNyZWF0aW5nIGhhcmQgbGlu
a3MgYXMgd2VsbCBhcyBkZWxldGluZyB0aGUgdGVtcG9yYXJ5IGZpbGUsIHdoaWNoIHRoZSBTdG9y
YWdlUHJvY2VzcyB3aWxsIGRvLgogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgZXh0ZW5zaW9uc1tpXSk7
CiAgICAgfQogCi0gICAgbV9wcm9jZXNzUG9vbC5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6R3JhbnRTYW5kYm94RXh0
ZW5zaW9uc0ZvckJsb2JzKHBhdGhzLCBleHRlbnNpb25zKSk7CisgICAgbV9wcm9jZXNzUG9vbC5z
ZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpHcmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMocGF0aHMsIGV4dGVuc2lv
bnMpKTsKICNlbmRpZgotICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2Jz
KHJlcXVlc3RJRCksIDApOworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OkRpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxv
YnMocmVxdWVzdElEKSwgMCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZTliZGM2M2Q5
OTZiZjliZmRjNDU5MjI2NGExMzg5M2ZmNzUzNzMwMC4uOTIzZGQyYTkwODczMDkyMjk1M2FkYzFj
NzU1MjA4Mzk2ODY1ZDYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25z
dCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWlu
dDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXRocyk7CisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJv
Y2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
dGhzKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9p
ZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1
bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMGM5MDJlZDdhYzBjNjlmY2ZmYzU5MjlmY2M2
YWYzZWQ3YjRmY2VjZS4uMjA4ZDg1ZmFiZTA1NzJjZmQxYmYxYzQxMjZhNWMyMmE1MTgwNDU1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjksNyArMjksNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWREZWxldGVX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgR3JhbnRTYW5kYm94RXh0ZW5z
aW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElELCBWZWN0b3I8
U3RyaW5nPiBwYXRocykKKyAgICBHcmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vz
c0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgVmVjdG9yPFN0cmluZz4gcGF0aHMpCiAKICAg
ICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJv
b2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1ZTc4YzdkMGEzNjY4
MmNmZDUxM2NmMGE3YjNmNTY1ZjJkNDUxODE3Li4yMGQyMGUwZWUzY2YzOTg0ODY1MjVhY2QxYjJj
YmVjZGE0ZDA0ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdl
L1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0
b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU3RvcmFnZVBy
b2Nlc3NQcm94eTo6flN0b3JhZ2VQcm9jZXNzUHJveHkoKQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNz
UHJveHk6OmdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNz
TGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZTsKKyAgICBsYXVuY2hPcHRpb25zLnByb2Nl
c3NUeXBlID0gUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6U3RvcmFnZTsKICAgICBDaGls
ZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhsYXVuY2hPcHRpb25zKTsKIH0KIApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgc2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQs
IGRhdGFUeXBlcywgb3JpZ2lucywgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIFN0b3JhZ2VQ
cm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJiByZXBseSkKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25u
ZWN0aW9uUmVwbGllcy5hcHBlbmQoV1RGTW92ZShyZXBseSkpOwogCkBAIC0xMjAsMTIgKzEyMCwx
MiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbigpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nl
c3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCksIDAsIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAog
dm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewot
ICAgIC8vIFRoZSBkYXRhYmFzZSBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwg
c28gc2VuZCBhbnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KKyAgICAvLyBU
aGUgc3RvcmFnZSBwcm9jZXNzIG11c3QgaGF2ZSBjcmFzaGVkIG9yIGV4aXRlZCwgc28gc2VuZCBh
bnkgcGVuZGluZyBzeW5jIHJlcGxpZXMgd2UgbWlnaHQgaGF2ZS4KICAgICB3aGlsZSAoIW1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHJlcGx5ID0g
bV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKQEAgLTE1MCwxOSArMTUw
LDE5IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
JikKICAgICAgICAgY2FsbGJhY2soKTsKICAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnNDYWxsYmFja3MuY2xlYXIoKTsKIAotICAgIC8vIFRlbGwgUHJvY2Vzc1Bvb2wgdG8g
Zm9yZ2V0IGFib3V0IHRoaXMgZGF0YWJhc2UgcHJvY2Vzcy4gVGhpcyBtYXkgY2F1c2UgdXMgdG8g
YmUgZGVsZXRlZC4KLSAgICBtX3Byb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3NDcmFzaGVkKHRo
aXMpOworICAgIC8vIFRlbGwgUHJvY2Vzc1Bvb2wgdG8gZm9yZ2V0IGFib3V0IHRoaXMgc3RvcmFn
ZSBwcm9jZXNzLiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVkLgorICAgIG1fcHJvY2Vz
c1Bvb2wtPnN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpCiB7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3Jl
YXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYg
Y29ubmVjdGlvbklkZW50aWZpZXIpCit2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENyZWF0
ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgY29u
bmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllcy5pc0VtcHR5KCkpOwogCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKKyAgICBSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNp
ZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRl
bnRpZmllcik7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICAg
ICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1QZW5kaW5nQ29ubmVjdGlv
blJlcXVlc3RzOyArK2kpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpD
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpDcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbigpLCAwKTsKICAgICAKICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQ
cm9jZXNzUHJveHkuaAppbmRleCBiYmNhNzBlMDU1YjkxZDNiZGU0NjY4MTI5NjRhMjcwNjIwZjhi
YmEzLi41YzExMDZkMzY4YjA3OGNmODFlMWEyY2FmYzc1NDExYTIwZTIwNGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHku
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YShX
ZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIFdURjo6RnVuY3Rpb248
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgIHZvaWQgZ2V0RGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCiBwcml2YXRlOgogICAg
IFN0b3JhZ2VQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKQEAgLTY5LDcgKzY5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vzc1Byb3h5TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMKLSAgICB2b2lkIGRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBJUEM6OkF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGRpZENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwogICAgIHZvaWQgZGlkRmV0Y2hX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwogICAg
IHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7CkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bv
b2w7CiAKICAgICB1bnNpZ25lZCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7Ci0gICAg
RGVxdWU8UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOworICAg
IERlcXVlPFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzOwogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+PiBt
X3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdURjo6RnVuY3Rpb248dm9pZCAoKT4+IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhQ2FsbGJh
Y2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGZlMTc2OTMzM2Q2YzA0NGY0
NTUyYTdiYzUxMmFiYjZiNzU0ZTgzM2MuLjJhNzhhNmIxYzcxMzA0ZjIyYmQ2ZDAzM2FhNGU4NzRl
ZTU5ZDdiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7Ci0gICAgRGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
KElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBEaWRDcmVhdGVTdG9y
YWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0
cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdlYnNp
dGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRDbGllbnQuY3BwCmluZGV4IDY0ZGJkZWZhZjBiYTI3MjBkZDdiZWEyZDkzOWI4MTYw
N2U2YWQ5YWYuLjQxYzBjMjU3MjdjYTQ2NjFhZmZmNWJkMWQ2MDhiNjJkNDUzYWRiOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIHZvaWQgV2ViQ29udGV4dENsaWVudDo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXZWJQ
cm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgbV9jbGllbnQubmV0d29ya1Byb2Nlc3NEaWRD
cmFzaCh0b0FQSShwcm9jZXNzUG9vbCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAK
LXZvaWQgV2ViQ29udGV4dENsaWVudDo6ZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sKQordm9pZCBXZWJDb250ZXh0Q2xpZW50OjpzdG9yYWdlUHJvY2Vz
c0RpZENyYXNoKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmgKaW5kZXggYjI1YzRkM2I5ZDRhOTJlZGUx
NjI2ODBiYWE3NDYxZDc3Y2QyMTVlMC4uMDM4ZjYzYTVjNDA4Y2Q1MzIxODAyNjBkNWFkOGVjNTRh
NGU5YmJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaApA
QCAtNDUsNyArNDUsNyBAQCBjbGFzcyBXZWJDb250ZXh0Q2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQ29udGV4dENsaWVudEJhc2U+IHsKIHB1YmxpYzoKICAgICB2b2lkIHBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlc0NoYW5nZWQoV2ViUHJvY2Vzc1Bvb2wqKTsKICAgICB2b2lkIG5ldHdv
cmtQcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bvb2wqKTsKLSAgICB2b2lkIGRhdGFiYXNlUHJv
Y2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29sKik7CisgICAgdm9pZCBzdG9yYWdlUHJvY2Vzc0Rp
ZENyYXNoKFdlYlByb2Nlc3NQb29sKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmMjhmMDk5Nzg2
MTBjNTFkMDAzMGIxOWQ2ZjYyOWMyYWIyNTQ1NjYyLi44M2YzYTY3M2Y3MjRiNmZiOGI5OWIxNWQx
MTYzZmQwNmQwOTQzMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OgogICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKHJl
cGx5KSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2Vzc0Fu
ZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZSogcmVsZXZhbnREYXRhU3RvcmUpCiB7CiAgICAgLy8gKioqKioq
KioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0
dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGlu
ZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCiAgICAg
Ly8gKioqKioqKioqCiAKLSAgICBpZiAoIW1fZGF0YWJhc2VQcm9jZXNzKSB7Ci0gICAgICAgIG1f
ZGF0YWJhc2VQcm9jZXNzID0gU3RvcmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOworICAg
IGlmICghbV9zdG9yYWdlUHJvY2VzcykgeworICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzID0gU3Rv
cmFnZVByb2Nlc3NQcm94eTo6Y3JlYXRlKHRoaXMpOwogCiAgICAgICAgIFN0b3JhZ2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCkBAIC01MzMsMzIgKzUzMywzMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplbnN1cmVEYXRh
YmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUqCiAjZW5kaWYK
IAogICAgICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwor
ICAgICAgICBtX3N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6
SW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUocGFyYW1ldGVycyksIDApOwogICAgIH0KIAogICAg
IGlmICghcmVsZXZhbnREYXRhU3RvcmUgfHwgcmVsZXZhbnREYXRhU3RvcmUgPT0gJndlYnNpdGVE
YXRhU3RvcmUoKS53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZGF0YWJhc2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6SW5pdGlhbGl6
ZVdlYnNpdGVEYXRhU3RvcmUocmVsZXZhbnREYXRhU3RvcmUtPmRhdGFiYXNlUHJvY2Vzc1BhcmFt
ZXRlcnMoKSksIDApOworICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShyZWxldmFudERhdGFTdG9yZS0+
c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKIHsKLSAgICBlbnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJz
aXRlRGF0YVN0b3JlKG51bGxwdHIpOworICAgIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0
ZURhdGFTdG9yZShudWxscHRyKTsKIAotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5nZXREYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKKyAgICBtX3N0b3JhZ2VQcm9jZXNz
LT5nZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpkYXRhYmFzZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJv
eHkqIGRhdGFiYXNlUHJvY2Vzc1Byb3h5KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVBy
b2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqIHN0b3JhZ2VQcm9jZXNzUHJveHkpCiB7
Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VQcm9jZXNzKTsKLSAgICBBU1NFUlQoZGF0YWJhc2VQcm9j
ZXNzUHJveHkgPT0gbV9kYXRhYmFzZVByb2Nlc3MuZ2V0KCkpOworICAgIEFTU0VSVChtX3N0b3Jh
Z2VQcm9jZXNzKTsKKyAgICBBU1NFUlQoc3RvcmFnZVByb2Nlc3NQcm94eSA9PSBtX3N0b3JhZ2VQ
cm9jZXNzLmdldCgpKTsKIAogICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVu
dHMudmFsdWVzKCkpCi0gICAgICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZShkYXRhYmFz
ZVByb2Nlc3NQcm94eSk7CisgICAgICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZShzdG9y
YWdlUHJvY2Vzc1Byb3h5KTsKIAotICAgIG1fY2xpZW50LmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNo
KHRoaXMpOwotICAgIG1fZGF0YWJhc2VQcm9jZXNzID0gbnVsbHB0cjsKKyAgICBtX2NsaWVudC5z
dG9yYWdlUHJvY2Vzc0RpZENyYXNoKHRoaXMpOworICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBudWxs
cHRyOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93
c2luZygpCkBAIC05NTksOSArOTU5LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUFkZGVk
VG9Qcm9jZXNzKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAgICAgcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6QWRkV2Vic2l0ZURhdGFTdG9yZShwYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkpLCAwKTsKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQotICAgICAgICBhdXRvIGRhdGFiYXNlUGFyYW1ldGVycyA9IHBhZ2Uud2Vic2l0ZURhdGFT
dG9yZSgpLmRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMoKTsKLSAgICAgICAgaWYgKCFkYXRhYmFz
ZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShkYXRhYmFzZVBhcmFt
ZXRlcnMpKTsKKyAgICAgICAgYXV0byBzdG9yYWdlUGFyYW1ldGVycyA9IHBhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpLnN0b3JhZ2VQcm9jZXNzUGFyYW1ldGVycygpOworICAgICAgICBpZiAoIXN0b3Jh
Z2VQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBzZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShzdG9yYWdlUGFyYW1l
dGVycykpOwogI2VuZGlmCiAgICAgfQogfQpAQCAtMTA3MywxMiArMTA3MywxMiBAQCBwaWRfdCBX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCkKICAgICByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KIAotcGlkX3QgV2ViUHJvY2Vz
c1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIoKQorcGlkX3QgV2ViUHJvY2Vzc1Bvb2w6
OnN0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcigpCiB7Ci0gICAgaWYgKCFtX2RhdGFiYXNlUHJvY2Vz
cykKKyAgICBpZiAoIW1fc3RvcmFnZVByb2Nlc3MpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIG1fZGF0YWJhc2VQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOworICAgIHJldHVy
biBtX3N0b3JhZ2VQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGFsd2F5c1Vz
ZUNvbXBsZXhUZXh0KQpAQCAtMTMwMiwxMyArMTMwMiwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKSwgMCk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZURhdGFiYXNlUHJvY2VzcygpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcygpCiB7Ci0gICAgaWYg
KCFtX2RhdGFiYXNlUHJvY2VzcykKKyAgICBpZiAoIW1fc3RvcmFnZVByb2Nlc3MpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT50ZXJtaW5hdGUoKTsKLSAgICBtX2Rh
dGFiYXNlUHJvY2VzcyA9IG51bGxwdHI7CisgICAgbV9zdG9yYWdlUHJvY2Vzcy0+dGVybWluYXRl
KCk7CisgICAgbV9zdG9yYWdlUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IGRmOWVlMmEzNmEyMzU5YWNmOWI3Y2Q1ZjU0MmNmMjI5ZjQy
ZDc1MjQuLmQ4Y2E2MzRlMWRhYTJkYzA1NjA3N2I3NzM3NTI2MDk4YzhlODE3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTYwLDggKzE2MCw4IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiB2b2lkIHNlbmRTeW5j
VG9OZXR3b3JraW5nUHJvY2VzcyhUJiYgbWVzc2FnZSwgVSYmIHJlcGx5KTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5l
Y2Vzc2FyeShUJiYgbWVzc2FnZSk7CiAKLSAgICAvLyBTZW5kcyB0aGUgbWVzc2FnZSB0byBXZWJQ
cm9jZXNzIG9yIERhdGFiYXNlUHJvY2VzcyBhcyBhcHByb3BvcmlhdGUgZm9yIGN1cnJlbnQgcHJv
Y2VzcyBtb2RlbC4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0RhdGFiYXNl
UHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2UpOworICAgIC8vIFNlbmRz
IHRoZSBtZXNzYWdlIHRvIFdlYlByb2Nlc3Mgb3IgU3RvcmFnZVByb2Nlc3MgYXMgYXBwcm9wb3Jp
YXRlIGZvciBjdXJyZW50IHByb2Nlc3MgbW9kZWwuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBzZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoVCYmIG1lc3Nh
Z2UpOwogCiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94
eSopOwogCkBAIC0xOTksNyArMTk5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBwaWRfdCBu
ZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKLSAgICBwaWRfdCBkYXRhYmFzZVByb2Nlc3NJZGVu
dGlmaWVyKCk7CisgICAgcGlkX3Qgc3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyKCk7CiAKICAgICB2
b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0
U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sKTsK
IAogICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50aWFscygpOwotICAgIHZvaWQgdGVybWluYXRl
RGF0YWJhc2VQcm9jZXNzKCk7CisgICAgdm9pZCB0ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcygpOwog
ICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgc3luY05ldHdv
cmtQcm9jZXNzQ29va2llcygpOwpAQCAtMzEyLDEwICszMTIsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKIAot
ICAgIHZvaWQgZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7Ci0gICAgU3RvcmFnZVByb2Nlc3NQcm94eSog
ZGF0YWJhc2VQcm9jZXNzKCkgeyByZXR1cm4gbV9kYXRhYmFzZVByb2Nlc3MuZ2V0KCk7IH0KLSAg
ICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7
Ci0gICAgdm9pZCBkYXRhYmFzZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsK
KyAgICB2b2lkIGVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSk7CisgICAgU3RvcmFnZVByb2Nlc3NQcm94eSog
c3RvcmFnZVByb2Nlc3MoKSB7IHJldHVybiBtX3N0b3JhZ2VQcm9jZXNzLmdldCgpOyB9CisgICAg
dm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIHN0b3JhZ2VQcm9jZXNzQ3Jhc2hlZChTdG9yYWdlUHJvY2Vzc1Byb3h5Kik7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoKSBj
b25zdDsKQEAgLTU0OSw3ICs1NDksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBib29sIG1fZGlkTmV0d29ya1Byb2Nlc3ND
cmFzaDsKICAgICBSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2VzczsK
LSAgICBSZWZQdHI8U3RvcmFnZVByb2Nlc3NQcm94eT4gbV9kYXRhYmFzZVByb2Nlc3M7CisgICAg
UmVmUHRyPFN0b3JhZ2VQcm9jZXNzUHJveHk+IG1fc3RvcmFnZVByb2Nlc3M7CiAKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPj4gbV9kaWN0aW9uYXJ5Q2Fs
bGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4+
IG1fc3RhdGlzdGljc1JlcXVlc3RzOwpAQCAtNjI3LDEwICs2MjcsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQm
JiBtZXNzYWdlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2Fn
ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKIHsKLSAgICBlbnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRX
ZWJzaXRlRGF0YVN0b3JlKG51bGxwdHIpOwotICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5zZW5kKHN0
ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7CisgICAgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRX
ZWJzaXRlRGF0YVN0b3JlKG51bGxwdHIpOworICAgIG1fc3RvcmFnZVByb2Nlc3MtPnNlbmQoc3Rk
Ojpmb3J3YXJkPFQ+KG1lc3NhZ2UpLCAwKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMxNjgzODQ3
NDg1MjFiMTQ0YTE0MjM0YzUxYmE4NmE2ZGRlOWIwYWMuLjcwODVjZTkyNDA2YTY2YmIxNTQ0YTlh
MzBhOTQ2MDE2YmUzMjc3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNTczLDkgKzU3Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6CiAg
ICAgbV9wcm9jZXNzUG9vbC0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVw
bHkpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5l
Y3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpn
ZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewot
ICAgIG1fcHJvY2Vzc1Bvb2wtPmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShy
ZXBseSkpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihX
VEZNb3ZlKHJlcGx5KSk7CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDhhZmViZjNmOTdiYzk5NjQ2MTNjZWZh
ZTA0NGRiNTQyNjBlNGFjMWMuLjFlZTQ4ZjdjYjJkYThlYjM3NTJiYzAwNzhjNTM1NTRjMGFiOTZl
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMTQs
NyArMjE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogI2VuZGlm
CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYm
KTsKLSAgICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eT4mJik7CisgICAgdm9pZCBnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiYmKTsKIAogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVidWdnZWQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDFmZjc2NTcxZWZiMDhhYTQxODEwYTJmMjU2ZWY5MGM2MmMwNDE3OTMuLmFkNjlj
NTJmNDAwYzg2NWYzYTQ5ZWJmMGZmZGJkMmM1MmVkZWMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbih1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pIC0+
IChJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVkCiAjZW5kaWYKICAgICBHZXROZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5
ZWQKLSAgICBHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCkgLT4gKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCisgICAgR2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKCkgLT4gKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCiAgICAg
UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkKICAgICBEaWRDYW5jZWxQcm9jZXNzU3VzcGVuc2lvbigp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMzAwYjViZmU2ZTgxYzExZDFhZDhkNzkzMmZmOGMzMTNm
NTQ5ZDkxYy4uOTFjMDNlNjBkOGIyNjQzMWJkMTgxYTgyYjhmMWNmOTNjZGUxZGZlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKQEAgLTQzMywxMCArNDMzLDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBP
CiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERC
RGF0YWJhc2VzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1
cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKHRoaXMpOworICAgICAgICAgICAg
cHJvY2Vzc1Bvb2wtPmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlz
KTsKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZmV0Y2hXZWJz
aXRlRGF0YShtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9j
ZXNzUG9vbF0oV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQ
b29sLT5zdG9yYWdlUHJvY2VzcygpLT5mZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRh
VHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHByb2Nlc3NQb29sXShXZWJzaXRlRGF0YSB3ZWJz
aXRlRGF0YSkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVu
ZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CkBAIC03MjcsMTAgKzcyNywxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogCiAg
ICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9v
bCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlRGF0
YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlzKTsKKyAgICAgICAgICAgIHByb2Nl
c3NQb29sLT5lbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7CiAK
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0g
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZGF0YWJhc2VQcm9jZXNzKCktPmRlbGV0ZVdlYnNpdGVE
YXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IsIHByb2Nlc3NQb29sXSB7CisgICAgICAgICAgICBwcm9jZXNzUG9vbC0+c3RvcmFnZVBy
b2Nlc3MoKS0+ZGVsZXRlV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZp
ZWRTaW5jZSwgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKICAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTEwMDQsMTAgKzEwMDQsMTAgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cywgY29uc3QgVmUKIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgcHJvY2Vz
c1Bvb2wtPmVuc3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7Cisg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0
YVN0b3JlKHRoaXMpOwogCiAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzcygp
LT5kZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3Jp
Z2lucywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdIHsKKyAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT5zdG9yYWdlUHJvY2VzcygpLT5kZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
bV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJv
Y2Vzc1Bvb2xdIHsKICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAgLTEzMTUsNyAr
MTMxNSw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvCiAgICAgICAgIHByb2Nlc3NQb29sLT5z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh0cnVlKTsKIH0KIAotU3RvcmFnZVByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFy
YW1ldGVycygpCitTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpzdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKQogewogICAgIHJlc29sdmVEaXJlY3Rvcmll
c0lmTmVjZXNzYXJ5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBiNTQ5MjJjZTI5OGQzZjBiNjNlMjk1
NjYyYjU4OGIyODQwMzIzZWE2Li40Mjk3NDA3MDc5YTc1YjVhN2VhYmVkNzU3Y2YyZDk4NDRiMTZm
ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmKSBjb25zdDsKIAogICAgIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMoKTsKLSAgICBTdG9yYWdlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyBkYXRhYmFzZVByb2Nlc3NQYXJhbWV0ZXJzKCk7CisgICAgU3Rv
cmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgc3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCk7
CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBwZW5kaW5nQ29va2llcygpIGNvbnN0Owog
ICAgIHZvaWQgYWRkUGVuZGluZ0Nvb2tpZShjb25zdCBXZWJDb3JlOjpDb29raWUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDU0YzJkMjg5
MTA1MWYwMzIyMjY5ZDU1YWU0ZjRjNTAzNTVkYzMzZjEuLjRkNzZmYmI0M2UwY2RhZDkyYjhkN2Vm
MjI4NTE0ODE0ODUyY2U0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
On5XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIoKQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQogewotICAgIHJldHVy
biAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKTsKIH0KIAogSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29y
ZUNvbm5lY3Rpb25Ub1NlcnZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5oCmluZGV4IGQxNjNjMDkwYmZlY2YyMDIxM2EwODViY2NiN2Y5ZWU1MDgxY2I2MDMu
LmM3OWUwNDFkNGYxOGEzMjA4YWQxYWYyODE4MThmMTU0M2Q0OGVmMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50
ZWQ8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPjo6ZGVyZWYoKTsgfQogCi0gICAgLy8gTWVzc2Fn
ZXMgcmVjZWl2ZWQgZnJvbSBEYXRhYmFzZVByb2Nlc3MKKyAgICAvLyBNZXNzYWdlcyByZWNlaXZl
ZCBmcm9tIFN0b3JhZ2VQcm9jZXNzCiAgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3Qg
V2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihj
b25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCmluZGV4IDVj
ZjdmZDJiMzI1ODEzMTkwNTk2MzI1NjY2MzYyNTI3NWIzMThjYTYuLjJiODdiYWY5NGU3YmQyNTFj
MDYyMDQwYTg3MWNlMjIzYjliZmJkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcApAQCAtNzksOCAr
NzksOCBAQCBXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViRGF0
YWJhc2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvUwogICAgICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+Y29ubmVjdGlvblRvU2VydmVyKCk7CiAgICAgfQogCi0gICAgQVNTRVJU
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigp
KTsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKCktPmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklE
KS5jb3JlQ29ubmVjdGlvblRvU2VydmVyKCk7CisgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCkpOworICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5pZGJD
b25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkuY29yZUNvbm5lY3Rpb25Ub1Nl
cnZlcigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCAwMDEyMTg1M2VmZDMyOGE5ZTUzZjJhZmU4M2MzNzY2MWM5YzUyZWNkLi42YjI3ZDc4MWQy
ZDE5YmUyNGI0NzQwM2NlNGJiZDY4ZjFmZWExODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC0zNSwxNyArMzUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246
OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogICAgIDogbV9jb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpKQog
ewogICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwogfQogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246On5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKQorV2ViVG9TdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiB9
CiAKLXZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3Zv
aWQgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGkKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKIHsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBmb3IgKGF1dG8m
IGNvbm5lY3Rpb24gOiBtX3dlYklEQkNvbm5lY3Rpb25zQnlJZGVudGlmaWVyLnZhbHVlcygpKQpA
QCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgbV93ZWJJREJDb25uZWN0
aW9uc0J5U2Vzc2lvbi5jbGVhcigpOwogI2VuZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQodGhpcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQo
dGhpcyk7CiB9CiAKLXZvaWQgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2Ug
bWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCit2
b2lkIFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpCiB7CiB9CiAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKLVdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgV2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKGNv
bnN0IFNlc3Npb25JRCYgc2Vzc2lvbklEKQorV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lv
bihjb25zdCBTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fd2Vi
SURCQ29ubmVjdGlvbnNCeVNlc3Npb24uYWRkKHNlc3Npb25JRCwgbnVsbHB0cik7CiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRl
eCAwZjFjYTkyNGFmZjI2OTdlOTM5N2Q2YThiMjY5ZjgzNjUwZjYwMTZlLi4yNDI2ZTZjYWZiMjBm
MzViMjU3NGNmMjc4Y2I4NTgwOTVmNmE4YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uLmgKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+LCBwdWJsaWMgSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xhc3MgV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJUb1N0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbj4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihjb25u
ZWN0aW9uSWRlbnRpZmllcikpOwogICAgIH0KLSAgICB+V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uKCk7CisgICAgfldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgCiAg
ICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uLmdl
dCgpOyB9CiAKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRp
Zmllcik7CisgICAgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkMDEzMGZk
YzM4NzE2Y2JjOTAzMjk4OTE5YzcxN2NhNzA1MDdjMzQ5Li5kNDAwYTcxOTM0YmNiZmI2MWRiZDVl
N2JiNDNlN2UxNmUxZTk1ZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xMTM2LDMxICsxMTM2LDMwIEBAIFdlYkxvYWRlclN0cmF0ZWd5JiBXZWJQcm9jZXNz
Ojp3ZWJMb2FkZXJTdHJhdGVneSgpCiAgICAgcmV0dXJuIG1fd2ViTG9hZGVyU3RyYXRlZ3k7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzczo6d2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uQ2xvc2Vk
KFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjdGlvbikKK3ZvaWQgV2ViUHJv
Y2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNTRVJUKG1fd2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICBBU1NFUlQobV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24gPT0gY29ubmVjdGlvbik7CisgICAgQVNTRVJUKG1fd2ViVG9TdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24pOworICAgIEFTU0VSVChtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
ID09IGNvbm5lY3Rpb24pOwogCi0gICAgbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24g
PSBudWxscHRyOworICAgIG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRy
OwogfQogCi1XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIFdlYlByb2Nlc3M6OndlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
biogV2ViUHJvY2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIGlm
ICghbV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pCi0gICAgICAgIGVuc3VyZVdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGlmICghbV93ZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbikKKyAgICAgICAgZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rp
b24oKTsKIAotICAgIHJldHVybiBtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5nZXQo
KTsKKyAgICByZXR1cm4gbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5nZXQoKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24o
KQordm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigp
CiB7Ci0gICAgaWYgKG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKQorICAgIGlmICht
X3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBJ
UEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyOwogCi0gICAgaWYgKCFw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCksCi0gICAgICAgIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQorICAgIGlmICghcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKCksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkp
CiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQpAQCAtMTE3
Miw3ICsxMTcxLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24oKQogI2VuZGlmCiAgICAgaWYgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmll
cklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3dl
YlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiA9IFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBtX3dlYlRvU3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uID0gV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShj
b25uZWN0aW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRB
Y2Nlc3NpYmlsaXR5KGJvb2wgZmxhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDYwZDNlZDQwYWJjYTZmZjJhZDQzYTEyNGJlOWIzMWRkZDU5OThkMzEuLmUwYmY4NmE2
MzJkZjc4ZGY1Y2ZkN2NhM2RkZGQzNmE0YzkxYzUxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBXZWJMb2FkZXJTdHJhdGVneTsK
IGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJQYWdlR3JvdXBQcm94eTsKIGNsYXNzIFdlYlByb2Nl
c3NTdXBwbGVtZW50OwotY2xhc3MgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOworY2xh
c3MgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRh
VHlwZTsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlBhZ2VH
cm91cERhdGE7CkBAIC0xNjQsOCArMTY0LDggQEAgcHVibGljOgogICAgIExpYldlYlJUQ05ldHdv
cmsmIGxpYldlYlJUQ05ldHdvcmsoKTsKICNlbmRpZgogCi0gICAgdm9pZCB3ZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKik7
Ci0gICAgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKiB3ZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uQ2xv
c2VkKFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKik7CisgICAgV2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24qIHdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwogCkBAIC0zODMsOCArMzgzLDggQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PiBtX2F1
dG9tYXRpb25TZXNzaW9uUHJveHk7CiAKLSAgICB2b2lkIGVuc3VyZVdlYlRvRGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbigpOwotICAgIFJlZlB0cjxXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24+IG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOworICAgIHZvaWQgZW5zdXJlV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBSZWZQdHI8V2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24+IG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb247CiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyPiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyY2RjZjQzYTI5ODY1
MTUxNWJjOTg4YWJmYTczOGNhZmM1ZjRjMTZmLi5mZjUzM2M5ODhkNmEwZTg3ZTJlZmZkNzY5ODJj
ZTNkNDA3ZmJkOGExIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDctMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFBhcnQgMiBvZjogUmVuYW1lIERhdGFiYXNlUHJvY2Vz
cyB0byBTdG9yYWdlUHJvY2Vzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JREJEZWxldGVSZWNv
dmVyeS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JREJJ
bmRleFVwZ3JhZGVUb1YyLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL0luZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW06CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQlBlcnNpc3Rl
bmNlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToK
KwogMjAxNy0wNy0yNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGFiaWxpdHkgdG8gb25seSBydW4gc3BlY2lmaWMgdGVzdHMgaW4gcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvSURCRGVsZXRlUmVjb3ZlcnkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9JREJEZWxldGVSZWNvdmVyeS5tbQppbmRleCA1OWE0NDY1NjAzMzE2YjQwNGNm
ODZlOWYxODY2MmY5MGE3YzFmZDQwLi5kMWZmZjJmODcwNGEzYjg2NWUyZDQ4ZDM4NmViOTY3MTcx
YTVlMGNjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9JREJEZWxldGVSZWNvdmVyeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9JREJEZWxldGVSZWNvdmVyeS5tbQpAQCAtNTksNyArNTksNyBAQCBURVNUKElu
ZGV4ZWREQiwgRGVsZXRlUmVjb3ZlcnkpCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVy
Il07CiAKLSAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfdGVybWluYXRlRGF0
YWJhc2VQcm9jZXNzXTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfdGVy
bWluYXRlU3RvcmFnZVByb2Nlc3NdOwogCiAgICAgLy8gQ29weSB0aGUgaW5jb25zaXN0ZW50IGRh
dGFiYXNlIGZpbGVzIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkKICAgICBOU1VSTCAqdXJsMSA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJREJEZWxldGVSZWNvdmVy
eSIgd2l0aEV4dGVuc2lvbjpAInNxbGl0ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9JREJJbmRleFVwZ3JhZGVUb1YyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvSURCSW5kZXhVcGdyYWRlVG9WMi5tbQppbmRleCAzNmM0NzlkNzU1ZTU1
OGFmODg0ZjJhNTFkYTEzNDE0N2E4NzYxYzAwLi5lMDg1YmVjODA3NjNhZTc0OTc1ZTc1Njg2NDMx
YzFkOGI4NjMxNmFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9JREJJbmRleFVwZ3JhZGVUb1YyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL0lEQkluZGV4VXBncmFkZVRvVjIubW0KQEAgLTU5LDcgKzU5LDcg
QEAgVEVTVChJbmRleGVkREIsIEluZGV4VXBncmFkZVRvVjIpCiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpA
InRlc3RIYW5kbGVyIl07CiAKLSAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBf
dGVybWluYXRlRGF0YWJhc2VQcm9jZXNzXTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9j
ZXNzUG9vbCBfdGVybWluYXRlU3RvcmFnZVByb2Nlc3NdOwogCiAgICAgLy8gQ29weSB0aGUgaW5j
b25zaXN0ZW50IGRhdGFiYXNlIGZpbGVzIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkKICAgICBO
U1VSTCAqdXJsMSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRl
eFVwZ3JhZGUiIHdpdGhFeHRlbnNpb246QCJzcWxpdGUzIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tp
bGwubW0KaW5kZXggNzkwNGZhYzY2OGNlYmJhNmUzYjE4Y2RkNWRhZDI3ODFlYzE2M2RlZC4uMzkx
YzFjNGU5YTZhZDBhMjlkYmU3MGMxMzc4NDUxY2JmYzJmMDI1OCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNz
S2lsbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRl
eGVkREJEYXRhYmFzZVByb2Nlc3NLaWxsLm1tCkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoSW5kZXhl
ZERCLCBEYXRhYmFzZVByb2Nlc3NLaWxsKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAgICAgICAgIGlmICgha2lsbGVkREJQcm9jZXNz
ICYmIG9wZW5SZXF1ZXN0VXBncmFkZU5lZWRlZCkgewogICAgICAgICAgICAga2lsbGVkREJQcm9j
ZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29s
IF90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3NdOworICAgICAgICAgICAgW2NvbmZpZ3VyYXRpb24u
Z2V0KCkucHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzXTsKICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tCmluZGV4IDQ4MGM0MWQ3ZTAzNTUx
YjZlMzkzNGI5MDBjZDI2MjU4NDY1OTcyZjIuLjFmNzA5ZGU4YzQ3ZTBiOTEzYjg4NzI4MTQ1ZGU1
NGEzNzVmZTc2OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL0luZGV4ZWREQk11bHRpUHJvY2Vzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW0KQEAgLTcxLDcgKzcx
LDcgQEAgVEVTVChJbmRleGVkREIsIEluZGV4ZWREQk11bHRpUHJvY2VzcykKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKIAotICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nl
c3NQb29sIF90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3NdOworICAgIFtjb25maWd1cmF0aW9uLmdl
dCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc107CiAKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQppbmRleCBjZDFiYzk1
ZDQ5NjQzZDFmNDRlM2VkZjI4YzBmMTRmNzdiNzVhZjE4Li5kYTZmOTI0ZDE1Yzk0MDUxOWQzNDlk
ZGQ1ODQ0OWUzZTk3OGY4NDU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5jZS5tbQpAQCAtNzUs
OCArNzUsOCBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCUGVyc2lzdGVuY2UpCiAgICAgLy8g
RGl0Y2ggdGhpcyB3ZWIgdmlldyAoZGl0Y2hpbmcgaXRzIHdlYiBwcm9jZXNzKQogICAgIHdlYlZp
ZXcgPSBuaWw7CiAKLSAgICAvLyBUZXJtaW5hdGUgdGhlIGRhdGFiYXNlIHByb2Nlc3MKLSAgICBb
Y29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfdGVybWluYXRlRGF0YWJhc2VQcm9jZXNz
XTsKKyAgICAvLyBUZXJtaW5hdGUgdGhlIHN0b3JhZ2UgcHJvY2VzcworICAgIFtjb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc107CiAKICAgICAv
LyBNYWtlIGEgbmV3IHdlYiB2aWV3IHRvIGZpbmlzaCB0aGUgdGVzdAogICAgIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MubW0KaW5kZXggN2Y3MjEwOTFkOTVlZmEzNzE3YWIxMzc4YTFlZjJl
YzFlODg5OTRhYi4uYzgxNzA3YjQ2NzViZjJmYmU2NzE1N2UyNmM4ZWNkZjgyMWI1NTA3MiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCkBAIC0xMjMsNyArMTIzLDcgQEAgVEVTVChS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBDaGlsZFByb2Nlc3Nlc05vdExhdW5jaGVkKQogICAgIC8v
IEVuc3VyZSB0aGUgc2hhcmVkIHByb2Nlc3MgcG9vbCBleGlzdHMgc28gdGhlIGRhdGEgc3RvcmUg
b3BlcmF0aW9ucyB3ZSdyZSBhYm91dCB0byBkbyB3b3JrIHdpdGggaXQuCiAgICAgV0tQcm9jZXNz
UG9vbCAqc2hhcmVkUHJvY2Vzc1Bvb2wgPSBbV0tQcm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bv
b2xdOwogCi0gICAgRVhQRUNUX0VRKChwaWRfdCkwLCBbc2hhcmVkUHJvY2Vzc1Bvb2wgX2RhdGFi
YXNlUHJvY2Vzc0lkZW50aWZpZXJdKTsKKyAgICBFWFBFQ1RfRVEoKHBpZF90KTAsIFtzaGFyZWRQ
cm9jZXNzUG9vbCBfc3RvcmFnZVByb2Nlc3NJZGVudGlmaWVyXSk7CiAgICAgRVhQRUNUX0VRKChz
aXplX3QpMCwgW3NoYXJlZFByb2Nlc3NQb29sIF9wbHVnaW5Qcm9jZXNzQ291bnRdKTsKIAogICAg
IGF1dG8gKmRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBDaGlsZFBy
b2Nlc3Nlc05vdExhdW5jaGVkKQogCiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnRhcmdldFVSTC5wYXRoXSk7CiAKLSAgICBF
WFBFQ1RfRVEoKHBpZF90KTAsIFtzaGFyZWRQcm9jZXNzUG9vbCBfZGF0YWJhc2VQcm9jZXNzSWRl
bnRpZmllcl0pOworICAgIEVYUEVDVF9FUSgocGlkX3QpMCwgW3NoYXJlZFByb2Nlc3NQb29sIF9z
dG9yYWdlUHJvY2Vzc0lkZW50aWZpZXJdKTsKICAgICBFWFBFQ1RfRVEoKHNpemVfdCkwLCBbc2hh
cmVkUHJvY2Vzc1Bvb2wgX3BsdWdpblByb2Nlc3NDb3VudF0pOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAubW0KaW5kZXggZWI0MDk3ZjM1ZmNiODI0ODVjYWQ3Nzk3YjY4NjVh
ODYxOWNhZTdhNS4uYzVjOWMzMTNkYTE2NjAzM2RiYWYzNzRjYzcyZmNiNDhkMDAxZDZjOCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2ViUHJvY2Vz
c0tpbGxJREJDbGVhbnVwLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbQpAQCAtNzIsNyArNzIsNyBAQCBURVNU
KEluZGV4ZWREQiwgV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwKQogICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6
QCJ0ZXN0SGFuZGxlciJdOwogCi0gICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wg
X3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2Vzc107CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJv
Y2Vzc1Bvb2wgX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzXTsKIAogICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXgg
MGIzY2U5YTdkZTZhNDg2NDFkMDg5NWE1NjRlNmU0NzA4ZGMxYzY4OS4uOWIxYmExZTlmY2Y2Y2Yx
MGZlZWUwYTdkYTdkM2Q2OGE0ZDI0MTM1MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQpAQCAtMTIxLDcgKzEyMSw3IEBAIFRFU1QoV2ViS2l0MiwgV2Vic2l0ZURh
dGFTdG9yZUN1c3RvbVBhdGhzKQogICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vz
c1Bvb2xdIF9zeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzXTsKIAogICAgIC8vIEZvcmNpYmx5IHNo
dXQgZG93biBldmVyeXRoaW5nIG9mIFdlYktpdCB0aGF0IHdlIGNhbi4KLSAgICBbW1t3ZWJWaWV3
IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfdGVybWluYXRlRGF0YWJhc2VQcm9jZXNzXTsK
KyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfdGVybWluYXRlU3Rv
cmFnZVByb2Nlc3NdOwogICAgIGF1dG8gcGlkID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlm
aWVyXTsKICAgICBpZiAocGlkKQogICAgICAgICBraWxsKHBpZCwgU0lHS0lMTCk7CkBAIC0xNTks
NyArMTU5LDcgQEAgVEVTVChXZWJLaXQyLCBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMpCiAK
ICAgICAvLyBEYXRhIHN0b3JlcyBjYW4ndCBkZWxldGUgYW55dGhpbmcgdW5sZXNzIGEgV0tQcm9j
ZXNzUG9vbCBleGlzdHMsIHNvIG1ha2Ugc3VyZSB0aGUgc2hhcmVkIGRhdGEgc3RvcmUgZXhpc3Rz
LgogICAgIGF1dG8gKnByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQ
b29sXTsKLSAgICBbcHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2Vzc107CisgICAg
W3Byb2Nlc3NQb29sIF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc107CiAgICAgUmV0YWluUHRyPFdL
V2Vic2l0ZURhdGFTdG9yZT4gZGF0YVN0b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldOwogICAgIFJldGFpblB0cjxOU1NldD4gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0czpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmls
XSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316863</attachid>
            <date>2017-08-01 09:40:25 -0700</date>
            <delta_ts>2017-08-01 11:18:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174880-20170801094024.patch</filename>
            <type>text/plain</type>
            <size>77153</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcxNTJhODRjMWQ3NmY0OGNi
Njg2YWFhZTM1OTZlY2Q5NTRhZDA2ZDkuLmM5NWM3YmZiZmVhMTBjZjlmZWMwOTVhMjI4NDQ5NjYw
NmMyNzU3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTU2IEBACiAyMDE3LTA4LTAxICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBQYXJ0IDIgb2Y6IFJlbmFtZSBE
YXRhYmFzZVByb2Nlc3MgdG8gU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmR5IEVzdGVzLgorCisgICAgICAgIFJlbmFtZSBzb21lIG1vcmUgdmFyaWFibGVzLCBjbGFzc2Vz
LCBldGMuIHRvIHJlZmxlY3QgdGhlIGNoYW5nZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToK
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQ
cm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGlkR3Jh
bnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVBy
b2Nlc3NGb3JCbG9icyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIFNoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFi
bGVQYXRoT2ZTdG9yYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmV4ZWN1dGFibGVQYXRo
T2ZEYXRhYmFzZVByb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC93cGUvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoV1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhP
ZlN0b3JhZ2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6ZXhlY3V0YWJsZVBhdGhPZkRhdGFi
YXNlUHJvY2Vzcyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50OjpwdXRPckFkZCk6CisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpp
bml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9j
ZXNzOjpwb3N0U3RvcmFnZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6
cGVyZm9ybU5leHRTdG9yYWdlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNz
OjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5leHREYXRhYmFzZVRhc2spOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZSk6
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdL
Q29udGV4dEdldERhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc10pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9z
dG9yYWdlUHJvY2Vzc0lkZW50aWZpZXJdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfdGVy
bWluYXRlRGF0YWJhc2VQcm9jZXNzXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX2RhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nl
c3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNo
ZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Q
cm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6
OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXJ2aWNlTmFtZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQ
cm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
cmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJv
Y2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
UHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlRGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dENsaWVudDo6c3Rv
cmFnZVByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRDbGllbnQ6
OmRhdGFiYXNlUHJvY2Vzc0RpZENyYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dENsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9j
ZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c3RvcmFnZVByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnBhZ2VBZGRlZFRvUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dGVybWluYXRlU3RvcmFnZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXREYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvU3RvcmFnZVByb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0RhdGFi
YXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGF0YWJhc2VQcm9jZXNzUGFyYW1ldGVycyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKworICAgICAgICAqIFdl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFi
YXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJh
c2VQcm92aWRlcjo6aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbik6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6V2ViVG9TdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbjo6fldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvU3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpXZWJUb0RhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFi
YXNlUHJvY2Vzc0Nvbm5lY3Rpb246On5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVNZXNzYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uOjpjb25uZWN0aW9uKTogRGVsZXRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvU3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6d2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpl
bnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZVdlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmg6CisKKzIwMTctMDgtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCiAgICAgICAgIFBhcnQgMSBvZjogUmVuYW1lIERhdGFiYXNlUHJvY2VzcyB0byBT
dG9yYWdlUHJvY2Vzcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NDg3OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDM0OWJjNDdl
ZmEyMzZkZWU1M2M4YzcxZWEyM2JlNzQzYzFhNTUwNzkuLjVmODI5OTJhZjdkNTYxYzhmZDdjNzY4
NGY3MGQxZDZlMjViOTUwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zOTgs
NyArMzk4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmkKICAgICAgICAgZm9yIChhdXRvJiBm
aWxlIDogZmlsZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICBmaWxlLT5yZXZva2VGaWxlQWNjZXNz
KCk7CiAKLSAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGZpbGVOYW1lcywgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgZmls
ZU5hbWVzXSgpIHsKKyAgICAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmdyYW50U2Fu
ZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMoZmlsZU5hbWVzLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVy
LCBmaWxlTmFtZXNdKCkgewogICAgICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmlzVmFsaWQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODBhNGU1MTQxNWEzMWI3ZDQ3OTgyMTUz
MGNiM2VlNmMzOThhYmQ0Yi4uOGEwNjFjZDcyMjk4MzBhYTg0OGM5MTg2YThlMTlhY2ViMjgxNDEx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTMwMywxNiArMzAzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlc3Ryb3lTZXNz
aW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNz
aW9uKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJs
b2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQgKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IGxhc3RSZXF1ZXN0SUQ7
CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSArK2xhc3RSZXF1ZXN0SUQ7CiAgICAgbV9zYW5k
Ym94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnMuc2V0KHJlcXVlc3RJRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdyYW50U2FuZGJveEV4dGVuc2lv
bnNUb0RhdGFiYXNlUHJvY2Vzc0ZvckJsb2JzKHJlcXVlc3RJRCwgZmlsZW5hbWVzKSwgMCk7Cisg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyhy
ZXF1ZXN0SUQsIGZpbGVuYW1lcyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRH
cmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCBy
ZXF1ZXN0SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkaWRHcmFudFNhbmRib3hFeHRlbnNpb25z
VG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKICAgICBpZiAo
YXV0byBoYW5kbGVyID0gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxl
cnMudGFrZShyZXF1ZXN0SUQpKQogICAgICAgICBoYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmQyMTg4YmI0ZWMwYjdhYTg1
MWUzZGJmOWJhODBlZDI3ODVjOTI3OS4uNjc0NmJlOTE0OTQxYmQxOWIyNDY3M2E4MGZjNWM5YjM3
ZjNkOTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmKTsKIAotICAgIHZv
aWQgZ3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRnVuY3Rpb248dm9pZCAoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgdm9pZCBncmFudFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vz
c0ZvckJsb2JzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZ1bmN0aW9uPHZvaWQg
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCiAgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JUb3BQcml2
YXRlbHlPd25lZERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBzaG91bGRDbGVhckZpcnN0
KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NM
Q2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCk7CiAgICAgdm9pZCBzeW5jQWxsQ29va2llcygp
OwogCi0gICAgdm9pZCBkaWRHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRhYmFzZVByb2Nlc3NG
b3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIHZvaWQgZGlkR3JhbnRTYW5kYm94RXh0
ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQpOwogCiAj
aWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCAyMGNlNjRiODM1MDEwNmZiOGJmNWQ5ZDY0MjhhNTc3MmU4ZDM5ZWNjLi4zNmU0
Nzc3ODlmMjkyMzM2ZTg0MzA4NWExYmU0MjMyMTBkZWE4ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTgwLDcgKzgwLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIENhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQog
Ci0gICAgRGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnMo
dWludDY0X3QgcmVxdWVzdElEKQorICAgIERpZEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3Jh
Z2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElEKQogCiAjaWYgSEFWRShDRk5FVFdP
UktfU1RPUkFHRV9QQVJUSVRJT05JTkcpCiAgICAgVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9y
VG9wUHJpdmF0ZWx5T3duZWREb21haW5zKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1JlbW92ZSwg
VmVjdG9yPFN0cmluZz4gZG9tYWluc1RvQWRkLCBib29sIHNob3VsZENsZWFyRmlyc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qcm9jZXNzRXhlY3V0YWJsZVBhdGguaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aC5oCmluZGV4IGE1OGE5MDc2
MDdmOWZmMWJjZDEwYmM2MmVmZmFkYWEzODg2NGNmNjUuLmI1MTU5ZmJiNTY3ZDAyZTc2ZjQ5Njcz
MjgwOWQ0Y2YyZGM4ZjBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nl
c3NFeGVjdXRhYmxlUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aC5oCkBAIC0zMiw2ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogU3RyaW5n
IGV4ZWN1dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCk7CiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZlBs
dWdpblByb2Nlc3MoKTsKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsK
LVN0cmluZyBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7CitTdHJpbmcgZXhlY3V0
YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNzKCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKaW5kZXggZjM4ZTFjZTQy
OTllZGEzMGIwNGJmNmNlMjI5YmQwYjNjODRhNTU0OS4uOGIzODMzMzgwOGI1NWFkNmZmNjliMjc4
ZTQ4NzY5ZmJkOTA0MDY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1By
b2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKQEAgLTg0LDkgKzg0LDkgQEAgU3RyaW5nIGV4
ZWN1dGFibGVQYXRoT2ZOZXR3b3JrUHJvY2VzcygpCiAgICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9j
ZXNzKCJXZWJLaXROZXR3b3JrUHJvY2VzcyIpOwogfQogCi1TdHJpbmcgZXhlY3V0YWJsZVBhdGhP
ZkRhdGFiYXNlUHJvY2VzcygpCitTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZlN0b3JhZ2VQcm9jZXNz
KCkKIHsKLSAgICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldlYktpdERhdGFiYXNlUHJvY2Vz
cyIpOworICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2VzcygiV2ViS2l0U3RvcmFnZVByb2Nlc3Mi
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCmluZGV4IDllZjQ2MjliMjVk
YmZmYjhlOGRiN2UxZjVkZWQ1MTVmYjA3ZDlmNDYuLjIyZDQ1Y2JiYmVmYTRhMjQxNDM5NmNlNWQ1
MTZmNjM2ZTFhOWMyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9j
ZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Q
cm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCkBAIC03Nyw5ICs3Nyw5IEBAIFN0cmluZyBleGVj
dXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKQogICAgIHJldHVybiBmaW5kV2ViS2l0UHJvY2Vz
cygiV1BFTmV0d29ya1Byb2Nlc3MiKTsKIH0KIAotU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZEYXRh
YmFzZVByb2Nlc3MoKQorU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdlUHJvY2VzcygpCiB7
Ci0gICAgcmV0dXJuIGZpbmRXZWJLaXRQcm9jZXNzKCJXUEVEYXRhYmFzZVByb2Nlc3MiKTsKKyAg
ICByZXR1cm4gZmluZFdlYktpdFByb2Nlc3MoIldQRVN0b3JhZ2VQcm9jZXNzIik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAK
aW5kZXggYWRlNjliMjc3YTYxYTYwODExNWY0MzE2YWNlOTFhZTlkZDMyNzkxMy4uMWZmN2JlODFh
ZTkyOTNkODgyZDM5ZWUxNzAyZjZjN2JjYTJhYWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0
aW9uVG9DbGllbnQuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnQ6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0LCBjb25zdCBJ
REIKICAgICAgICAgJiYgb3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZSkKICAgICAgICAgJiYg
b3ZlcndyaXRlTW9kZSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSW5kZXhlZERCOjpPYmplY3RT
dG9yZU92ZXJ3cml0ZU1vZGU6Ok92ZXJ3cml0ZUZvckN1cnNvcikpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgbWVzc2FnZSBmcm9tIHRoZSBXZWJQcm9jZXNzIGlzIGNvcnJ1cHQuCi0gICAgICAg
IC8vIFRoZSBEYXRhYmFzZVByb2Nlc3Mgc2hvdWxkIHJldHVybiBlYXJseSBhdCB0aGlzIHBvaW50
LCBidXQgY2FuIHdlIGFsc28ga2lsbCB0aGUgYmFkIFdlYlByb2Nlc3M/CisgICAgICAgIC8vIFRo
ZSBTdG9yYWdlUHJvY2VzcyBzaG91bGQgcmV0dXJuIGVhcmx5IGF0IHRoaXMgcG9pbnQsIGJ1dCBj
YW4gd2UgYWxzbyBraWxsIHRoZSBiYWQgV2ViUHJvY2Vzcz8KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNw
cAppbmRleCBmNGQ5NGJjZDM1MWFjZDIyNjI4ZDY2NTAxOTk5NGEzYjllNDM4NTZmLi4xY2M3YTZi
ZDQwZTM0ZjIwYjk1NWUwZTU0YzFkYjY2ZTNkMjM2YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZv
aWQgU3RvcmFnZVByb2Nlc3M6OmluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKGNvbnN0IFN0b3Jh
Z2VQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygqdGhpcywgJlN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3RzLCBwYXJhbWV0ZXJz
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSkpOworICAgIHBvc3RTdG9yYWdlVGFzayhjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZTdG9yYWdlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cywg
cGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpKTsKICNlbmRpZgogfQogCkBAIC0x
MzMsMzkgKzEzMywzOSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3RzKGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWFrZSBhbGwg
ZGlyZWN0b3JpZXMgZm9yIHBhdGggJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKLXZv
aWQgU3RvcmFnZVByb2Nlc3M6OnBvc3REYXRhYmFzZVRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYgdGFz
aykKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RTdG9yYWdlVGFzayhDcm9zc1RocmVhZFRhc2sm
JiB0YXNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3N0b3JhZ2VUYXNrTXV0ZXgpOwogCi0gICAgbV9kYXRhYmFzZVRhc2tzLmFwcGVuZChXVEZNb3Zl
KHRhc2spKTsKKyAgICBtX3N0b3JhZ2VUYXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAKICAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBwZXJmb3JtTmV4dERhdGFiYXNl
VGFzaygpOworICAgICAgICBwZXJmb3JtTmV4dFN0b3JhZ2VUYXNrKCk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgU3RvcmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0RGF0YWJhc2VUYXNrKCkKK3ZvaWQgU3Rv
cmFnZVByb2Nlc3M6OnBlcmZvcm1OZXh0U3RvcmFnZVRhc2soKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCiAgICAgQ3Jvc3NUaHJlYWRUYXNrIHRhc2s7CiAgICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKLSAgICAgICAgQVNT
RVJUKCFtX2RhdGFiYXNlVGFza3MuaXNFbXB0eSgpKTsKLSAgICAgICAgdGFzayA9IG1fZGF0YWJh
c2VUYXNrcy50YWtlRmlyc3QoKTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdG9yYWdl
VGFza011dGV4KTsKKyAgICAgICAgQVNTRVJUKCFtX3N0b3JhZ2VUYXNrcy5pc0VtcHR5KCkpOwor
ICAgICAgICB0YXNrID0gbV9zdG9yYWdlVGFza3MudGFrZUZpcnN0KCk7CiAgICAgfQogCiAgICAg
dGFzay5wZXJmb3JtVGFzaygpOwogfQogCi12b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQordm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRl
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogewogI2lmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBD
OjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKICAgICBtX2RhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uOjpjcmVhdGUoc29ja2V0UGFpci5zZXJ2ZXIpKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50KHNvY2tldFBhaXIuY2xp
ZW50KSksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzUHJveHk6OkRpZENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uKElQQzo6QXR0YWNobWVudChzb2NrZXRQYWlyLmNsaWVudCkpLCAwKTsKICNlbGlmIE9TKERB
UldJTikKICAgICAvLyBDcmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgogICAgIG1hY2hfcG9ydF90
IGxpc3RlbmluZ1BvcnQ7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6
Y3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBtX2RhdGFiYXNlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
OjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKGxpc3RlbmluZ1BvcnQpKSk7CiAK
ICAgICBJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0LCBNQUNIX01TR19U
WVBFX01BS0VfU0VORCk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uKGNsaWVudFBvcnQpLCAwKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7CiAjZWxzZQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAjZW5kaWYKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNz
OjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YQogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpJbmRleGVkREJEYXRhYmFzZXMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQaWNrIHRoZSByaWdo
dCBkYXRhYmFzZSBzdG9yZSBiYXNlZCBvbiB0aGUgc2Vzc2lvbiBJRC4KLSAgICAgICAgcG9zdERh
dGFiYXNlVGFzayhDcm9zc1RocmVhZFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHBhdGggPSBXVEZNb3ZlKHBhdGgpXSgpIG11dGFibGUg
eworICAgICAgICBwb3N0U3RvcmFnZVRhc2soQ3Jvc3NUaHJlYWRUYXNrKFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwYXRoID0gV1RGTW92ZShw
YXRoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2VjdXJpdHlP
cmlnaW5zID0gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhwYXRoKV0gewogICAgICAgICAgICAgICAg
IFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgc2VjdXJpdHlPcmlnaW4gOiBzZWN1cml0eU9yaWdpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggYTY3YzQzZWU4NTI3YWJlYTgwZjQ3
OGZmZGExZGM4YjMzMGFiMDczMC4uM2JjNzJlMjA2YTIxYzIyMDM1Mzk4NTU3ZTBmZTcwYTlkZTI2
NDRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
aApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXb3JrUXVldWUmIHF1ZXVlKCkgeyBy
ZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCi0gICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKENyb3Nz
VGhyZWFkVGFzayYmKTsKKyAgICB2b2lkIHBvc3RTdG9yYWdlVGFzayhDcm9zc1RocmVhZFRhc2sm
Jik7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAvLyBXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZUZpbGVIYW5kbGVyCkBAIC05MCw3ICs5MCw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0aWFsaXplV2Vic2l0
ZURhdGFTdG9yZShjb25zdCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwotICAg
IHZvaWQgY3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCk7CisgICAgdm9pZCBj
cmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBmZXRjaFdl
YnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
d2Vic2l0ZURhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC0xMDUsNyArMTA1LDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gRm9yIGV4ZWN1dGlvbiBvbiB3b3JrIHF1ZXVlIHRo
cmVhZCBvbmx5Ci0gICAgdm9pZCBwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpOworICAgIHZvaWQg
cGVyZm9ybU5leHRTdG9yYWdlVGFzaygpOwogICAgIHZvaWQgZW5zdXJlUGF0aEV4aXN0cyhjb25z
dCBTdHJpbmcmKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24+PiBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnM7CkBAIC0xMTksOCArMTE5
LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+PiBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnM7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmKT4+IG1fc2FuZGJveEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOwogCi0g
ICAgRGVxdWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlVGFza3M7Ci0gICAgTG9jayBtX2Rh
dGFiYXNlVGFza011dGV4OworICAgIERlcXVlPENyb3NzVGhyZWFkVGFzaz4gbV9zdG9yYWdlVGFz
a3M7CisgICAgTG9jayBtX3N0b3JhZ2VUYXNrTXV0ZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDA1NTg3Mzc1NGJlNjY1NDYwM2MxMmJkYjc1NTkyNWYz
NjE1OTcwMTcuLjRiZGVjNzNlNjRmMWFjZmUwNjU0NzdmMTRhNmVmYTBhMDBlMDgyYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgSW5pdGlhbGl6ZVdlYnNpdGVEYXRhU3RvcmUoc3RydWN0IFdl
YktpdDo6U3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycykKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24g
d2l0aCBhIFdlYlByb2Nlc3MKLSAgICBDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oKQorICAgIENyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCkKIAogICAgIEZl
dGNoV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogICAgIERlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRf
dCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9t
YWMvU3RvcmFnZVByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21h
Yy9TdG9yYWdlUHJvY2Vzc01hYy5tbQppbmRleCBkNmFmMTY5Y2Y1N2U0NThjMzlkMTk0NTM2MDAw
OTZmNTdiMGE3NTAxLi5jMDM4ODYwZjhmMTQzYzBkY2ZmYzkzYTUyNzY2ZDYzNDU0NzQxZjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21hYy9TdG9yYWdlUHJvY2Vz
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL21hYy9TdG9yYWdlUHJv
Y2Vzc01hYy5tbQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0aWFs
aXplUHJvY2Vzcyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcgogCiB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIE5TU3RyaW5n
ICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RS
SU5HKCIlQCBEYXRhYmFzZSBTdG9yYWdlIiwgInZpc2libGUgbmFtZSBvZiB0aGUgZGF0YWJhc2Ug
cHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJp
bmcgKilwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWVdOworICAgIE5TU3RyaW5nICphcHBsaWNhdGlv
bk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCIlQCBTdG9y
YWdlIiwgInZpc2libGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBwcm9jZXNzLiBUaGUgYXJndW1lbnQg
aXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9j
ZXNzTmFtZV07CiAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilh
cHBsaWNhdGlvbk5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAppbmRleCBhNTAxOWIyNTIzNjQ2NGNkNDExNWJhZDA3ZjYwY2FmMDg1OTFjZmMw
Li5kYjQ3MDRhMDdjYjI2YjkzN2FmYWViYjg5YWMyNzk0YThiZmI2NTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTU5MCw1ICs1OTAsNSBAQCBw
aWRfdCBXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYpCiAKIHBpZF90IFdLQ29udGV4dEdldERhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChjb250ZXh0UmVm
KS0+ZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcigpOworICAgIHJldHVybiB0b0ltcGwoY29udGV4
dFJlZiktPnN0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAyNTBmNzE2YzBj
NjhiODBmNTgwNDYxNDczNGY3MmRkNThkYTZlODhlLi4wNzc5YTIwZWM4MTMyZWZlYjRlNDVmMDkz
MDE2Zjk0OTAwOTI5MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzg1LDkgKzM4NSw5IEBAIC0gKHZvaWQpX3NldEF1
dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lvbiAqKWF1dG9tYXRpb25TZXNzaW9u
CiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRvbWF0aW9uU2Vzc2lv
biA/IGF1dG9tYXRpb25TZXNzaW9uLT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxwdHIpOwogfQogCi0t
ICh2b2lkKV90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3MKKy0gKHZvaWQpX3Rlcm1pbmF0ZVN0b3Jh
Z2VQcm9jZXNzCiB7Ci0gICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3Mo
KTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKCk7CiB9CiAKIC0g
KHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzCkBAIC00MDAsOSArNDAwLDkgQEAgLSAocGlk
X3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllcgogICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPm5l
dHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwogfQogCi0tIChwaWRfdClfZGF0YWJhc2VQcm9jZXNz
SWRlbnRpZmllcgorLSAocGlkX3QpX3N0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcgogewotICAgIHJl
dHVybiBfcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gX3Byb2Nlc3NQb29sLT5zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KIAogLSAodm9p
ZClfc3luY05ldHdvcmtQcm9jZXNzQ29va2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCAxYTZjNmNj
MTAzMGI0ZDNlMDA5OWFjNTk3YzlmMWU0ZWNiNDcxOTRmLi5kYTMxOTY5ZTEzYTYyMzcyMmVkZGRi
OTdiOTU4MDBlMTQ1NjhjNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNzIsMTIgKzcyLDEyIEBA
CiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hdGlvblNlc3Npb24gKilh
dXRvbWF0aW9uU2Vzc2lvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4w
KSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBj
b250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KLS0gKHZvaWQpX3Rlcm1pbmF0ZURhdGFiYXNl
UHJvY2VzczsKKy0gKHZvaWQpX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzOwogLSAodm9pZClfdGVy
bWluYXRlTmV0d29ya1Byb2Nlc3M7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBpZF90KV9uZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7Ci0tIChwaWRfdClfZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllciBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHBp
ZF90KV9zdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHNpemVfdClf
d2ViUHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGZlZjc2ODA1YTE5Y2QxZjM1ZjBjMzIyNWZiMDdiZTEyNzhjY2QzOTguLmE2
ZTRkOGFmYjQ3YmNkYTgxY2E3NmIyZGU5MTYxN2RlNzlhNDk0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9DaGlsZFByb2Nlc3NQcm94eS5jcHAKQEAgLTcwLDggKzcwLDggQEAgdm9p
ZCBDaGlsZFByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE8KICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5
cGU6Ok5ldHdvcms6CiAgICAgICAgIHZhcm5hbWUgPSAiTkVUV09SS19QUk9DRVNTX0NNRF9QUkVG
SVgiOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5
cGU6OkRhdGFiYXNlOgotICAgICAgICB2YXJuYW1lID0gIkRBVEFCQVNFX1BST0NFU1NfQ01EX1BS
RUZJWCI7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpTdG9yYWdlOgor
ICAgICAgICB2YXJuYW1lID0gIlNUT1JBR0VfUFJPQ0VTU19DTURfUFJFRklYIjsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNvbnN0IGNoYXIqIHByb2Nlc3NDbWRQcmVmaXggPSBnZXRlbnYo
dmFybmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Q
cm9jZXNzTGF1bmNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nl
c3NMYXVuY2hlci5oCmluZGV4IDhhNTYyNDZhNzcyM2I2NTJkZmJhZTQ0MTZlY2QyYjVkNzUxYmFm
NGIuLjY3OThmYzlmOWQwZjI5OWQ2ZTY2ZjNlMzU2ZWNjZTk5YmVmMTcwYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUGx1Z2luNjQsCiAjZW5kaWYKICAgICAgICAg
TmV0d29yaywKLSAgICAgICAgRGF0YWJhc2UsCisgICAgICAgIFN0b3JhZ2UsCiAgICAgfTsKIAog
ICAgIHN0cnVjdCBMYXVuY2hPcHRpb25zIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKaW5kZXggNmVk
NDk1MDhhM2M1N2VjNWQwNTdmMTgwZGJkNjMxZTRlZTYwZDdmMS4uMjU2YmZmM2ZhZWJjNjJjODRj
NDFmNjkwMjY3NGRlMzkwOTQxMDkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTgxLDgg
KzgxLDggQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGNhc2Ug
UHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6TmV0d29yazoKICAgICAgICAgZXhlY3V0YWJs
ZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mTmV0d29ya1Byb2Nlc3MoKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpEYXRhYmFzZToKLSAgICAg
ICAgZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mRGF0YWJhc2VQcm9jZXNzKCk7Cisg
ICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpTdG9yYWdlOgorICAgICAgICBl
eGVjdXRhYmxlUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZTdG9yYWdlUHJvY2VzcygpOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1
bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vz
c0xhdW5jaGVyTWFjLm1tCmluZGV4IGI5ZWZjMDQ4NWU1YjU5NzAzM2RiZDljYjc4NTgwODY1NjEy
OGQ4OWEuLjMwYTY5MmM5YjUzODhiNTZjNTk3MjNhYWNhMTA5ZGUwN2VlOWMzMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NM
YXVuY2hlck1hYy5tbQpAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc2Vydmlj
ZU5hbWUoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpbwog
ICAgICAgICByZXR1cm4gImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCI7CiAgICAgY2FzZSBQ
cm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgogICAgICAgICByZXR1cm4gImNv
bS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZyI7Ci0gICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlBy
b2Nlc3NUeXBlOjpEYXRhYmFzZToKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5
cGU6OlN0b3JhZ2U6CiAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5EYXRhYmFzZXMi
OwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGNhc2UgUHJvY2Vzc0xhdW5j
aGVyOjpQcm9jZXNzVHlwZTo6UGx1Z2luMzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci93cGUvUHJvY2Vzc0xhdW5jaGVyV1BFLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUuY3BwCmluZGV4IDU5
NThhYjA5YTI5OTlhNGQwYTNlMjlhNTA1ODU3OTMyYjg5ZjBmNGEuLjJjNjIzODQ3ZDBmODU2ZGM2
MWRmOWFjYjAwZGQzMmM3M2Q5YzU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL3dwZS9Qcm9jZXNzTGF1bmNoZXJXUEUuY3BwCkBAIC02Nyw4
ICs2Nyw4IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBjYXNl
IFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CiAgICAgICAgIGV4ZWN1dGFi
bGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZk5ldHdvcmtQcm9jZXNzKCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6RGF0YWJhc2U6Ci0gICAg
ICAgIGV4ZWN1dGFibGVQYXRoID0gZXhlY3V0YWJsZVBhdGhPZkRhdGFiYXNlUHJvY2VzcygpOwor
ICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6U3RvcmFnZToKKyAgICAgICAg
ZXhlY3V0YWJsZVBhdGggPSBleGVjdXRhYmxlUGF0aE9mU3RvcmFnZVByb2Nlc3MoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCAwZTljMDc4NWNiNzdmZTExMDJhMTgzYTg3MTU3ZTJiNDYzNWZhZGYx
Li5jZjM5NmY0YjEwZjU1ZDZjOTgwODVhMzZkZDI4ZDdhODIyZjk3MmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTI4OSwxOSArMjg5LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgY2FsbGJh
Y2soKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpncmFudFNhbmRib3hFeHRlbnNp
b25zVG9EYXRhYmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocykKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5k
Ym94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRF
TlNJT05TKQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGV4dGVuc2lvbnM7CiAg
ICAgZXh0ZW5zaW9ucy5hbGxvY2F0ZShwYXRocy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgLy8gUmVhZFdyaXRlIGlzIHJl
cXVpcmVkIGZvciBjcmVhdGluZyBoYXJkIGxpbmtzIGFzIHdlbGwgYXMgZGVsZXRpbmcgdGhlIHRl
bXBvcmFyeSBmaWxlLCB3aGljaCB0aGUgRGF0YWJhc2VQcm9jZXNzIHdpbGwgZG8uCisgICAgICAg
IC8vIFJlYWRXcml0ZSBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcgaGFyZCBsaW5rcyBhcyB3ZWxs
IGFzIGRlbGV0aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSwgd2hpY2ggdGhlIFN0b3JhZ2VQcm9jZXNz
IHdpbGwgZG8uCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoc1tp
XSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBleHRlbnNpb25zW2ldKTsKICAgICB9CiAK
LSAgICBtX3Byb2Nlc3NQb29sLnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpHcmFudFNhbmRib3hFeHRlbnNpb25zRm9y
QmxvYnMocGF0aHMsIGV4dGVuc2lvbnMpKTsKKyAgICBtX3Byb2Nlc3NQb29sLnNlbmRUb1N0b3Jh
Z2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OkdyYW50U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9icyhwYXRocywgZXh0ZW5zaW9ucykpOwogI2Vu
ZGlmCi0gICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RGlk
R3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvRGF0YWJhc2VQcm9jZXNzRm9yQmxvYnMocmVxdWVzdElE
KSwgMCk7CisgICAgY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyhyZXF1ZXN0
SUQpLCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlOWJkYzYzZDk5NmJmOWJmZGM0
NTkyMjY0YTEzODkzZmY3NTM3MzAwLi45MjNkZDJhOTA4NzMwOTIyOTUzYWRjMWM3NTUyMDgzOTY4
NjVkNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVE
YXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lE
KTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb0RhdGFiYXNlUHJvY2Vz
c0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhz
KTsKKyAgICB2b2lkIGdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxv
YnModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwogICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVp
bnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgppbmRleCAwYzkwMmVkN2FjMGM2OWZjZmZjNTkyOWZjYzZhZjNlZDdiNGZj
ZWNlLi4yMDhkODVmYWJlMDU3MmNmZDFiZjFjNDEyNmE1YzIyYTUxODA0NTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5z
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBHcmFudFNhbmRib3hFeHRlbnNpb25zVG9EYXRh
YmFzZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfdCByZXF1ZXN0SUQsIFZlY3RvcjxTdHJpbmc+IHBh
dGhzKQorICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMo
dWludDY0X3QgcmVxdWVzdElELCBWZWN0b3I8U3RyaW5nPiBwYXRocykKIAogICAgIFByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCgpCiAgICAgU2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3Jh
Z2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVlNzhjN2QwYTM2NjgyY2ZkNTEzY2Yw
YTdiM2Y1NjVmMmQ0NTE4MTcuLjIwZDIwZTBlZTNjZjM5ODQ4NjUyNWFjZDFiMmNiZWNkYTRkMDRk
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBTdG9yYWdlUHJvY2Vzc1Byb3h5
Ojp+U3RvcmFnZVByb2Nlc3NQcm94eSgpCiAKIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0
TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlv
bnMpCiB7Ci0gICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6
UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOworICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQ
cm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpTdG9yYWdlOwogICAgIENoaWxkUHJvY2Vzc1By
b3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwogfQogCkBAIC0xMTEsNyArMTEx
LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHNlc3Npb25JRCwgZGF0YVR5cGVz
LCBvcmlnaW5zLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgU3RvcmFnZVByb2Nlc3NQcm94
eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQordm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24o
UmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBs
aWVzLmFwcGVuZChXVEZNb3ZlKHJlcGx5KSk7CiAKQEAgLTEyMCwxMiArMTIwLDEyIEBAIHZvaWQg
U3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVz
c2FnZXM6OldlYlByb2Nlc3NQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uKCksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6Q3JlYXRl
U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiB2b2lkIFN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCiB7Ci0gICAgLy8gVGhl
IGRhdGFiYXNlIHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzbyBzZW5kIGFu
eSBwZW5kaW5nIHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgorICAgIC8vIFRoZSBzdG9yYWdl
IHByb2Nlc3MgbXVzdCBoYXZlIGNyYXNoZWQgb3IgZXhpdGVkLCBzbyBzZW5kIGFueSBwZW5kaW5n
IHN5bmMgcmVwbGllcyB3ZSBtaWdodCBoYXZlLgogICAgIHdoaWxlICghbV9wZW5kaW5nQ29ubmVj
dGlvblJlcGxpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gcmVwbHkgPSBtX3BlbmRpbmdD
b25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIApAQCAtMTUwLDE5ICsxNTAsMTkgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgICAg
ICBjYWxsYmFjaygpOwogICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0Nh
bGxiYWNrcy5jbGVhcigpOwogCi0gICAgLy8gVGVsbCBQcm9jZXNzUG9vbCB0byBmb3JnZXQgYWJv
dXQgdGhpcyBkYXRhYmFzZSBwcm9jZXNzLiBUaGlzIG1heSBjYXVzZSB1cyB0byBiZSBkZWxldGVk
LgotICAgIG1fcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQodGhpcyk7CisgICAg
Ly8gVGVsbCBQcm9jZXNzUG9vbCB0byBmb3JnZXQgYWJvdXQgdGhpcyBzdG9yYWdlIHByb2Nlc3Mu
IFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCisgICAgbV9wcm9jZXNzUG9vbC0+c3Rv
cmFnZVByb2Nlc3NDcmFzaGVkKHRoaXMpOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6
OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSkKIHsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9u
SWRlbnRpZmllcikKK3ZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU3RvcmFnZVRv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1w
dHkoKSk7CiAKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5l
Y3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOworICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkg
PSBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQogICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsK
QEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogICAgIH0KIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7
ICsraSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZURhdGFi
YXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpLCAwKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZVN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKCksIDAp
OwogICAgIAogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94
eS5oCmluZGV4IGJiY2E3MGUwNTViOTFkM2JkZTQ2NjgxMjk2NGEyNzA2MjBmOGJiYTMuLjVjMTEw
NmQzNjhiMDc4Y2Y4MWUxYTJjYWZjNzU0MTFhMjBlMjA0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5oCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5z
KFdlYkNvcmU6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgdm9pZCBnZXREYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZ2V0U3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RvcmFnZVBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCopOwpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN0b3JhZ2VQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZv
aWQgZGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0
YWNobWVudCYpOworICAgIHZvaWQgZGlkQ3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWRE
ZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTgzLDcgKzgz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbDsKIAogICAg
IHVuc2lnbmVkIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0czsKLSAgICBEZXF1ZTxSZWY8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CisgICAgRGVxdWU8UmVm
PE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CiAKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4+IG1fcGVuZGluZ0Zl
dGNoV2Vic2l0ZURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV1RGOjpGdW5j
dGlvbjx2b2lkICgpPj4gbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZmUxNzY5MzMzZDZjMDQ0ZjQ1NTJhN2JjNTEy
YWJiNmI3NTRlODMzYy4uMmE3OGE2YjFjNzEzMDRmMjJiZDZkMDMzYWE0ZTg3NGVlNTlkN2JkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVy
IHsKLSAgICBEaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIERpZENyZWF0ZVN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKIAog
ICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgc3RydWN0IFdlYktp
dDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlkRGVsZXRlV2Vic2l0ZURhdGEodWlu
dDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkNvbnRleHRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENs
aWVudC5jcHAKaW5kZXggNjRkYmRlZmFmMGJhMjcyMGRkN2JlYTJkOTM5YjgxNjA3ZTZhZDlhZi4u
NDFjMGMyNTcyN2NhNDY2MWFmZmY1YmQxZDYwOGI2MmQ0NTNhZGI5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9p
ZCBXZWJDb250ZXh0Q2xpZW50OjpuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKFdlYlByb2Nlc3NQb29s
KiBwcm9jZXNzUG9vbCkKICAgICBtX2NsaWVudC5uZXR3b3JrUHJvY2Vzc0RpZENyYXNoKHRvQVBJ
KHByb2Nlc3NQb29sKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJD
b250ZXh0Q2xpZW50OjpkYXRhYmFzZVByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCogcHJv
Y2Vzc1Bvb2wpCit2b2lkIFdlYkNvbnRleHRDbGllbnQ6OnN0b3JhZ2VQcm9jZXNzRGlkQ3Jhc2go
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewogICAgIGlmICghbV9jbGllbnQuZGF0YWJh
c2VQcm9jZXNzRGlkQ3Jhc2gpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvbnRleHRDbGllbnQuaAppbmRleCBiMjVjNGQzYjlkNGE5MmVkZTE2MjY4MGJhYTc0
NjFkNzdjZDIxNWUwLi4wMzhmNjNhNWM0MDhjZDUzMjE4MDI2MGQ1YWQ4ZWM1NGE0ZTliYmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oCkBAIC00NSw3ICs0
NSw3IEBAIGNsYXNzIFdlYkNvbnRleHRDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tDb250
ZXh0Q2xpZW50QmFzZT4gewogcHVibGljOgogICAgIHZvaWQgcGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzQ2hhbmdlZChXZWJQcm9jZXNzUG9vbCopOwogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NE
aWRDcmFzaChXZWJQcm9jZXNzUG9vbCopOwotICAgIHZvaWQgZGF0YWJhc2VQcm9jZXNzRGlkQ3Jh
c2goV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB2b2lkIHN0b3JhZ2VQcm9jZXNzRGlkQ3Jhc2goV2Vi
UHJvY2Vzc1Bvb2wqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGYyOGYwOTk3ODYxMGM1MWQwMDMw
YjE5ZDZmNjI5YzJhYjI1NDU2NjIuLjgzZjNhNjczZjcyNGI2ZmI4Yjk5YjE1ZDExNjNmZDA2ZDA5
NDMxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6CiAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVwbHkpKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURh
dGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSkKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlKiByZWxldmFudERhdGFTdG9yZSkKIHsKICAgICAvLyAqKioqKioqKioKICAgICAv
LyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGlu
ZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3
ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKICAgICAvLyAqKioqKioq
KioKIAotICAgIGlmICghbV9kYXRhYmFzZVByb2Nlc3MpIHsKLSAgICAgICAgbV9kYXRhYmFzZVBy
b2Nlc3MgPSBTdG9yYWdlUHJvY2Vzc1Byb3h5OjpjcmVhdGUodGhpcyk7CisgICAgaWYgKCFtX3N0
b3JhZ2VQcm9jZXNzKSB7CisgICAgICAgIG1fc3RvcmFnZVByb2Nlc3MgPSBTdG9yYWdlUHJvY2Vz
c1Byb3h5OjpjcmVhdGUodGhpcyk7CiAKICAgICAgICAgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTUz
MywzMiArNTMzLDMyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZURhdGFiYXNlUHJvY2Vz
c0FuZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSoKICNlbmRpZgogCiAgICAgICAg
IEFTU0VSVCghcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsK
LSAgICAgICAgbV9kYXRhYmFzZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNz
OjpJbml0aWFsaXplV2Vic2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJzKSwgMCk7CisgICAgICAgIG1f
c3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXpl
V2Vic2l0ZURhdGFTdG9yZShwYXJhbWV0ZXJzKSwgMCk7CiAgICAgfQogCiAgICAgaWYgKCFyZWxl
dmFudERhdGFTdG9yZSB8fCByZWxldmFudERhdGFTdG9yZSA9PSAmd2Vic2l0ZURhdGFTdG9yZSgp
LndlYnNpdGVEYXRhU3RvcmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhYmFzZVBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpJbml0aWFsaXplV2Vic2l0ZURh
dGFTdG9yZShyZWxldmFudERhdGFTdG9yZS0+ZGF0YWJhc2VQcm9jZXNzUGFyYW1ldGVycygpKSwg
MCk7CisgICAgbV9zdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKHJlbGV2YW50RGF0YVN0b3JlLT5zdG9yYWdlUHJv
Y2Vzc1BhcmFtZXRlcnMoKSksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpnZXREYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRE
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpnZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiYmIHJlcGx5KQogewotICAgIGVuc3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3Rv
cmUobnVsbHB0cik7CisgICAgZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3Jl
KG51bGxwdHIpOwogCi0gICAgbV9kYXRhYmFzZVByb2Nlc3MtPmdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOworICAgIG1fc3RvcmFnZVByb2Nlc3MtPmdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSogZGF0YWJh
c2VQcm9jZXNzUHJveHkpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNo
ZWQoU3RvcmFnZVByb2Nlc3NQcm94eSogc3RvcmFnZVByb2Nlc3NQcm94eSkKIHsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZVByb2Nlc3MpOwotICAgIEFTU0VSVChkYXRhYmFzZVByb2Nlc3NQcm94eSA9
PSBtX2RhdGFiYXNlUHJvY2Vzcy5nZXQoKSk7CisgICAgQVNTRVJUKG1fc3RvcmFnZVByb2Nlc3Mp
OworICAgIEFTU0VSVChzdG9yYWdlUHJvY2Vzc1Byb3h5ID09IG1fc3RvcmFnZVByb2Nlc3MuZ2V0
KCkpOwogCiAgICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMo
KSkKLSAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENsb3NlKGRhdGFiYXNlUHJvY2Vzc1By
b3h5KTsKKyAgICAgICAgc3VwcGxlbWVudC0+cHJvY2Vzc0RpZENsb3NlKHN0b3JhZ2VQcm9jZXNz
UHJveHkpOwogCi0gICAgbV9jbGllbnQuZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2godGhpcyk7Ci0g
ICAgbV9kYXRhYmFzZVByb2Nlc3MgPSBudWxscHRyOworICAgIG1fY2xpZW50LnN0b3JhZ2VQcm9j
ZXNzRGlkQ3Jhc2godGhpcyk7CisgICAgbV9zdG9yYWdlUHJvY2VzcyA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKQEAg
LTk1OSw5ICs5NTksOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQWRkZWRUb1Byb2Nlc3Mo
V2ViUGFnZVByb3h5JiBwYWdlKQogICAgICAgICBwYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpBZGRXZWJzaXRlRGF0YVN0b3JlKHBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgp
LnBhcmFtZXRlcnMoKSksIDApOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAg
ICAgIGF1dG8gZGF0YWJhc2VQYXJhbWV0ZXJzID0gcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGF0
YWJhc2VQcm9jZXNzUGFyYW1ldGVycygpOwotICAgICAgICBpZiAoIWRhdGFiYXNlUGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2VuZFRv
RGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKGRhdGFiYXNlUGFyYW1ldGVycykpOwor
ICAgICAgICBhdXRvIHN0b3JhZ2VQYXJhbWV0ZXJzID0gcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCku
c3RvcmFnZVByb2Nlc3NQYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmICghc3RvcmFnZVBhcmFtZXRl
cnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHNlbmRU
b1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3M6OkluaXRpYWxpemVXZWJzaXRlRGF0YVN0b3JlKHN0b3JhZ2VQYXJhbWV0ZXJzKSk7CiAj
ZW5kaWYKICAgICB9CiB9CkBAIC0xMDczLDEyICsxMDczLDEyIEBAIHBpZF90IFdlYlByb2Nlc3NQ
b29sOjpuZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKQogICAgIHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQogCi1waWRfdCBXZWJQcm9jZXNzUG9vbDo6ZGF0
YWJhc2VQcm9jZXNzSWRlbnRpZmllcigpCitwaWRfdCBXZWJQcm9jZXNzUG9vbDo6c3RvcmFnZVBy
b2Nlc3NJZGVudGlmaWVyKCkKIHsKLSAgICBpZiAoIW1fZGF0YWJhc2VQcm9jZXNzKQorICAgIGlm
ICghbV9zdG9yYWdlUHJvY2VzcykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9k
YXRhYmFzZVByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fc3RvcmFn
ZVByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRl
eHQpCkBAIC0xMzAyLDEzICsxMzAyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ2Fj
aGVkQ3JlZGVudGlhbHMoKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6Q2xlYXJDYWNoZWRDcmVkZW50aWFscygpLCAwKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlRGF0YWJhc2VQcm9jZXNzKCkKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKCkKIHsKLSAgICBpZiAoIW1fZGF0YWJh
c2VQcm9jZXNzKQorICAgIGlmICghbV9zdG9yYWdlUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9kYXRhYmFzZVByb2Nlc3MtPnRlcm1pbmF0ZSgpOwotICAgIG1fZGF0YWJhc2VQcm9j
ZXNzID0gbnVsbHB0cjsKKyAgICBtX3N0b3JhZ2VQcm9jZXNzLT50ZXJtaW5hdGUoKTsKKyAgICBt
X3N0b3JhZ2VQcm9jZXNzID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVy
bWluYXRlTmV0d29ya1Byb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggZGY5ZWUyYTM2YTIzNTlhY2Y5YjdjZDVmNTQyY2YyMjlmNDJkNzUyNC4uZDhj
YTYzNGUxZGFhMmRjMDU2MDc3Yjc3Mzc1MjYwOThjOGU4MTdhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNjAsOCArMTYwLDggQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHZvaWQgc2VuZFN5bmNUb05ldHdvcmtp
bmdQcm9jZXNzKFQmJiBtZXNzYWdlLCBVJiYgcmVwbHkpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHZvaWQgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQm
JiBtZXNzYWdlKTsKIAotICAgIC8vIFNlbmRzIHRoZSBtZXNzYWdlIHRvIFdlYlByb2Nlc3Mgb3Ig
RGF0YWJhc2VQcm9jZXNzIGFzIGFwcHJvcG9yaWF0ZSBmb3IgY3VycmVudCBwcm9jZXNzIG1vZGVs
LgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSk7CisgICAgLy8gU2VuZHMgdGhlIG1lc3Nh
Z2UgdG8gV2ViUHJvY2VzcyBvciBTdG9yYWdlUHJvY2VzcyBhcyBhcHByb3BvcmlhdGUgZm9yIGN1
cnJlbnQgcHJvY2VzcyBtb2RlbC4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRU
b1N0b3JhZ2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSk7CiAKICAg
ICB2b2lkIHByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKQEAg
LTE5OSw3ICsxOTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHBpZF90IG5ldHdvcmtQcm9j
ZXNzSWRlbnRpZmllcigpOwotICAgIHBpZF90IGRhdGFiYXNlUHJvY2Vzc0lkZW50aWZpZXIoKTsK
KyAgICBwaWRfdCBzdG9yYWdlUHJvY2Vzc0lkZW50aWZpZXIoKTsKIAogICAgIHZvaWQgc2V0QWx3
YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRVc2VG
b250U21vb3RoaW5nKGJvb2wpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wpOwogCiAgICAgdm9p
ZCBjbGVhckNhY2hlZENyZWRlbnRpYWxzKCk7Ci0gICAgdm9pZCB0ZXJtaW5hdGVEYXRhYmFzZVBy
b2Nlc3MoKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKCk7CiAgICAgdm9pZCB0
ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCBzeW5jTmV0d29ya1Byb2Nlc3ND
b29raWVzKCk7CkBAIC0zMTIsMTAgKzMxMiwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwogCi0gICAgdm9pZCBl
bnN1cmVEYXRhYmFzZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUq
IHJlbGV2YW50RGF0YVN0b3JlKTsKLSAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KiBkYXRhYmFzZVBy
b2Nlc3MoKSB7IHJldHVybiBtX2RhdGFiYXNlUHJvY2Vzcy5nZXQoKTsgfQotICAgIHZvaWQgZ2V0
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKLSAgICB2b2lk
IGRhdGFiYXNlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSopOworICAgIHZvaWQg
ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUq
IHJlbGV2YW50RGF0YVN0b3JlKTsKKyAgICBTdG9yYWdlUHJvY2Vzc1Byb3h5KiBzdG9yYWdlUHJv
Y2VzcygpIHsgcmV0dXJuIG1fc3RvcmFnZVByb2Nlc3MuZ2V0KCk7IH0KKyAgICB2b2lkIGdldFN0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgc3Rv
cmFnZVByb2Nlc3NDcmFzaGVkKFN0b3JhZ2VQcm9jZXNzUHJveHkqKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwpAQCAt
NTQ5LDcgKzU0OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkhhbmRsZUhUVFBTU2VydmVy
VHJ1c3RFdmFsdWF0aW9uOwogICAgIGJvb2wgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoOwogICAg
IFJlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzOwotICAgIFJlZlB0
cjxTdG9yYWdlUHJvY2Vzc1Byb3h5PiBtX2RhdGFiYXNlUHJvY2VzczsKKyAgICBSZWZQdHI8U3Rv
cmFnZVByb2Nlc3NQcm94eT4gbV9zdG9yYWdlUHJvY2VzczsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+PiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0Pj4gbV9zdGF0aXN0
aWNzUmVxdWVzdHM7CkBAIC02MjcsMTAgKzYyNywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoVCYmIG1lc3NhZ2Up
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9E
YXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKQordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2VuZFRvU3RvcmFnZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KFQmJiBtZXNzYWdlKQogewotICAgIGVuc3VyZURhdGFiYXNlUHJvY2Vzc0FuZFdlYnNpdGVEYXRh
U3RvcmUobnVsbHB0cik7Ci0gICAgbV9kYXRhYmFzZVByb2Nlc3MtPnNlbmQoc3RkOjpmb3J3YXJk
PFQ+KG1lc3NhZ2UpLCAwKTsKKyAgICBlbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRh
U3RvcmUobnVsbHB0cik7CisgICAgbV9zdG9yYWdlUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8
VD4obWVzc2FnZSksIDApOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMzE2ODM4NDc0ODUyMWIxNDRh
MTQyMzRjNTFiYTg2YTZkZGU5YjBhYy4uNzA4NWNlOTI0MDZhNjZiYjE1NDRhOWEzMGE5NDYwMTZi
ZTMyNzczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC01NzMsOSArNTczLDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eToKICAgICBtX3Byb2Nl
c3NQb29sLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGTW92ZShyZXBseSkpOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6
RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC0+Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKHJlcGx5KSk7Cisg
ICAgbV9wcm9jZXNzUG9vbC0+Z2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKFdURk1vdmUocmVw
bHkpKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGFmZWJmM2Y5N2JjOTk2NDYxM2NlZmFlMDQ0ZGI1NDI2
MGU0YWMxYy4uMWVlNDhmN2NiMmRhOGViMzc1MmJjMDA3OGM1MzU1NGMwYWI5NmUwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTIxNCw3ICsyMTQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24odWludDY0X3Qg
cGx1Z2luUHJvY2Vzc1Rva2VuLCBSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAjZW5kaWYKICAgICB2b2lk
IGdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwotICAgIHZv
aWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAg
ICB2b2lkIGdldFN0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOwog
CiAgICAgYm9vbCBwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MWZmNzY1NzFlZmIwOGFhNDE4MTBhMmYyNTZlZjkwYzYyYzA0MTc5My4uYWQ2OWM1MmY0MDBjODY1
ZjNhNDllYmYwZmZkYmQyYzUyZWRlYzI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzcsNyArMzcsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikgLT4gKElQQzo6QXR0
YWNobWVudCBjb25uZWN0aW9uSGFuZGxlLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb24pIERlbGF5ZWQKICNlbmRpZgogICAgIEdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpIC0+IChJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAotICAgIEdl
dERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25IYW5kbGUpIERlbGF5ZWQKKyAgICBHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKSAtPiAo
SVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUpIERlbGF5ZWQKICAgICBQcm9jZXNzUmVh
ZHlUb1N1c3BlbmQoKQogICAgIERpZENhbmNlbFByb2Nlc3NTdXNwZW5zaW9uKCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCAzMDBiNWJmZTZlODFjMTFkMWFkOGQ3OTMyZmY4YzMxM2Y1NDlkOTFjLi45
MWMwM2U2MGQ4YjI2NDMxYmQxODFhODJiOGYxY2Y5M2NkZTFkZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cApAQCAtNDMzLDEwICs0MzMsMTAgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFB
bmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KIAogICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXMp
ICYmIGlzUGVyc2lzdGVudCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBw
cm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZURhdGFiYXNl
UHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhpcyk7CisgICAgICAgICAgICBwcm9jZXNzUG9v
bC0+ZW5zdXJlU3RvcmFnZVByb2Nlc3NBbmRXZWJzaXRlRGF0YVN0b3JlKHRoaXMpOwogCiAgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2VzcygpLT5mZXRjaFdlYnNpdGVEYXRhKG1f
c2Vzc2lvbklELCBkYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHByb2Nlc3NQb29sXShX
ZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnN0b3Jh
Z2VQcm9jZXNzKCktPmZldGNoV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgW2Nh
bGxiYWNrQWdncmVnYXRvciwgcHJvY2Vzc1Bvb2xdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7
CiAgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJh
Y2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KQEAg
LTcyNywxMCArNzI3LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyCiAKICAgICBpZiAoZGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSAmJiBp
c1BlcnNpc3RlbnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVEYXRhYmFzZVByb2Nl
c3NBbmRXZWJzaXRlRGF0YVN0b3JlKHRoaXMpOworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVu
c3VyZVN0b3JhZ2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlzKTsKIAogICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKLSAgICAgICAgICAg
IHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZGVsZXRlV2Vic2l0ZURhdGEobV9zZXNz
aW9uSUQsIGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgW2NhbGxiYWNrQWdncmVnYXRvciwgcHJv
Y2Vzc1Bvb2xdIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5zdG9yYWdlUHJvY2VzcygpLT5k
ZWxldGVXZWJzaXRlRGF0YShtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlLCBb
Y2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNzUG9vbF0gewogICAgICAgICAgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQpAQCAtMTAwNCwxMCArMTAwNCwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBW
ZQogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWRE
QkRhdGFiYXNlcykgJiYgaXNQZXJzaXN0ZW50KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZW5z
dXJlRGF0YWJhc2VQcm9jZXNzQW5kV2Vic2l0ZURhdGFTdG9yZSh0aGlzKTsKKyAgICAgICAgICAg
IHByb2Nlc3NQb29sLT5lbnN1cmVTdG9yYWdlUHJvY2Vzc0FuZFdlYnNpdGVEYXRhU3RvcmUodGhp
cyk7CiAKICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNr
KCk7Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+ZGF0YWJhc2VQcm9jZXNzKCktPmRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyhtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBbY2Fs
bGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNzUG9vbF0geworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wt
PnN0b3JhZ2VQcm9jZXNzKCktPmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhtX3Nlc3Npb25J
RCwgZGF0YVR5cGVzLCBvcmlnaW5zLCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNzUG9vbF0g
ewogICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxi
YWNrKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQW5kU2V0
VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW8KICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKHRydWUpOwogfQogCi1TdG9yYWdlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpkYXRhYmFzZVByb2Nlc3NQYXJhbWV0ZXJzKCkK
K1N0b3JhZ2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnN0b3Jh
Z2VQcm9jZXNzUGFyYW1ldGVycygpCiB7CiAgICAgcmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3Nh
cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGI1NDkyMmNlMjk4ZDNmMGI2M2UyOTU2NjJiNTg4YjI4
NDAzMjNlYTYuLjQyOTc0MDcwNzlhNzViNWE3ZWFiZWQ3NTdjZjJkOTg0NGIxNmZlNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Fzc29jaWF0
ZWRQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbCYpIGNvbnN0OwogCiAgICAgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycygpOwotICAgIFN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzIGRhdGFiYXNlUHJvY2Vzc1BhcmFtZXRlcnMoKTsKKyAgICBTdG9yYWdlUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyBzdG9yYWdlUHJvY2Vzc1BhcmFtZXRlcnMoKTsKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+IHBlbmRpbmdDb29raWVzKCkgY29uc3Q7CiAgICAgdm9pZCBh
ZGRQZW5kaW5nQ29va2llKGNvbnN0IFdlYkNvcmU6OkNvb2tpZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggNTRjMmQyODkxMDUxZjAzMjIy
NjlkNTVhZTRmNGM1MDM1NWRjMzNmMS4uNGQ3NmZiYjQzZTBjZGFkOTJiOGQ3ZWYyMjg1MTQ4MTQ4
NTJjZTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6fldlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcigpCiAKIElQQzo6Q29ubmVjdGlvbiogV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpCiB7Ci0gICAgcmV0dXJuICZXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpOworICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9TdG9yYWdl
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpOwogfQogCiBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Ub1NlcnZlciYgV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpjb3JlQ29ubmVjdGlv
blRvU2VydmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFz
ZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgK
aW5kZXggZDE2M2MwOTBiZmVjZjIwMjEzYTA4NWJjY2I3ZjllZTUwODFjYjYwMy4uYzc5ZTA0MWQ0
ZjE4YTMyMDhhZDFhZjI4MTgxOGYxNTQzZDQ4ZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcj46
OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI+OjpkZXJlZigpOyB9CiAKLSAgICAvLyBNZXNzYWdlcyByZWNlaXZl
ZCBmcm9tIERhdGFiYXNlUHJvY2VzcworICAgIC8vIE1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gU3Rv
cmFnZVByb2Nlc3MKICAgICB2b2lkIGRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKaW5kZXggNWNmN2ZkMmIzMjU4
MTMxOTA1OTYzMjU2NjYzNjI1Mjc1YjMxOGNhNi4uMmI4N2JhZjk0ZTdiZDI1MWMwNjIwNDBhODcx
Y2UyMjNiOWJmYmRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwCkBAIC03OSw4ICs3OSw4IEBAIFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJEYXRhYmFzZVByb3Zp
ZGVyOjppZGJDb25uZWN0aW9uVG9TCiAgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5jb25uZWN0aW9uVG9TZXJ2ZXIoKTsKICAgICB9CiAKLSAgICBBU1NFUlQoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKCkpOwotICAgIHJl
dHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+aWRiQ29ubmVjdGlvblRvU2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvcmVDb25u
ZWN0aW9uVG9TZXJ2ZXIoKTsKKyAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCktPmlkYkNvbm5lY3Rpb25U
b1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5jb3JlQ29ubmVjdGlvblRvU2VydmVyKCk7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDAwMTIx
ODUzZWZkMzI4YTllNTNmMmFmZTgzYzM3NjYxYzljNTJlY2QuLjZiMjdkNzgxZDJkMTliZTI0YjQ3
NDAzY2U0YmJkNjhmMWZlYTE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTM1LDE3ICszNSwxNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6V2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKK1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpXZWJUb1N0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlv
bklkZW50aWZpZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVD
bGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcykpCiB7CiAgICAgbV9j
b25uZWN0aW9uLT5vcGVuKCk7CiB9CiAKLVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6
fldlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJUb1N0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbjo6fldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCkKIHsKIH0KIAotdm9pZCBX
ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
ewpAQCAtNTksNyArNTksNyBAQCB2b2lkIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9pZCBXZWJUb1N0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQog
ewogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGZvciAoYXV0byYgY29ubmVjdGlv
biA6IG1fd2ViSURCQ29ubmVjdGlvbnNCeUlkZW50aWZpZXIudmFsdWVzKCkpCkBAIC02OSwxNSAr
NjksMTUgQEAgdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICBtX3dlYklEQkNvbm5lY3Rpb25zQnlTZXNz
aW9uLmNsZWFyKCk7CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCh0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCh0aGlzKTsKIH0K
IAotdm9pZCBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKK3ZvaWQgV2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkKIHsKIH0KIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQotV2ViSURCQ29ubmVjdGlvblRvU2VydmVyJiBXZWJUb0RhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb246OmlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oY29uc3QgU2Vzc2lv
bklEJiBzZXNzaW9uSUQpCitXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYlRvU3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uOjppZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKGNvbnN0IFNl
c3Npb25JRCYgc2Vzc2lvbklEKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV93ZWJJREJDb25uZWN0
aW9uc0J5U2Vzc2lvbi5hZGQoc2Vzc2lvbklELCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDBmMWNhOTI0
YWZmMjY5N2U5Mzk3ZDZhOGIyNjlmODM2NTBmNjAxNmUuLjI0MjZlNmNhZmIyMGYzNWIyNTc0Y2Yy
NzhjYjg1ODA5NWY2YThhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAt
MzgsMTMgKzM4LDEzIEBAIGNsYXNzIFNlc3Npb25JRDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbj4sIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudCwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJUb1N0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlRvU3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uPiwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlRvRGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVu
dGlmaWVyKSk7CiAgICAgfQotICAgIH5XZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
KyAgICB+V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICAKICAgICBJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KIApA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJUb0Rh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKKyAg
ICBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGM2NDgxMDUwOTI2NWY2MWE0
NzdhYjExNzFiMzA3NmUwNWY1NDUwNmIuLjZiYWI1NDVmMWRkNTI3NjU5ZjZhMWZlMWUzNDMzMjlm
MzJlMDNiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEx
MzksMzEgKzExMzksMzAgQEAgV2ViTG9hZGVyU3RyYXRlZ3kmIFdlYlByb2Nlc3M6OndlYkxvYWRl
clN0cmF0ZWd5KCkKICAgICByZXR1cm4gbV93ZWJMb2FkZXJTdHJhdGVneTsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzOjp3ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9EYXRh
YmFzZVByb2Nlc3NDb25uZWN0aW9uKiBjb25uZWN0aW9uKQordm9pZCBXZWJQcm9jZXNzOjp3ZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbiogY29ubmVjdGlvbikKIHsKLSAgICBBU1NFUlQobV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24pOwotICAgIEFTU0VSVChtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiA9
PSBjb25uZWN0aW9uKTsKKyAgICBBU1NFUlQobV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bik7CisgICAgQVNTRVJUKG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gPT0gY29ubmVj
dGlvbik7CiAKLSAgICBtX3dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiA9IG51bGxwdHI7
CisgICAgbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKLVdl
YlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbiogV2ViUHJvY2Vzczo6d2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uKCkKK1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKiBXZWJQcm9j
ZXNzOjp3ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKCFtX3dlYlRv
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbikKLSAgICAgICAgZW5zdXJlV2ViVG9EYXRhYmFzZVBy
b2Nlc3NDb25uZWN0aW9uKCk7CisgICAgaWYgKCFtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0
aW9uKQorICAgICAgICBlbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpOwogCi0g
ICAgcmV0dXJuIG1fd2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmdldCgpOworICAgIHJl
dHVybiBtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmdldCgpOwogfQogCi12b2lkIFdl
YlByb2Nlc3M6OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbigpCit2b2lkIFdl
YlByb2Nlc3M6OmVuc3VyZVdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCkKIHsKLSAgICBp
ZiAobV93ZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgaWYgKG1fd2ViVG9TdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIElQQzo6QXR0YWNo
bWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXI7CiAKLSAgICBpZiAoIXBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERh
dGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oKSwKLSAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyKSwgMCkpCisgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb24oKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nlc3NDb25u
ZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpLCAwKSkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC0xMTc1LDcgKzExNzQs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bigpCiAjZW5kaWYKICAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNOdWxsKGNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fd2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uID0gV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGUoY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmhhbmNlZEFjY2Vzc2liaWxp
dHkoYm9vbCBmbGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNjBk
M2VkNDBhYmNhNmZmMmFkNDNhMTI0YmU5YjMxZGRkNTk5OGQzMS4uZTBiZjg2YTYzMmRmNzhkZjVj
ZmQ3Y2EzZGRkZDM2YTRjOTFjNTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIFdlYkxvYWRlclN0cmF0ZWd5OwogY2xhc3MgV2Vi
UGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1N1cHBsZW1l
bnQ7Ci1jbGFzcyBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBXZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUGFnZUdyb3VwRGF0YTsK
QEAgLTE2NCw4ICsxNjQsOCBAQCBwdWJsaWM6CiAgICAgTGliV2ViUlRDTmV0d29yayYgbGliV2Vi
UlRDTmV0d29yaygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHdlYlRvRGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbkNsb3NlZChXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKLSAgICBXZWJU
b0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24qIHdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlv
bigpOworICAgIHZvaWQgd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKKyAgICBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbiogd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2V0Q2Fj
aGVNb2RlbCh1aW50MzJfdCk7CiAKQEAgLTM4Myw4ICszODMsOCBAQCBwcml2YXRlOgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+IG1fYXV0b21hdGlvblNl
c3Npb25Qcm94eTsKIAotICAgIHZvaWQgZW5zdXJlV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uKCk7Ci0gICAgUmVmUHRyPFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbj4gbV93ZWJU
b0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgdm9pZCBlbnN1cmVXZWJUb1N0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbigpOworICAgIFJlZlB0cjxXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbj4gbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjsKIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI+IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZkZTJlMTI1OTIxNzM4NTFiNmRhM2U0
ZDY2MzFlYzg2ZTViNWEyNWMuLmY3NmIwYzhiYjZmNzMyNWE1NGM2MDRlMzFiM2E0OWM2MjE0NzRm
MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxNy0wOC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUGFydCAyIG9mOiBSZW5hbWUgRGF0YWJhc2VQcm9jZXNzIHRvIFN0b3Jh
Z2VQcm9jZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc0ODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkRlbGV0ZVJlY292ZXJ5Lm1tOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkluZGV4VXBncmFk
ZVRvVjIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5k
ZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW06CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCUGVyc2lzdGVuY2UubW06Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9X
ZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorCiAyMDE3LTA3
LTMxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4
IEpTQ09ubHkgQVJNIGJ1aWxkYm90cyBhZnRlciByMjIwMDQ3CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JREJEZWxldGVSZWNvdmVyeS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkRlbGV0ZVJlY292ZXJ5Lm1t
CmluZGV4IDU5YTQ0NjU2MDMzMTZiNDA0Y2Y4NmU5ZjE4NjYyZjkwYTdjMWZkNDAuLmQxZmZmMmY4
NzA0YTNiODY1ZTJkNDhkMzg2ZWI5NjcxNzFhNWUwY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkRlbGV0ZVJlY292ZXJ5Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkRlbGV0ZVJlY292ZXJ5Lm1t
CkBAIC01OSw3ICs1OSw3IEBAIFRFU1QoSW5kZXhlZERCLCBEZWxldGVSZWNvdmVyeSkKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKIAotICAgIFtjb25maWd1cmF0aW9uLmdldCgp
LnByb2Nlc3NQb29sIF90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3NdOworICAgIFtjb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc107CiAKICAgICAv
LyBDb3B5IHRoZSBpbmNvbnNpc3RlbnQgZGF0YWJhc2UgZmlsZXMgdG8gdGhlIGRhdGFiYXNlIGRp
cmVjdG9yeQogICAgIE5TVVJMICp1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAIklEQkRlbGV0ZVJlY292ZXJ5IiB3aXRoRXh0ZW5zaW9uOkAic3FsaXRlMyIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkluZGV4VXBncmFkZVRvVjIubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JREJJbmRleFVwZ3JhZGVU
b1YyLm1tCmluZGV4IDM2YzQ3OWQ3NTVlNTU4YWY4ODRmMmE1MWRhMTM0MTQ3YTg3NjFjMDAuLmUw
ODViZWM4MDc2M2FlNzQ5NzVlNzU2ODY0MzFjMWQ4Yjg2MzE2YWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0lEQkluZGV4VXBncmFkZVRvVjIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSURCSW5kZXhVcGdy
YWRlVG9WMi5tbQpAQCAtNTksNyArNTksNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhVcGdyYWRl
VG9WMikKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKIAotICAgIFtjb25maWd1
cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3NdOworICAg
IFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vz
c107CiAKICAgICAvLyBDb3B5IHRoZSBpbmNvbnNpc3RlbnQgZGF0YWJhc2UgZmlsZXMgdG8gdGhl
IGRhdGFiYXNlIGRpcmVjdG9yeQogICAgIE5TVVJMICp1cmwxID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkluZGV4VXBncmFkZSIgd2l0aEV4dGVuc2lvbjpAInNxbGl0
ZTMiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJEYXRhYmFz
ZVByb2Nlc3NLaWxsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
SW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbQppbmRleCA3OTA0ZmFjNjY4Y2ViYmE2ZTNi
MThjZGQ1ZGFkMjc4MWVjMTYzZGVkLi4zOTFjMWM0ZTlhNmFkMGEyOWRiZTcwYzEzNzg0NTFjYmZj
MmYwMjU4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9JbmRleGVkREJEYXRhYmFzZVByb2Nlc3NLaWxsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW0KQEAg
LTk0LDcgKzk0LDcgQEAgVEVTVChJbmRleGVkREIsIERhdGFiYXNlUHJvY2Vzc0tpbGwpCiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAg
ICAgICAgaWYgKCFraWxsZWREQlByb2Nlc3MgJiYgb3BlblJlcXVlc3RVcGdyYWRlTmVlZGVkKSB7
CiAgICAgICAgICAgICBraWxsZWREQlByb2Nlc3MgPSB0cnVlOwotICAgICAgICAgICAgW2NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2Vzc107Cisg
ICAgICAgICAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfdGVybWluYXRlU3Rv
cmFnZVByb2Nlc3NdOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nlc3MubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJNdWx0aVByb2Nl
c3MubW0KaW5kZXggNDgwYzQxZDdlMDM1NTFiNmUzOTM0YjkwMGNkMjYyNTg0NjU5NzJmMi4uMWY3
MDlkZThjNDdlMGI5MTNiODg3MjgxNDVkZTU0YTM3NWZlNzY5MiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQk11
bHRpUHJvY2Vzcy5tbQpAQCAtNzEsNyArNzEsNyBAQCBURVNUKEluZGV4ZWREQiwgSW5kZXhlZERC
TXVsdGlQcm9jZXNzKQogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwogCi0gICAg
W2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2Vz
c107CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZVN0b3Jh
Z2VQcm9jZXNzXTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9JbmRleGVkREJQZXJzaXN0ZW5j
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQlBl
cnNpc3RlbmNlLm1tCmluZGV4IGNkMWJjOTVkNDk2NDNkMWY0NGUzZWRmMjhjMGYxNGY3N2I3NWFm
MTguLmRhNmY5MjRkMTVjOTQwNTE5ZDM0OWRkZDU4NDQ5ZTNlOTc4Zjg0NTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4ZWREQlBlcnNpc3Rl
bmNlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0luZGV4
ZWREQlBlcnNpc3RlbmNlLm1tCkBAIC03NSw4ICs3NSw4IEBAIFRFU1QoSW5kZXhlZERCLCBJbmRl
eGVkREJQZXJzaXN0ZW5jZSkKICAgICAvLyBEaXRjaCB0aGlzIHdlYiB2aWV3IChkaXRjaGluZyBp
dHMgd2ViIHByb2Nlc3MpCiAgICAgd2ViVmlldyA9IG5pbDsKIAotICAgIC8vIFRlcm1pbmF0ZSB0
aGUgZGF0YWJhc2UgcHJvY2VzcwotICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29s
IF90ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3NdOworICAgIC8vIFRlcm1pbmF0ZSB0aGUgc3RvcmFn
ZSBwcm9jZXNzCisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0
ZVN0b3JhZ2VQcm9jZXNzXTsKIAogICAgIC8vIE1ha2UgYSBuZXcgd2ViIHZpZXcgdG8gZmluaXNo
IHRoZSB0ZXN0CiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQppbmRleCA3Zjcy
MTA5MWQ5NWVmYTM3MTdhYjEzNzhhMWVmMmVjMWU4ODk5NGFiLi5jODE3MDdiNDY3NWJmMmZiZTY3
MTU3ZTI2YzhlY2RmODIxYjU1MDcyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0K
QEAgLTEyMyw3ICsxMjMsNyBAQCBURVNUKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsIENoaWxkUHJv
Y2Vzc2VzTm90TGF1bmNoZWQpCiAgICAgLy8gRW5zdXJlIHRoZSBzaGFyZWQgcHJvY2VzcyBwb29s
IGV4aXN0cyBzbyB0aGUgZGF0YSBzdG9yZSBvcGVyYXRpb25zIHdlJ3JlIGFib3V0IHRvIGRvIHdv
cmsgd2l0aCBpdC4KICAgICBXS1Byb2Nlc3NQb29sICpzaGFyZWRQcm9jZXNzUG9vbCA9IFtXS1By
b2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNzUG9vbF07CiAKLSAgICBFWFBFQ1RfRVEoKHBpZF90KTAs
IFtzaGFyZWRQcm9jZXNzUG9vbCBfZGF0YWJhc2VQcm9jZXNzSWRlbnRpZmllcl0pOworICAgIEVY
UEVDVF9FUSgocGlkX3QpMCwgW3NoYXJlZFByb2Nlc3NQb29sIF9zdG9yYWdlUHJvY2Vzc0lkZW50
aWZpZXJdKTsKICAgICBFWFBFQ1RfRVEoKHNpemVfdCkwLCBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3Bs
dWdpblByb2Nlc3NDb3VudF0pOwogCiAgICAgYXV0byAqZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBURVNUKFJlc291
cmNlTG9hZFN0YXRpc3RpY3MsIENoaWxkUHJvY2Vzc2VzTm90TGF1bmNoZWQpCiAKICAgICBFWFBF
Q1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6
dGFyZ2V0VVJMLnBhdGhdKTsKIAotICAgIEVYUEVDVF9FUSgocGlkX3QpMCwgW3NoYXJlZFByb2Nl
c3NQb29sIF9kYXRhYmFzZVByb2Nlc3NJZGVudGlmaWVyXSk7CisgICAgRVhQRUNUX0VRKChwaWRf
dCkwLCBbc2hhcmVkUHJvY2Vzc1Bvb2wgX3N0b3JhZ2VQcm9jZXNzSWRlbnRpZmllcl0pOwogICAg
IEVYUEVDVF9FUSgoc2l6ZV90KTAsIFtzaGFyZWRQcm9jZXNzUG9vbCBfcGx1Z2luUHJvY2Vzc0Nv
dW50XSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbQppbmRleCBlYjQw
OTdmMzVmY2I4MjQ4NWNhZDc3OTdiNjg2NWE4NjE5Y2FlN2E1Li5jNWM5YzMxM2RhMTY2MDMzZGJh
ZjM3NGNjNzJmY2I0OGQwMDFkNmM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVw
Lm1tCkBAIC03Miw3ICs3Miw3IEBAIFRFU1QoSW5kZXhlZERCLCBXZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXApCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CiAKLSAgICBbY29uZmln
dXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfdGVybWluYXRlRGF0YWJhc2VQcm9jZXNzXTsKKyAg
ICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfdGVybWluYXRlU3RvcmFnZVByb2Nl
c3NdOwogCiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRo
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocy5tbQppbmRleCAwYjNjZTlhN2RlNmE0ODY0MWQwODk1YTU2NGU2ZTQ3
MDhkYzFjNjg5Li45YjFiYTFlOWZjZjZjZjEwZmVlZTBhN2RhN2QzZDY4YTRkMjQxMzUzIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0xMjEsNyArMTIxLDcg
QEAgVEVTVChXZWJLaXQyLCBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMpCiAgICAgW1tbd2Vi
VmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3N5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tp
ZXNdOwogCiAgICAgLy8gRm9yY2libHkgc2h1dCBkb3duIGV2ZXJ5dGhpbmcgb2YgV2ViS2l0IHRo
YXQgd2UgY2FuLgotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF90
ZXJtaW5hdGVEYXRhYmFzZVByb2Nlc3NdOworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0g
cHJvY2Vzc1Bvb2xdIF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc107CiAgICAgYXV0byBwaWQgPSBb
d2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogICAgIGlmIChwaWQpCiAgICAgICAgIGtp
bGwocGlkLCBTSUdLSUxMKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBURVNUKFdlYktpdDIsIFdlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocykKIAogICAgIC8vIERhdGEgc3RvcmVzIGNhbid0IGRlbGV0
ZSBhbnl0aGluZyB1bmxlc3MgYSBXS1Byb2Nlc3NQb29sIGV4aXN0cywgc28gbWFrZSBzdXJlIHRo
ZSBzaGFyZWQgZGF0YSBzdG9yZSBleGlzdHMuCiAgICAgYXV0byAqcHJvY2Vzc1Bvb2wgPSBbV0tQ
cm9jZXNzUG9vbCBfc2hhcmVkUHJvY2Vzc1Bvb2xdOwotICAgIFtwcm9jZXNzUG9vbCBfdGVybWlu
YXRlRGF0YWJhc2VQcm9jZXNzXTsKKyAgICBbcHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZVN0b3JhZ2VQ
cm9jZXNzXTsKICAgICBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBkYXRhU3RvcmUgPSBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV07CiAgICAgUmV0YWluUHRyPE5TU2V0PiB0eXBl
cyA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFU
eXBlSW5kZXhlZERCRGF0YWJhc2VzLCBuaWxdKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>