<?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>157072</bug_id>
          
          <creation_ts>2016-04-27 09:13:43 -0700</creation_ts>
          <short_desc>Modern IDB: Implement native IDBFactory.getAllDatabaseNames for WebInspector</short_desc>
          <delta_ts>2016-05-31 11:29:44 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>154686</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187762</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-27 09:13:43 -0700</bug_when>
    <thetext>Modern IDB: Implement native IDBFactory.getAllDatabaseNames for WebInspector

This is for internal use only, not meant for bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187998</commentid>
    <comment_count>1</comment_count>
      <attachid>277546</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-27 16:09:05 -0700</bug_when>
    <thetext>Created attachment 277546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188000</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 16:11:13 -0700</bug_when>
    <thetext>Attachment 277546 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp:414:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBFactory.cpp:162:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBFactory.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 7 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>1188008</commentid>
    <comment_count>3</comment_count>
      <attachid>277546</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-27 16:36:08 -0700</bug_when>
    <thetext>Comment on attachment 277546
Patch

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

&gt; Source/WTF/wtf/HexNumber.h:117
&gt; +    return (c &gt;= &apos;0&apos; &amp;&amp; c &lt;= &apos;9&apos;) || (c &gt;= &apos;A&apos; &amp;&amp; c &lt;= &apos;F&apos;) || (c &gt;= &apos;a&apos; &amp;&amp; c &lt;= &apos;f&apos;);

We can mask the characters then compare to reduce the number of operations done here.

&gt; Source/WTF/wtf/HexNumber.h:120
&gt; +inline char hexDigit(int i)

&quot;unchecked&quot; here would match uncheckedHexDigitValue

&gt; Source/WTF/wtf/HexNumber.h:125
&gt; +    return (i &gt;= 10) ? i - 10 + &apos;A&apos; : i += &apos;0&apos;; 

+=?  This only needs to be +.  Probably optimized out, though.

&gt; Source/WebCore/platform/FileSystem.cpp:150
&gt; +        if (i + 2 &lt; length)

&gt;=

&gt; Source/WebCore/platform/FileSystem.cpp:168
&gt; +        if (i + 5 &lt; length)

&gt;=</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188010</commentid>
    <comment_count>4</comment_count>
      <attachid>277546</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-27 16:38:55 -0700</bug_when>
    <thetext>Comment on attachment 277546
Patch

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

&gt; Source/WebCore/platform/posix/FileSystemPOSIX.cpp:260
&gt; +String lastComponentOfPathIgnoringTrailingSlash(const String&amp; path)

This is not implemented in GTK.  Move to FileSystem.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188021</commentid>
    <comment_count>5</comment_count>
      <attachid>277548</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-27 16:55:52 -0700</bug_when>
    <thetext>Created attachment 277548
Patch for EWS + landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188023</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 16:59:15 -0700</bug_when>
    <thetext>Attachment 277548 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp:414:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h:146:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBFactory.cpp:162:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBFactory.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 7 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>1188054</commentid>
    <comment_count>7</comment_count>
      <attachid>277548</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 18:16:01 -0700</bug_when>
    <thetext>Comment on attachment 277548
Patch for EWS + landing

Clearing flags on attachment: 277548

Committed r200163: &lt;http://trac.webkit.org/changeset/200163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188055</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-27 18:16:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188108</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-27 20:24:52 -0700</bug_when>
    <thetext>Welp, EFL doesn&apos;t use FileSystemGlib, apparently... *sigh*

Working on a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188111</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-04-27 20:33:37 -0700</bug_when>
    <thetext>EFL build fix attempted in http://trac.webkit.org/changeset/200168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197224</commentid>
    <comment_count>11</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-05-27 14:36:15 -0700</bug_when>
    <thetext>I think that instead of lastComponentOfPathIgnoringTrailingSlash() introduction it would be better to add a possibility to get list of relative paths from listDirectory().

Right now, listDirectory() implementations (posix and glib) iterate through file names in a directory and convert them to absolute. After that, you extract that original file name from absolute path with lastComponentOfPathIgnoringTrailingSlash().

Looks like the easiest way is to add a flag to listDirectory to control if absolute or relative paths are requested.

If you like this proposal I can prepare the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197833</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-31 11:06:53 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; If you like this proposal I can prepare the patch.
If you think you can make this cleaner then it never hurts to prepare a patch.  Once we see an implementation, the worst we could do is reject it.  I would believe this could be done cleaner, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197852</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-31 11:29:44 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; If you like this proposal I can prepare the patch.
&gt; If you think you can make this cleaner then it never hurts to prepare a
&gt; patch.  Once we see an implementation, the worst we could do is reject it. 
&gt; I would believe this could be done cleaner, though.

Just please do it in a new bug.

It&apos;s harmful to discuss future plans in an already-resolved bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277546</attachid>
            <date>2016-04-27 16:09:05 -0700</date>
            <delta_ts>2016-04-27 16:55:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157072-20160427160936.patch</filename>
            <type>text/plain</type>
            <size>64983</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhiNzJmZjdmNjc5NGMwYzQ0NzNjODJl
MjZjODBjYWZlYzhkNzkxMzkuLmEyMTA0MTM1YmQ4MDIzYmQ2MTFkN2IwNzc3MWUyMDljZTEwMDA1
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDQtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6IEltcGxlbWVudCBuYXRpdmUgSURC
RmFjdG9yeS5nZXRBbGxEYXRhYmFzZU5hbWVzIGZvciBXZWJJbnNwZWN0b3IuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGVzZSBIZXggRGln
aXQgdXRpbGl0aWVzIGZyb20gV2ViQ29yZSBVUkwgY29kZSAoPz8/KSwgCisgICAgICAgIGFuZCBh
ZGQgYSBjaGVja2VkIHZlcnNpb24gb2YgZ2V0dGluZyB0aGUgaGV4IGRpZ2l0IHZhbHVlLgorICAg
ICAgICAKKyAgICAgICAgKiB3dGYvSGV4TnVtYmVyLmg6CisgICAgICAgIChXVEY6OmlzSGV4RGln
aXQpOgorICAgICAgICAoV1RGOjpoZXhEaWdpdCk6CisgICAgICAgIChXVEY6OmhleERpZ2l0VmFs
dWUpOgorICAgICAgICAoV1RGOjp1bmNoZWNrZWRIZXhEaWdpdFZhbHVlKToKKwogMjAxNi0wNC0y
NSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhl
IGJ1aWxkIGZsYWcgZm9yIHRlbXBsYXRlIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkYjhjN2Ri
MmZmMTgxMDEzZDVkNDRiNTQ5YTc3NGZkZjM2ODM1Yy4uNjU0OTRjOTIyMTA0OTVlNTAyMTIwYjFl
M2RjZDhlYjFmOWFlYmRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk0IEBACiAyMDE2LTA0LTI3
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBNb2Rlcm4gSURC
OiBJbXBsZW1lbnQgbmF0aXZlIElEQkZhY3RvcnkuZ2V0QWxsRGF0YWJhc2VOYW1lcyBmb3IgV2Vi
SW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU3MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChDb3ZlcmVkIGJ5IGNoYW5nZXMgdG8gZXhpc3RpbmcgdGVzdCkuCisK
KyAgICAgICAgSW1wbGVtZW50IGEgbmV3ICJnZXRBbGxEYXRhYmFzZU5hbWVzIiBjYWxsIG9uIElE
QkZhY3RvcnkuCisgICAgICAgIAorICAgICAgICBJdCBpcyBub3QgZXhwb3NlZCB0byB0aGUgRE9N
LCBhbmQgaXMgbWVhbnQgc29sZWx5IGZvciBpbnRlcm5hbCBXZWJJbnNwZWN0b3IgdXNlLgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmg6IEV4
cG9ydCBzb21lIHN0dWZmIHRvIFdlYkNvcmVUZXN0U3VwcG9ydAorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5OjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5OjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpk
aWRHZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRHZXRBbGxEYXRh
YmFzZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVj
dGlvblRvQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURC
U2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyk6IERvIHRoZSBhY3R1YWwg
d29yayBvZiBnZXR0aW5nIAorICAgICAgICAgIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnkgbGlz
dGluZyBhbmQgY29udmVydGluZyB0aGUgcGF0aHMgdG8gZGF0YWJhc2UgbmFtZXMuCisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0
YWJhc2VOYW1lRnJvbUVuY29kZWRGaWxlbmFtZSk6IEhlbHBlciBmb3IgSURCU2VydmVyLgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFz
ZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxs
RGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5oOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50Ojpy
ZXF1ZXN0RGF0YWJhc2VOYW1lcyk6IFVzZSB0aGUgbmV3IElEQkZhY3RvcnkgQVBJIHRvCisgICAg
ICAgICAgYXN5bmNocm9ub3VzbHkgZ2V0IHRoZSBsaXN0IG9mIGRhdGFiYXNlIG5hbWVzLgorCisg
ICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3I8
U3RyaW5nPj46OmNvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRlY29kZUZyb21GaWxlbmFtZSk6IFBlcmZvcm0gdGhlIHJldmVyc2Ugb2YgZW5jb2RlRm9yRmls
ZW5hbWUuCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorCisgICAgICAgICogcGxh
dGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxhc3RDb21wb25lbnRPZlBhdGhJZ25v
cmluZ1RyYWlsaW5nU2xhc2gpOiBVdGlsaXR5IGZvciBwZWVsaW5nIG9mZiB0aGUgbGFzdCBjb21w
b25lbnQKKyAgICAgICAgICBvZiBhIG11bHRpLWNvbXBvbmVudCBwYXRoLgorICAgICAgICAoV2Vi
Q29yZTo6bGlzdERpcmVjdG9yeSk6IFRoaXMgd2FzIGJyb2tlbiB3aGVuIHJldHVybmluZyBmaWxl
bmFtZXMgd2l0aCBVVEYgaW4gdGhlbS4gRml4IGl0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOiBNb3ZlIHRoZSBzdGF0aWMgaGV4IGRpZ2l0
IHV0aWxpdHkgZnVuY3Rpb25zIHRvIFdURi4KKyAgICAgICAgKFdlYkNvcmU6OnVzZXJWaXNpYmxl
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVXNlclZpc2libGVVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6aXNIZXhEaWdpdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpoZXhEaWdp
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpoZXhEaWdpdFZhbHVlKTogRGVsZXRlZC4K
KyAgICAKKworMjAxNi0wNC0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
ICAgICAgICAgTW9kZXJuaXplIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggc3R5bGUuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcxMDYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDQyODExYjdlNDdhNDczNTI2YmNhZDJmZjcxMmU5YmY5MTg0OGM5OTYuLjll
N2QzMzkwNmU5NDI3ZGFmMzYyNTM3Yjk5NzI4MWFkOGUxMzY1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0wNC0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTW9kZXJuIElEQjogSW1wbGVtZW50IG5hdGl2ZSBJREJGYWN0b3J5LmdldEFs
bERhdGFiYXNlTmFtZXMgZm9yIFdlYkluc3BlY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSB0aGUgcHJvY2VzcyBob3AgZm9yIHRoZSBu
ZXcgZ2V0QWxsRGF0YWJhc2VOYW1lcyBjYWxsLgorICAgICAgICAKKyAgICAgICAgKiBEYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1l
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6Z2V0QWxsRGF0
YWJhc2VOYW1lcyk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFNoYXJl
ZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+Ojpjb3B5KTogRGVsZXRlZCwgYXMgaXRzIGluIFdlYkNvcmUgbm93LgorICAgICAg
ICAqIFNoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5oOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1l
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkR2V0QWxs
RGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW46CisKIDIw
MTYtMDQtMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW1vdmUgZG93bmxvYWQgbWVzc2FnZSByZWNlaXZlciB3aGVuIE5ldHdvcmtQcm9j
ZXNzIGNyYXNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oIGIvU291
cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKaW5kZXggNzQxYThjMWI1YWUwMzAzYzQxNWU4ZGY3ZDA3
MzU3OTkxZGRjMGZhNi4uYTVhYjM3OWIwZmYyMjI1NDZiNmFjMGYxNjU1OWUzODU0NmNhOGVlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGV4TnVtYmVyLmgKKysrIGIvU291cmNlL1dURi93
dGYvSGV4TnVtYmVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMTcsOCArMTgsNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCiAgKi8KIAotI2lmbmRlZiBIZXhOdW1iZXJfaAotI2RlZmluZSBIZXhOdW1iZXJfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCkBA
IC0xMTEsNiArMTExLDU0IEBAIGlubGluZSB2b2lkIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNp
emUodW5zaWduZWQgbnVtYmVyLCBUJiBkZXN0aW5hdGlvbiwgdW5zaWduCiAgICAgZGVzdGluYXRp
b24uYXBwZW5kKHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOwogfQogCisKK2lubGluZSBi
b29sIGlzSGV4RGlnaXQoY2hhciBjKQoreworICAgIHJldHVybiAoYyA+PSAnMCcgJiYgYyA8PSAn
OScpIHx8IChjID49ICdBJyAmJiBjIDw9ICdGJykgfHwgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKTsK
K30KKworaW5saW5lIGNoYXIgaGV4RGlnaXQoaW50IGkpCit7CisgICAgaWYgKGkgPCAwIHx8IGkg
PiAxNikKKyAgICAgICAgcmV0dXJuICcwJzsKKworICAgIHJldHVybiAoaSA+PSAxMCkgPyBpIC0g
MTAgKyAnQScgOiBpICs9ICcwJzsgCit9CisKK2lubGluZSBib29sIGhleERpZ2l0VmFsdWUoY2hh
ciBjLCBjaGFyJiByZXN1bHQpCit7CisgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7Cisg
ICAgICAgIHJlc3VsdCA9IGMgLSAnMCc7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICByZXN1bHQgPSBjIC0gJ0En
ICsgMTA7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChjID49ICdhJyAm
JiBjIDw9ICdmJykgeworICAgICAgICByZXN1bHQgPSBjIC0gJ2EnICsgMTA7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIGludCB1
bmNoZWNrZWRIZXhEaWdpdFZhbHVlKGNoYXIgYykKK3sKKyAgICBpZiAoYyA+PSAnMCcgJiYgYyA8
PSAnOScpCisgICAgICAgIHJldHVybiBjIC0gJzAnOworCisgICAgaWYgKGMgPj0gJ0EnICYmIGMg
PD0gJ0YnKQorICAgICAgICByZXR1cm4gYyAtICdBJyArIDEwOworCisgICAgaWYgKGMgPj0gJ2En
ICYmIGMgPD0gJ2YnKQorICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOworCisgICAgcmV0dXJu
IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmFwcGVuZEJ5dGVBc0hl
eDsKQEAgLTExOSw1ICsxNjcsNyBAQCB1c2luZyBXVEY6OmFwcGVuZFVuc2lnbmVkQXNIZXhGaXhl
ZFNpemU7CiB1c2luZyBXVEY6OnBsYWNlQnl0ZUFzSGV4OwogdXNpbmcgV1RGOjpwbGFjZUJ5dGVB
c0hleENvbXByZXNzSWZQb3NzaWJsZTsKIHVzaW5nIFdURjo6TG93ZXJjYXNlOwotCi0jZW5kaWYg
Ly8gSGV4TnVtYmVyX2gKK3VzaW5nIFdURjo6aXNIZXhEaWdpdDsKK3VzaW5nIFdURjo6aGV4RGln
aXQ7Cit1c2luZyBXVEY6OmhleERpZ2l0VmFsdWU7Cit1c2luZyBXVEY6OnVuY2hlY2tlZEhleERp
Z2l0VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oCmluZGV4IDA3M2I1OTM1NTFiZWQxMDA1NWZi
ZDM1MjdiYWE2Y2M2YmZmY2JkODAuLjBjNmU4MzBmMDZmNGJlZjYwYzc3YWViZTdiMTI4NmQ5OGJj
YzhmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIGZyb20oRE9NV2luZG93Kik7
CiAKLSAgICBzdGF0aWMgSURCRmFjdG9yeSogaW5kZXhlZERCKERPTVdpbmRvdyYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBJREJGYWN0b3J5KiBpbmRleGVkREIoRE9NV2luZG93Jik7CiAK
ICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZUZvckRvY3VtZW50U3VzcGVuc2lvbigpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKEZyYW1lKikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKaW5kZXggMGYwNWI5OGVhYjU2ZDJlMmJjMzI3YTJmYWI2ZjlkMjdhODIyYzBjYS4u
MTJkMGM2MTIxOGJjMTI3YWZmOWUzN2RjMmIzYjc2MTFkM2E5ZjQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtOTcsNyArOTcs
NyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmLCBjbwogCiBSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJiBlYykKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6
OmNyZWF0ZU9iamVjdFN0b3JlIik7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSAtICglcyAlcykiLCBtX2luZm8ubmFtZSgpLnV0ZjgoKS5kYXRhKCks
IG5hbWUudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uIHx8IG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwCmluZGV4IGM5NGQ5NmYxNzgxYzJmMTgxOTk4N2EyYmE0MGY0
NDE1N2VjYmQ0YzAuLjhjZDYyZjJkMzQyZTczMzEwMjNkMmNiNWY2NWVhYjJmNDVkNTI5M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRl
bnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNTksMTMgKzU5LDE4IEBAIElEQkRhdGFiYXNlSWRlbnRp
ZmllciBJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmlu
ZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qo
Y29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KSBjb25zdAogewotICAgIFN0cmluZyBtYWluRnJh
bWVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERpcmVjdG9yeSwgbV9t
YWluRnJhbWVPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwor
ICAgIHJldHVybiBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1fbWFpbkZyYW1lT3Jp
Z2luLCBtX29wZW5pbmdPcmlnaW4sIHJvb3REaXJlY3RvcnkpOworfQorCitTdHJpbmcgSURCRGF0
YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgdG9wTGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5KQoreworICAgIFN0
cmluZyBtYWluRnJhbWVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9vdERp
cmVjdG9yeSwgdG9wTGV2ZWxPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogCiAgICAgLy8gSWYgdGhlIG9wZW5pbmcgb3JpZ2luIGFuZCBtYWluIGZyYW1lIG9y
aWdpbnMgYXJlIHRoZSBzYW1lLCB0aGVyZSBpcyBubyBwYXJ0aXRpb25pbmcuCi0gICAgaWYgKG1f
b3BlbmluZ09yaWdpbiA9PSBtX21haW5GcmFtZU9yaWdpbikKKyAgICBpZiAob3BlbmluZ09yaWdp
biA9PSB0b3BMZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsK
IAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5
LCBtX29wZW5pbmdPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5
LCBvcGVuaW5nT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
IH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggZjllZjAxMDVjMTgzZDQ3
YzVkOTYwZGIyOWQ5ZWI2MzlhZTEwMjBhMS4uMzFlNDFhYThkMTUyZjVkNDliYWZmNGY1MTAyMzBl
NmZiMGVmM2RlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTkzLDYgKzkzLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFz
ZU5hbWU7IH0KIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNv
bnN0IFN0cmluZyYgcm9vdERpcmVjdG9yeSkgY29uc3Q7CisgICAgc3RhdGljIFN0cmluZyBkYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
TGV2ZWxPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5KTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRl
eCA5ZDBhNzdhZGJmMjFlNzA4YjZkZDVmMWE4MTA4YTc5NTk4Y2IwYTNjLi5iZThmOWI0YzIyZTI2
MmY4YTgxYjM2NWYzMWE4MmY4NmRkOTQ1OTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU5LDYgKzE1OSwxMSBAQCBzaG9ydCBJREJG
YWN0b3J5OjpjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBmaXJz
dFZhbHVlLCBKU1ZhbAogICAgIHJldHVybiBmaXJzdC0+Y29tcGFyZShzZWNvbmQuZ2V0KCkpOwog
fQogCit2b2lkIElEQkZhY3Rvcnk6OmdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmln
aW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4gY2FsbGJhY2sp
Cit7CisgICAgbV9jb25uZWN0aW9uUHJveHktPmdldEFsbERhdGFiYXNlTmFtZXMobWFpbkZyYW1l
T3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFjayk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDFmZGY3MTM4OTc2OWQz
YzNlNTQ0YmE3ZTczOGZiN2RhYmZhNGFiNDAuLjgzODYyNzE3MDBjZGNiMDMyMDBkYjgxMDhjMjlk
MTA4ODY4ZGEwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmgKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEpTVmFs
dWU7CkBAIC0zOSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCT3Bl
bkRCUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIAogc3RydWN0IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZTsKIApAQCAtNTgsNiAr
NjEsOCBAQCBwdWJsaWM6CiAKICAgICBzaG9ydCBjbXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEpTQzo6SlNWYWx1ZSBmaXJzdCwgSlNDOjpKU1ZhbHVlIHNlY29uZCwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFt
ZXMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG9wZW5pbmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0
cmluZz4mKT4pOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IElEQkZhY3RvcnkoSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAppbmRl
eCA5MWQ1NzU1YjhmM2M4YzI4NGFiNTIzMWE3NzY0MGVlMWVkNzQyNGMzLi45NTc0YjdmMTdkYTVi
OTYwZGU0OWIxN2MxZTVjMjUzMzgyZDAxNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNw
cApAQCAtODIsNiArODIsMTUgQEAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkNvbm5lY3Rp
b25Qcm94eTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAgICByZXR1cm4g
V1RGTW92ZShyZXF1ZXN0KTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldEFsbERh
dGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKT4gY2FsbGJhY2spCit7CisgICAgLy8gVGhpcyBtZXRob2QgaXMgb25s
eSBtZWFudCB0byBiZSBjYWxsZWQgYnkgdGhlIHdlYiBpbnNwZWN0b3Igb24gdGhlIG1haW4gdGhy
ZWFkLgorICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLmdldEFsbERhdGFiYXNlTmFtZXMobWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5n
T3JpZ2luLCBjYWxsYmFjayk7Cit9CisKKwogfSAvLyBuYW1lc2FwY2UgSURCQ2xpZW50CiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAppbmRleCBlZjViYjc3
ODNkZTEwZWNhOGQ4MjY2Y2YxMjkwMzBiZDZmZmIyYWEwLi5kMmNjZDBlZTY2Y2JkYTY4OWQ1MTNk
YTJjMjliMzFkYWE0NzYwNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCkBAIC0yOCwxMyAr
MjgsMTcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZUlk
ZW50aWZpZXI7CiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsK
IApAQCAtNTcsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWYoKTsKICAgICB2b2lkIGRl
cmVmKCk7CiAKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4s
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4pOworCiBwcml2YXRl
OgogICAgIElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgbV9jb25uZWN0aW9uVG9TZXJ2ZXI7CiAgICAg
dWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAKaW5kZXggZDBhMWIyZjRkYjA5MmE1OGJlNTk2MTkyYWI3MTMzN2Q2NTg4
NmU2Ny4uMGJkOTA2ODEyNGU5Nzk0ZmYzNmE4OTlkY2RkMmYyNjdlMjg4ZWRjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25U
b1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTQxMSw2ICs0MTEsMjMgQEAgYm9vbCBJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6Omhhc1JlY29yZE9mVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWMKICAgICByZXR1cm4gbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5z
KGlkZW50aWZpZXIpIHx8IG1fY29tbWl0dGluZ1RyYW5zYWN0aW9ucy5jb250YWlucyhpZGVudGlm
aWVyKSB8fCBtX2Fib3J0aW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpOwogfQog
Cit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBT
ZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3Bl
bmluZ09yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiBj
YWxsYmFjaykKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY2FsbGJhY2tJRCA9IDA7CisKKyAgICBt
X2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJhY2tJRCwgV1RGTW92ZShj
YWxsYmFjaykpOworCisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVPcmlnaW4pLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3JpZ2luKSwgY2FsbGJhY2tJ
RCk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5h
bWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5h
bWVzKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBBU1NFUlQoY2FsbGJhY2spOworCisgICAgY2FsbGJh
Y2soZGF0YWJhc2VOYW1lcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggYjAx
NDQxY2QzMjNmNTdmOTk4YmZlZmEzNjQ0MjE3MjM5NDllNDI2YS4uM2NjYjMyYzgyZjlkMjI5N2Yx
YWJmNTUyODk1NjUyNzU3MjQyN2M3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaApA
QCAtMTIzLDYgKzEyMyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25u
ZWN0aW9uKElEQkRhdGFiYXNlJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0
aW9uKElEQkRhdGFiYXNlJik7CiAKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3Qg
U2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9w
ZW5pbmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRf
dCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyk7CisKIHBy
aXZhdGU6CiAgICAgSURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRl
bGVnYXRlJik7CiAKQEAgLTE0MCw2ICsxNDMsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURC
UmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SURCVHJhbnNhY3Rpb24+PiBtX2Fib3J0aW5nVHJh
bnNhY3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8VHJh
bnNhY3Rpb25PcGVyYXRpb24+PiBtX2FjdGl2ZU9wZXJhdGlvbnM7CiAKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+PiBtX2dl
dEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3M7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCQ29u
bmVjdGlvblByb3h5PiBtX3Byb3h5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRv
U2VydmVyRGVsZWdhdGUuaAppbmRleCAzNzBiM2JhNDkwMmY0MGNjZTIyYTI1YzBkNGZjZGEyYTky
ZjE4OWE4Li5kODAzMWM4MGNiMzIzNzQ4YmM5ZWU5ZDdjZWZiZWZlZDVkNjY1ZDVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaApAQCAtNDIsNiArNDIsOCBA
QCBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkluZm87
CiBjbGFzcyBJREJWYWx1ZTsKIAorc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKKwogbmFtZXNw
YWNlIEluZGV4ZWREQiB7CiBlbnVtIGNsYXNzIE9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTsKIH0K
QEAgLTc3LDYgKzc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhYm9ydE9wZW5BbmRV
cGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllcikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkgPSAwOworCiAg
ICAgdmlydHVhbCB2b2lkIHJlZigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSA9IDA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAppbmRleCBiOTUyZjhjZmM3M2Zj
ODUxZmE0NTVlZDAxZjU5YmY5MjVkY2QwYTU0Li40YmY0MWUwNmZmMmY0ZGY0YTQ1ZmMxNzExODhl
YWJlNjdjMTEzYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMTM4
LDYgKzEzOCwxMSBAQCB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVx
dWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIG1fZGVsZWdhdGUtPm5v
dGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBu
ZXdWZXJzaW9uKTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERh
dGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRh
dGFiYXNlTmFtZXMpCit7CisgICAgbV9kZWxlZ2F0ZS0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyhj
YWxsYmFja0lELCBkYXRhYmFzZU5hbWVzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVy
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaApp
bmRleCBjNWRjNDJjNTNmNTM3OTgxOGQ5OTllMzNhZjZlMDhlNjVkZWFjNzA2Li43ZTI0NjQ3YTM1
YTI4MmNiZDMzZjM2MjQxYjlkYTkxMTEyN2VmODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbm90aWZ5T3BlbkRC
UmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbik7CiAKKyAgICB2
b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpOworCiBwcml2YXRlOgogICAgIElEQkNvbm5lY3Rp
b25Ub0NsaWVudChJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSYpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rp
b25Ub0NsaWVudERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaAppbmRleCBjNDIzZTRjNWVkYWJj
ZmJmMzZlMzc2ZTI0OGFiNWMxZjhhNThkZGZkLi40MmM1NGFiNzJmYTQ3NWIwNWRhMzUyZWY4N2Fl
YjBiNjRhODUyYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdh
dGUuaApAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRXJyb3I7CkBAIC02NCw2ICs2Nyw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJy
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9s
ZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBk
aWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkYXRhYmFzZU5hbWVzKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGQxODk4
ZTFiMDY5NTZmZjMxM2I0ZWU4ZjI2NzAwODhiZjFjNDkyYmUuLjA4MzM4NTdlZDA4MDdkYjlhMDhm
M2YxNmYxNWZkN2NjY2JhYWViYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVy
LmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdERhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRh
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMzc2LDYgKzM3NywzNSBAQCB2b2lkIElEQlNl
cnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLAogICAgICAgICBkYXRhYmFzZUNvbm5lY3Rpb24tPmRpZEZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQocmVxdWVzdElkZW50aWZpZXIpOwogfQogCit2b2lkIElEQlNlcnZlcjo6Z2V0
QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBwb3N0
RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJklEQlNlcnZlcjo6cGVy
Zm9ybUdldEFsbERhdGFiYXNlTmFtZXMsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtYWlu
RnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBJREJT
ZXJ2ZXI6OnBlcmZvcm1HZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQoreworICAgIFN0cmluZyBkaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRh
dGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRy
aWVzID0gbGlzdERpcmVjdG9yeShkaXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgiKiIpKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBkYXRhYmFzZXM7CisgICAgZGF0YWJhc2VzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZW50cmllcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKSB7
CisgICAgICAgIFN0cmluZyBlbmNvZGVkTmFtZSA9IGxhc3RDb21wb25lbnRPZlBhdGhJZ25vcmlu
Z1RyYWlsaW5nU2xhc2goZW50cnkpOworICAgICAgICBkYXRhYmFzZXMudW5jaGVja2VkQXBwZW5k
KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lRnJvbUVuY29kZWRGaWxlbmFtZShl
bmNvZGVkTmFtZSkpOworICAgIH0KKworICAgIHBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXMs
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjYWxsYmFja0lELCBkYXRhYmFzZXMpKTsKK30K
Kwordm9pZCBJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkYXRhYmFzZU5hbWVzKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVj
dGlvbk1hcC5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIGlmICghY29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29ubmVjdGlvbi0+ZGlkR2V0QWxsRGF0YWJh
c2VOYW1lcyhjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzKTsKK30KKwogdm9pZCBJREJTZXJ2ZXI6
OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJiB0YXNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggNjVhMDJjMjE4NTJh
MzI2NDg4N2ExNTQwY2FjYzg3ZTUwMTRjN2I1ZC4uYjA2OTE3YTVmOWNhNzk3MmQ0Zjk3ZDY2MGRi
M2QxMDAwZDEwMTNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworCiAgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+JiYpOwogICAgIHZvaWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwogCkBAIC0xMDAsNiArMTAyLDkgQEAgcHJpdmF0
ZToKIAogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCisgICAgdm9pZCBwZXJmb3JtR2V0QWxs
RGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRH
ZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyk7
CisKICAgICBzdGF0aWMgdm9pZCBkYXRhYmFzZVRocmVhZEVudHJ5KHZvaWQqKTsKICAgICB2b2lk
IGRhdGFiYXNlUnVuTG9vcCgpOwogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJl
YWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzE2MWVmZTZiOGNk
MGIxMWU0MWZlMDUxODhlODM2ZmU2NjhjYzA3Mi4uMjNkOTM2MzRjN2QxMDRhN2NhYmQ1YmRkNzIy
ZDY4MzVkZTI4OWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY1
OSw2ICs2NTksMTcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICByZXR1cm4gZGF0YWJh
c2VJbmZvOwogfQogCitTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVG
cm9tRW5jb2RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYg
KGVxdWFsKGVuY29kZWROYW1lLCBBU0NJSUxpdGVyYWwoIiUwMCIpKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIFN0cmluZyBwYXJ0aWFsbHlEZWNvZGVkID0gZW5jb2RlZE5hbWU7CisgICAg
cGFydGlhbGx5RGVjb2RlZC5yZXBsYWNlKEFTQ0lJTGl0ZXJhbCgiJTJFIiksIEFTQ0lJTGl0ZXJh
bCgiLiIpKTsKKworICAgIHJldHVybiBkZWNvZGVGcm9tRmlsZW5hbWUocGFydGlhbGx5RGVjb2Rl
ZCk7Cit9CisKIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJh
c2VOYW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMzVkNDk3OTEw
NTcyNzc1ZTlmNTk1Mjc5NzY4MjI5NzRlZjhlMmJmZi4uZjk5Zjg4NTZmYThiNjNkMGQ4Njg1Mjdi
MjE1Mjc3ZjM4MDg3ZThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtODcs
NiArODcsOCBAQCBwdWJsaWM6CiAKICAgICBJREJFcnJvciBnZXRCbG9iUmVjb3Jkc0Zvck9iamVj
dFN0b3JlUmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVSZWNvcmQsIFZlY3RvcjxTdHJpbmc+JiBi
bG9iVVJMcywgVmVjdG9yPFN0cmluZz4mIGJsb2JGaWxlUGF0aHMpOwogCisgICAgc3RhdGljIFN0
cmluZyBkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworCiBw
cml2YXRlOgogICAgIFN0cmluZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0OwogICAg
IFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
Y3BwCmluZGV4IDVkYzgzZWI2NzE5Nzg1YjY5NmNmZmM3OTIxNjU1OWVlYzFiNjQ2NzEuLjMxZGZh
YTYyMmM0NmJlMjEzMTI4MjhlODI2OWRiMjRmMTZmZjFiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCkBAIC00MDEsNiArNDAxLDIyIEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkCiAg
ICAgfSk7CiB9CiAKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVz
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAg
UmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdG9yLCBtYWluRnJhbWVPcmlnaW4sIG9w
ZW5pbmdPcmlnaW4sIGNhbGxiYWNrSURdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmdldEFsbERhdGFi
YXNlTmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwgbWFpbkZyYW1lT3Jp
Z2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKKyAgICB9KTsKK30KKwordm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJ
RCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCit7CisgICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdG9yLCBjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzXSB7
CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNh
bGxiYWNrSUQsIGRhdGFiYXNlTmFtZXMpOworICAgIH0pOworfQorCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6YWNjZXNzVG9UZW1wb3JhcnlGaWxlQ29tcGxldGUoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIGRlbGV0ZUZpbGUocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKaW5kZXgg
ZmUyODRjMjQxZmEzNDc2YWIxNDEzZDgwODQ0MDI3YTQ1ODViMDMxMC4uZDA0N2RlZmUxZWJmYWNl
ZTRlOTRkZGIzNDkxMmQyZjI4OGY3MTNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaApAQCAt
NzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBh
Ym9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBnZXRBbGxEYXRhYmFzZU5hbWVzKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpIGZpbmFsOwogCiAg
ICAgLy8gSURCQ29ubmVjdGlvblRvQ2xpZW50CiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtOTYsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
cmVxdWVzdGVkVmVyc2lvbikgZmluYWw7CiAgICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xk
VmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7CisgICAgdm9pZCBkaWRHZXRBbGxE
YXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
YXRhYmFzZU5hbWVzKSBmaW5hbDsKIAogICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3Vu
dGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIG92ZXJy
aWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpkZXJlZigpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCA3MDYwMWZkZTU3YzU2NWE4OGUwYmE3YThhZGUzZmY4NmExMjcxOTU5Li41NjkzMjdhMDk0
YWZkYjg2YzllMjQ2ZTNjOGYxOThiNTEzODU3ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTkwLDYyICs5MCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotI2lmIDAgLy8gSURCRmFj
dG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyBpc24ndCBpbXBsZW1lbnRlZCBhbnkgbW9yZS4gRGlzYWJs
ZSB0aGlzIGZvciBub3cuCi0KLWNsYXNzIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayA6IHB1Ymxp
YyBFdmVudExpc3RlbmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHZXREYXRhYmFzZU5h
bWVzQ2FsbGJhY2spOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2V0RGF0YWJhc2VOYW1lc0Nh
bGxiYWNrPiBjcmVhdGUoUmVmPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+JiYgcmVxdWVz
dENhbGxiYWNrLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKFdURk1vdmUocmVx
dWVzdENhbGxiYWNrKSwgc2VjdXJpdHlPcmlnaW4pKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5H
ZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2soKSB7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzID09ICZvdGhlcjsKLSAgICB9Ci0KLSAgICB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAo
IW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7Ci0g
ICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgZXZl
bnQgdHlwZS4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIElE
QlJlcXVlc3QqIGlkYlJlcXVlc3QgPSBzdGF0aWNfY2FzdDxJREJSZXF1ZXN0Kj4oZXZlbnQtPnRh
cmdldCgpKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwotICAgICAgICBS
ZWZQdHI8SURCQW55PiByZXF1ZXN0UmVzdWx0ID0gaWRiUmVxdWVzdC0+cmVzdWx0KGVjKTsKLSAg
ICAgICAgaWYgKGVjLmNvZGUpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5k
RmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1bHQgaW4gY2FsbGJhY2suIik7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlcXVlc3RSZXN1bHQtPnR5cGUoKSAh
PSBJREJBbnk6OlR5cGU6OkRPTVN0cmluZ0xpc3QpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENh
bGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4iKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBk
YXRhYmFzZU5hbWVzTGlzdCA9IHJlcXVlc3RSZXN1bHQtPmRvbVN0cmluZ0xpc3QoKTsKLSAgICAg
ICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZXMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzTGlzdC0+bGVuZ3RoKCk7ICsraSkK
LSAgICAgICAgICAgIGRhdGFiYXNlTmFtZXMtPmFkZEl0ZW0oZGF0YWJhc2VOYW1lc0xpc3QtPml0
ZW0oaSkpOwotICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShk
YXRhYmFzZU5hbWVzKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdldERhdGFiYXNlTmFtZXND
YWxsYmFjayhSZWY8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJh
Y2ssIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCi0gICAgICAgIDogRXZlbnRMaXN0ZW5l
cihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgLCBtX3JlcXVl
c3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykpCi0gICAgICAgICwgbV9zZWN1cml0
eU9yaWdpbihzZWN1cml0eU9yaWdpbikgeyB9Ci0gICAgUmVmPFJlcXVlc3REYXRhYmFzZU5hbWVz
Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIFN0cmluZyBtX3NlY3VyaXR5T3JpZ2lu
OwotfTsKLQotI2VuZGlmCi0KIGNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7CiBwdWJsaWM6CiAgICAgRXhlY3V0
YWJsZVdpdGhEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtNTEy
LDI5ICs0NTYsMzQgQEAgc3RhdGljIElEQkZhY3RvcnkqIGFzc2VydElEQkZhY3RvcnkoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQKIAogdm9pZCBJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBSZWY8UmVxdWVzdERhdGFiYXNlTmFt
ZXNDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9y
U3RyaW5nKTsKLSAgICBVTlVTRURfUEFSQU0oc2VjdXJpdHlPcmlnaW4pOwotICAgIHJlcXVlc3RD
YWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvYnRhaW4gZGF0YWJhc2UgbmFtZXMuIik7
Ci0KLSNpZiAwIC8vIElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMgaXNuJ3QgaW1wbGVtZW50
ZWQgYW55IG1vcmUuIERpc2FibGUgdGhpcyBmb3Igbm93LgogICAgIEZyYW1lKiBmcmFtZSA9IG1f
cGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFt
ZSk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byogb3Bl
bmluZ09yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOworICAgIGlmICghb3Blbmlu
Z09yaWdpbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogdG9wT3JpZ2luID0gZG9jdW1l
bnQtPnRvcE9yaWdpbigpOworICAgIGlmICghdG9wT3JpZ2luKQorICAgICAgICByZXR1cm47CisK
ICAgICBJREJGYWN0b3J5KiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9yeShlcnJvclN0cmlu
ZywgZG9jdW1lbnQpOwogICAgIGlmICghaWRiRmFjdG9yeSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IGlkYlJlcXVl
c3QgPSBpZGJGYWN0b3J5LT5nZXREYXRhYmFzZU5hbWVzKCpkb2N1bWVudCwgZWMpOwotICAgIGlm
ICghaWRiUmVxdWVzdCB8fCBlYykgewotICAgICAgICByZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWls
dXJlKCJDb3VsZCBub3Qgb2J0YWluIGRhdGFiYXNlIG5hbWVzLiIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIFJlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBjYWxsYmFj
ayA9IFdURk1vdmUocmVxdWVzdENhbGxiYWNrKTsKKyAgICBpZGJGYWN0b3J5LT5nZXRBbGxEYXRh
YmFzZU5hbWVzKCp0b3BPcmlnaW4sICpvcGVuaW5nT3JpZ2luLCBbY2FsbGJhY2tdKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKSB7CisgICAgICAgIGlmICghY2FsbGJhY2stPmlz
QWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZUFycmF5ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGZvciAoYXV0byYgZGF0
YWJhc2VOYW1lIDogZGF0YWJhc2VOYW1lcykKKyAgICAgICAgICAgIGRhdGFiYXNlTmFtZUFycmF5
LT5hZGRJdGVtKGRhdGFiYXNlTmFtZSk7CiAKLSAgICBpZGJSZXF1ZXN0LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjazo6
Y3JlYXRlKFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCktPnRvUmF3U3RyaW5nKCkpLCBmYWxzZSk7Ci0jZW5kaWYKKyAgICAgICAgY2FsbGJhY2stPnNl
bmRTdWNjZXNzKFdURk1vdmUoZGF0YWJhc2VOYW1lQXJyYXkpKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIFJlZjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5k
ZXggNmRlNjcxN2JlY2QwMDViZDViMzNjNGJhYmMxNDczOWZkMzAxNzBmMC4uNTA3NGM4MWJkODcy
NzQ4YWMzMjBjNjc4NDE0NTBlNGU5ODRlNzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAj
aW5jbHVkZSAiVGhyZWFkU2FmZURhdGFCdWZmZXIuaCIKQEAgLTg0LDYgKzg1LDExIEBAIENyb3Nz
VGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFJlc291cmNlUmVzcG9uc2U+OjpUeXBlIENy
b3NzVGhyZWFkQ29waWVyQmFzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHlEYXRhKCk7CiB9CiAK
K0Nyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFNlY3VyaXR5T3JpZ2luRGF0YT46
OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgU2VjdXJpdHlPcmlnaW5E
YXRhPjo6Y29weShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEpCit7CisgICAg
cmV0dXJuIG9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCk7Cit9CisKIENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIFNlc3Npb25JRD46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNl
PGZhbHNlLCBmYWxzZSwgU2Vzc2lvbklEPjo6Y29weShjb25zdCBTZXNzaW9uSUQmIHNlc3Npb25J
RCkKIHsKICAgICByZXR1cm4gc2Vzc2lvbklEOwpAQCAtOTQsNiArMTAwLDE2IEBAIENyb3NzVGhy
ZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFRocmVhZFNhZmVEYXRhQnVmZmVyPjo6VHlwZSBD
cm9zc1RocmVhZENvcGllCiAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKGJ1ZmZlcik7
CiB9CiAKK0Nyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFZlY3RvcjxTdHJpbmc+
Pjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8U3RyaW5n
Pj46OmNvcHkoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MpCit7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0cmluZ3Mu
c2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHN0cmluZ3MpCisgICAgICAgIHJlc3Vs
dC51bmNoZWNrZWRBcHBlbmQoc3RyaW5nLmlzb2xhdGVkQ29weSgpKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGU+Ojpjb3B5KGNvbnN0IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlJiBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgK
aW5kZXggNDBjZmEzZTZjODMwODkxZGNkMGQ2ZjUwN2NiZDg5NjU5MzAwY2U5MS4uNGQyMGI4OWI3
NmVhMDZmYWVkNGZkZWM2ZmMyOTgxMWZmOTk3NDdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LCAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDYgKzM2LDcgQEAK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNTAsNyBAQCBjbGFzcyBTZXNzaW9u
SUQ7CiBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIHN0cnVjdCBDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhOwogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YTsK
K3N0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnM7CiAKIHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2VIZWxwZXIgewpAQCAtMTM0LDYgKzEz
NywxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBSZXNvdXJjZVJlc3BvbnNlPiB7CiAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBTZWN1cml0eU9yaWdpbkRhdGE+IHsKKyAgICB0eXBlZGVmIFNl
Y3VyaXR5T3JpZ2luRGF0YSBUeXBlOworICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBTZXNzaW9uSUQ+IHsKICAgICB0eXBlZGVmIFNlc3Npb25JRCBU
eXBlOwogICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgU2Vzc2lvbklEJik7CkBAIC0xNDQsNiAr
MTUyLDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwg
ZmFsc2UsIFRocmVhZFNhZmVEYXRhQnVmZmVyPiB7CiAgICAgc3RhdGljIFR5cGUgY29weShjb25z
dCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVmVjdG9yPFN0cmluZz4+IHsKKyAgICB0eXBl
ZGVmIFZlY3RvcjxTdHJpbmc+IFR5cGU7CisgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOworfTsKKwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogbmFtZXNw
YWNlIEluZGV4ZWREQiB7CiBlbnVtIGNsYXNzIFRyYW5zYWN0aW9uTW9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKaW5kZXggMzBlNWQwNDQ1N2JkMmUwODkyZDExNjY4ZWMy
MmJkZTQ5NGIyMjA0Zi4uZTNhYzM1ZjlhZGE2YjFlYmU4OTBkYTRhNmUxODNiMWMyODAyMzVlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKQEAgLTEzMCw2ICsxMzAsNjYg
QEAgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCiAg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCitTdHJpbmcgZGVjb2RlRnJvbUZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
aW5wdXRTdHJpbmcubGVuZ3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBp
bnB1dFN0cmluZzsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNl
cnZlQ2FwYWNpdHkobGVuZ3RoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaV0gIT0gJyUnKSB7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGlucHV0U3RyaW5nW2ldKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlk
IGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdl
cgorICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMg
cGVyY2VudCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBpZiAoaSArIDIgPCBsZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGlmIChpbnB1dFN0cmluZ1tpKzFdICE9ICcr
JykgeworICAgICAgICAgICAgY2hhciB2YWx1ZTsKKyAgICAgICAgICAgIGlmICghaGV4RGlnaXRW
YWx1ZShpbnB1dFN0cmluZ1tpICsgMV0sIHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICAgICAgTENoYXIgY2hhcmFjdGVyID0gdmFsdWUgPDwgNDsKKworICAgICAg
ICAgICAgaWYgKCFoZXhEaWdpdFZhbHVlKGlucHV0U3RyaW5nW2kgKyAyXSwgdmFsdWUpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hh
cmFjdGVyIHwgdmFsdWUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBJZiB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgZW5jb2RlZCBmaWxlbmFtZSwg
aXQgbXVzdCBiZSBhdCBsZWFzdCA1IGNoYXJhY3RlcnMgbG9uZ2VyCisgICAgICAgIC8vIHRoYW4g
dGhlIGN1cnJlbnQgaW5kZXggdG8gYWNjb3VudCBmb3IgdGhpcyBwZXJjZW50IGVuY29kZWQgdmFs
dWUuCisgICAgICAgIGlmIChpICsgNSA8IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisKKyAgICAgICAgY2hhciB2YWx1ZTsKKyAgICAgICAgaWYgKCFoZXhEaWdpdFZhbHVlKGlucHV0
U3RyaW5nW2kgKyAyXSwgdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
VUNoYXIgY2hhcmFjdGVyID0gdmFsdWUgPDwgMTI7CisKKyAgICAgICAgaWYgKCFoZXhEaWdpdFZh
bHVlKGlucHV0U3RyaW5nW2kgKyAzXSwgdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgY2hhcmFjdGVyID0gY2hhcmFjdGVyIHwgKHZhbHVlIDw8IDgpOworCisgICAgICAg
IGlmICghaGV4RGlnaXRWYWx1ZShpbnB1dFN0cmluZ1tpICsgNF0sIHZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIGNoYXJhY3RlciA9IGNoYXJhY3RlciB8ICh2YWx1ZSA8
PCA0KTsKKworICAgICAgICBpZiAoIWhleERpZ2l0VmFsdWUoaW5wdXRTdHJpbmdbaSArIDVdLCB2
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y2hhcmFjdGVyIHwgdmFsdWUpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmco
KTsKK30KKwogYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmdldCkKIHsKICAgICBhdXRvIHNvdXJjZSA9
IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0
ZW0uaAppbmRleCBmMWE3OGRmNTA3YTI1MzFhOTljNTk0YTVlZjgyYmIyNjFhNDMwMTUyLi45NTI3
ZGEyMWRmMDJlNzBlN2M4MGIzNjJkZTU2MTlmMjllMzFkZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCkBAIC0xNDYsNiArMTQ2LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7CiBX
RUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGlt
ZV90JiByZXN1bHQpOyAvLyBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSBmaWxlIGNyZWF0aW9uIHRp
bWUuCiBib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmKTsK
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CitTdHJpbmcgbGFzdENvbXBvbmVu
dE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcmIHBhdGgpOwogV0VCQ09S
RV9FWFBPUlQgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0
cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhdGhHZXRG
aWxlTmFtZShjb25zdCBTdHJpbmcmKTsKQEAgLTE1OSw2ICsxNjAsNyBAQCBib29sIGV4Y2x1ZGVG
cm9tQmFja3VwKGNvbnN0IFN0cmluZyYpOyAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4K
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKIAogV0VCQ09SRV9FWFBP
UlQgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJik7CitTdHJp
bmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7CiAKIGlu
bGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUp
IHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOyB9CiAKQEAgLTE5
NCw2ICsxOTYsNyBAQCBib29sIHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSk7CiAKIC8vIEVu
Y29kZSBhIHN0cmluZyBmb3IgdXNlIHdpdGhpbiBhIGZpbGUgbmFtZS4KIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBkZWNvZGVG
cm9tRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CiAKICNpZiBVU0UoQ0YpCiBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDNlNTQwYjllOTY2ZGU5ZTIxN2JkYWExY2RmNTUw
Nzg1YTUwOWIwYTEuLjFmNjg0YjY1YzE0ZGI0OTI4MzdlNzZjMWU5ZDAzOTlmNjk4OGZmYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTU0LDYgKzU1LDExIEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIu
ZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEoKSkpOwogfQogCitTdHJpbmcgc3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pCit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bikpLmdldCgpOworfQorCiBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJp
bmcmIHBhdGgpCiB7CiAgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA1ODE4OGZmMjUw
MGZiZTYyMjI5N2NlZmMxZTU0MjQzNmNkYmU3ODA4Li5hMDg5MmVjZjA3OWIyZGY3MzM2NWM3N2Mw
ODU3MWM1YzdmMzUzNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcApAQCAtNTQsNiArNTQsMTEgQEAgU3RyaW5nIGZpbGVuYW1lVG9TdHJp
bmcoY29uc3QgY2hhciogZmlsZW5hbWUpCiAjZW5kaWYKIH0KIAorU3RyaW5nIHN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKQoreworICAgIHJldHVybiBmaWxlbmFtZVRvU3RyaW5nKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik7Cit9CisKIHN0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQppbmRleCA5MWY2
ZGZkNzg3NTM5NDI2NDhkYTI3M2MxNjZkZWQ5MzNjNTAwMGUzLi5jMTk2ZDQ4OGE5ZjRiOGY4NDk5
ZmIyMWUwOThlYWNjYzBkNTQ2ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldl
YkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgog
I2ltcG9ydCA8ZnVuY3Rpb25hbD4KKyNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbXBvcnQg
PHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNzE4LDM0ICs3MTksNiBAQCBzdGF0aWMgTlNTdHJpbmcg
Km1hcEhvc3ROYW1lcyhOU1N0cmluZyAqc3RyaW5nLCBCT09MIGVuY29kZSkKICAgICByZXR1cm4g
W211dGFibGVDb3B5IGF1dG9yZWxlYXNlXTsKIH0KIAotc3RhdGljIEJPT0wgaXNIZXhEaWdpdChj
aGFyIGMpCi17Ci0gICAgcmV0dXJuIChjID49ICcwJyAmJiBjIDw9ICc5JykgfHwgKGMgPj0gJ0En
ICYmIGMgPD0gJ0YnKSB8fCAoYyA+PSAnYScgJiYgYyA8PSAnZicpOwotfQotCi1zdGF0aWMgY2hh
ciBoZXhEaWdpdChpbnQgaSkKLXsKLSAgICBpZiAoaSA8IDAgfHwgaSA+IDE2KQotICAgICAgICBy
ZXR1cm4gJzAnOwotCi0gICAgcmV0dXJuIChpID49IDEwKSA/IGkgLSAxMCArICdBJyA6IGkgKz0g
JzAnOyAKLX0KLQotc3RhdGljIGludCBoZXhEaWdpdFZhbHVlKGNoYXIgYykKLXsKLSAgICBpZiAo
YyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotCi0gICAgaWYg
KGMgPj0gJ0EnICYmIGMgPD0gJ0YnKQotICAgICAgICByZXR1cm4gYyAtICdBJyArIDEwOwotCi0g
ICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICByZXR1cm4gYyAtICdhJyArIDEw
OwotCi0gICAgTE9HX0VSUk9SKCJpbGxlZ2FsIGhleCBkaWdpdCIpOwotICAgIHJldHVybiAwOwot
fQotCiBzdGF0aWMgTlNTdHJpbmcgKnN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3RyaW5n
ICpzdHJpbmcpCiB7CiAgICAgTlNNdXRhYmxlU3RyaW5nICp0cmltbWVkID0gW1tzdHJpbmcgbXV0
YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKQEAgLTEwNzEsNyArMTA0NCw3IEBAIE5TU3RyaW5nICp1
c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQogICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBw
W2ldOwogICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNhdGUg
Ynl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKICAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8
IGxlbmd0aCAmJiBpc0hleERpZ2l0KHBbaSArIDFdKSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNI
ZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdSA9IChoZXhE
aWdpdFZhbHVlKHBbaSArIDFdKSA8PCA0KSB8IGhleERpZ2l0VmFsdWUocFtpICsgMl0pOworICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciB1ID0gKHVuY2hlY2tlZEhleERpZ2l0VmFsdWUocFtpICsg
MV0pIDw8IDQpIHwgdW5jaGVja2VkSGV4RGlnaXRWYWx1ZShwW2kgKyAyXSk7CiAgICAgICAgICAg
ICBpZiAodSA+IDB4N2YpIHsKICAgICAgICAgICAgICAgICAvLyB1bmVzY2FwZQogICAgICAgICAg
ICAgICAgICpxKysgPSB1OwpAQCAtMTE1Miw3ICsxMTI1LDcgQEAgQk9PTCBpc1VzZXJWaXNpYmxl
VVJMKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgICAgICB2YWxpZCA9IE5POwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnJScgJiYgKGkgKyAxIDwgbGVuZ3Ro
ICYmIGlzSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBpc0hleERpZ2l0
KHBbaSArIDJdKSkgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1ID0gKGhleERpZ2l0VmFs
dWUocFtpICsgMV0pIDw8IDQpIHwgaGV4RGlnaXRWYWx1ZShwW2kgKyAyXSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIHUgPSAodW5jaGVja2VkSGV4RGlnaXRWYWx1ZShwW2kgKyAxXSkgPDwg
NCkgfCB1bmNoZWNrZWRIZXhEaWdpdFZhbHVlKHBbaSArIDJdKTsKICAgICAgICAgICAgIGlmICh1
ID4gMHg3ZikgewogICAgICAgICAgICAgICAgIHZhbGlkID0gTk87CiAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAppbmRleCBjZDg4ZjY1NTA5MmUzODk1ZWYwZmQxNTZmZDIzODQ3MzhhY2I3OGRhLi42
ZGQyMWFjMjRiZWNlZWYxMzI5YjYwZTJiOTY0Nzg3N2QwZjRiZDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI1Nyw2ICsy
NTcsMjEgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogICAgIHJldHVybiBwYXRoICsgIi8iICsgY29t
cG9uZW50OwogfQogCitTdHJpbmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdT
bGFzaChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgYXV0byBwb3NpdGlvbiA9IHBhdGgucmV2
ZXJzZUZpbmQoJy8nKTsKKyAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQpCisgICAgICAgIHJl
dHVybiBwYXRoOworCisgICAgc2l6ZV90IGVuZE9mU3Vic3RyaW5nID0gcGF0aC5sZW5ndGgoKSAt
IDE7CisgICAgaWYgKHBvc2l0aW9uID09IGVuZE9mU3Vic3RyaW5nKSB7CisgICAgICAgIC0tZW5k
T2ZTdWJzdHJpbmc7CisgICAgICAgIHBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZCgnLycsIGVu
ZE9mU3Vic3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocG9zaXRp
b24gKyAxLCBlbmRPZlN1YnN0cmluZyAtIHBvc2l0aW9uKTsKK30KKwogYm9vbCBtYWtlQWxsRGly
ZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENTdHJpbmcgZnVsbFBhdGggPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CkBAIC0zMDEsOCArMzE2LDggQEAgU3RyaW5n
IGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogVmVjdG9yPFN0cmluZz4gbGlzdERp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogewogICAg
IFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0gICAgQ1N0cmluZyBjcGF0aCA9IHBhdGgudXRmOCgp
OwotICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbHRlci51dGY4KCk7CisgICAgQ1N0cmluZyBjcGF0
aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3RyaW5nIGNmaWx0ZXIg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsdGVyKTsKICAgICBESVIqIGRpciA9IG9wZW5k
aXIoY3BhdGguZGF0YSgpKTsKICAgICBpZiAoZGlyKSB7CiAgICAgICAgIHN0cnVjdCBkaXJlbnQq
IGRwOwpAQCAtMzEyLDEwICszMjcsMTYgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGZubWF0Y2goY2ZpbHRlci5kYXRhKCksIG5hbWUs
IDApKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgY2hhciBmaWxlUGF0
aFsxMDI0XTsKKyAgICAgICAgICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOwogICAgICAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYo
ZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdwotICAgICAgICAg
ICAgZW50cmllcy5hcHBlbmQoZmlsZVBhdGgpOworCisgICAgICAgICAgICBhdXRvIHN0cmluZyA9
IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworCisgICAgICAg
ICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUgcmVwcmVz
ZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAorICAgICAgICAgICAgLy8gc28gdGhpcyBzdHJpbmcg
bWlnaHQgYmUgbnVsbC4KKyAgICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQorICAgICAg
ICAgICAgICAgIGVudHJpZXMuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7CiAgICAgICAgIH0KICAg
ICAgICAgY2xvc2VkaXIoZGlyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKaW5kZXggYWFhNWE2ZjA2NTYxMmI1MzdjM2QwMzk1ZTU1Yjk0OThiMDUxN2Fl
OS4uZmM1MWM1MDk3OTJlMzdiYzcyOWU1NWYwOWI3NjUzZTE0OWM2YzFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMTc0LDYgKzE3NCwxMSBAQCB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29u
c3QgV2ViQ29yZTo6SURCUmVzbwogICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6Tm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9s
ZFZlcnNpb24sIG5ld1ZlcnNpb24pKTsKIH0KIAordm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGll
bnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViSURC
Q29ubmVjdGlvblRvU2VydmVyOjpEaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRh
dGFiYXNlTmFtZXMpKTsKK30KKwogdm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogewogICAgIERhdGFiYXNl
UHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKCkuZGVsZXRlRGF0YWJhc2UocmVxdWVzdCk7
CkBAIC0yODQsNiArMjg5LDExIEBAIHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRG
aXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjCiAgICAgRGF0YWJh
c2VQcm9jZXNzOjpzaW5nbGV0b24oKS5pZGJTZXJ2ZXIoKS5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7
CiB9CiAKK3ZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpnZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIERhdGFiYXNl
UHJvY2Vzczo6c2luZ2xldG9uKCkuaWRiU2VydmVyKCkuZ2V0QWxsRGF0YWJhc2VOYW1lcyhzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdG9wT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFj
a0lEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4
IDU1ZmQ3YTBiNmY2MTNjNWYyMjQ1YmVlNGM4MjgzOGIwMWU5OWM0MmMuLmZkY2EwYmY1YjUwOWI5
OTdhOTJjZmIyNmE4NjIxYmFhOTUyZjgyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9u
VG9DbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbkluZm87CiBj
bGFzcyBJREJWYWx1ZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIHN0cnVjdCBJREJL
ZXlSYW5nZURhdGE7CitzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTc3LDYgKzc4LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkU3RhcnRUcmFu
c2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIG5v
dGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5l
d1ZlcnNpb24pIGZpbmFsOwogCisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2
NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKSBmaW5h
bDsKKwogICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPFdlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudD46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVmQ291
bnRlZDxXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ+OjpkZXJlZigpOyB9CiAKQEAgLTEwMyw2ICsx
MDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7
CiAKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOworCiAgICAgdm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2Vzcygp
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50Lm1lc3NhZ2VzLmluCmluZGV4IGE4NDhmZjlkODc0MWYyYTkyNmJhZWU4YjExNmE0OTljYzVh
NzA3YmIuLjMzNWNhNzE4NDc2MGJiZTgxNWM5NGQ4Yzg2OTkyOWU1ZTBhZWY1NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluCkBAIC00
NCw2ICs0NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudCB7CiAgICAg
RGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpOwogICAgIEFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyIHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgRGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXIgcmVxdWVzdElkZW50aWZpZXIpOwotfQogCisgICAgR2V0QWxsRGF0YWJhc2VOYW1lcyh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cit9CiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHAKaW5kZXggMWExMGRh
YjFhMDhkMmNiNzFjMGZiMjhhOTc1MjRhYTI1MjY1NDliNS4uN2VkZGJlMThmNzdhYmRiNjdhYTUx
MzJiM2M0NTU3MzRlODY1ZjNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CkBAIC02OCwxMSArNjcsNiBAQCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8VmVjdG9yPElEQgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVNlY3VyaXR5T3JpZ2luRGF0YSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBTZWN1cml0eU9yaWdpbkRhdGE+Ojpjb3B5KGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhKQotewotICAgIHJldHVybiBzZWN1cml0eU9yaWdpbkRh
dGEuaXNvbGF0ZWRDb3B5KCk7Ci19Ci0KIEFTQ0lJTGl0ZXJhbCBDcm9zc1RocmVhZENvcGllckJh
c2U8ZmFsc2UsIGZhbHNlLCBBU0NJSUxpdGVyYWw+Ojpjb3B5KGNvbnN0IEFTQ0lJTGl0ZXJhbCYg
bGl0ZXJhbCkKIHsKICAgICByZXR1cm4gbGl0ZXJhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYjQxYmM5Yzg0OTYyYmY0ODUwNmNkZWQyNGJi
Zjk0YjFiZjBlMDQ3My4uMzEwZDVmODk2YzliZThjZWY4Yjg1MzdlMDdmNTExNjIwNWM1ZDljMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTUy
LDEwICs1Miw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIFdlYktpdDo6TGVnYWN5VW5pcXVlSURCRGF0CiAgICAgfQogfTsKIAotdGVtcGxh
dGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiB7Ci0gICAgc3RhdGljIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBjb3B5KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdHlwZSk7Ci19Owot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBW
ZWN0b3I8Y2hhcj4+IHsKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGNvcHkoY29uc3QgVmVjdG9y
PGNoYXI+Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA4Yzg1YmQ0MmM4NDE0NjExNzE1NTkzZWU5NDBiMGY4NGEwYzg5NGEzLi5h
MTIzYzA0ZWY5ZjU2NjBkNGZmOGJmMDQ4MjkzYjU0MGE1ZGE1OGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMTgyLDYgKzE4MiwxMSBA
QCB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVu
dCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lYwogICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudDo6RGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCit2b2lkIFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6R2V0QWxsRGF0YWJhc2VOYW1lcyhtX2lkZW50
aWZpZXIsIHRvcE9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRCkpOworfQorCiB2b2lk
IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0KQogewogICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVE
YXRhYmFzZShyZXN1bHQpOwpAQCAtMjgzLDYgKzI4OCwxMSBAQCB2b2lkIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudAogICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5ub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tl
ZChyZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7CiB9CiAKK3ZvaWQg
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQoreworICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQs
IGRhdGFiYXNlTmFtZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oCmluZGV4IGVkYzVhMTYzZWY2NzI5OTNhMWRlMjIwZDdkNWUwMDQ5ZWFi
YjUxN2UuLjc4ZDcwYjE1YzNiOTRjMWM1YWE5ZDVjNjkzYjc3ZDljY2Y2YjEzMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTY1LDYgKzY1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJvcnRPcGVuQW5k
VXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VO
YW1lcyhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxs
YmFja0lEKSBmaW5hbDsKIAogICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIG92ZXJy
aWRlIHsgUmVmQ291bnRlZDxXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI+OjpkZXJlZigpOyB9CkBA
IC04OSw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
dWludDY0X3QgdW5pcXVlRGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbik7CiAgICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNv
cmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJFcnJvciYpOwogICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQo
Y29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbik7CisgICAgdm9pZCBkaWRH
ZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkYXRhYmFzZU5hbWVzKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgppbmRleCAxMTEy
MzJhNDgzY2MxYTdkYzFhY2E2NDNmMzUyZDBkMDVlZTE4YjA4Li42NWVjMTAzY2ZiODU3YjE2NmQy
YjQ0NzQ1Y2EwNTIxMjdlZmY1YjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTQ0LDYgKzQ0LDcgQEAgbWVz
c2FnZXMgLT4gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyIHsKICAgICBEaWRTdGFydFRyYW5zYWN0
aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IFdlYkNvcmU6OklEQkVycm9yIGVycm9yKQogICAgIE5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2Vk
KFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikKIAorICAgIERpZEdldEFsbERhdGFi
YXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1l
cykKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFU
QUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTc1YjNjMzhhOTFhMjc4YTRkNTRkNzU3YjFjYTVjOWI0
YzVhY2ZiLi4zNjY0OTc5OGIwM2E0NzAyNGE2OTc2N2U3NTA2YTMyNzE5NTc3Njk3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTYtMDQtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vZGVybiBJREI6IEltcGxlbWVudCBuYXRpdmUgSURCRmFjdG9yeS5n
ZXRBbGxEYXRhYmFzZU5hbWVzIGZvciBXZWJJbnNwZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW9yZSB0byB0aGlzIHRlc3QgYW5kIHJl
LWVuYWJsZSBpdC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaW5z
cGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy5odG1sOgorCiAy
MDE2LTA0LTI3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBD
U1A6IEFkZCB0ZXN0cyBmb3Igc2V0dGluZyBhbGxvd0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZVN0YXJUb01hdGNoQW55UHJvdG9jb2wKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDg1NDdjNzExYzJj
NTQyZmU1Njk0NTFiZGJiNWNjYWExNDk4MzFkMzQuLjQ2MGJjMTY1ZGRkNzJmODkxOWJlYTQ2MTUw
YTVkNmNiMjY5ZmM3MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTI2LDkgKzkyNiw2IEBAIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNS5odG1sIFsgU2tp
cCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVyLTYuaHRt
bCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLXdp
dGhpbi1kYXRhYmFzZS5odG1sIFsgU2tpcCBdCiAKLSMgSW5zcGVjdG9yIGRvZXNuJ3Qgc3VwcG9y
dCBtb2Rlcm4gSURCIHlldAotd2Via2l0Lm9yZy9iLzE1NDY4NiBpbnNwZWN0b3IvaW5kZXhlZGRi
L3JlcXVlc3REYXRhYmFzZU5hbWVzLmh0bWwgWyBTa2lwIF0KLQogIyBUaGVzZSB0d28gSURCIHRl
c3RzIGFyZSwgYnkgdGhlaXIgbmF0dXJlLCB2ZXJ5IHNsb3cKICMgU2tpcCB0aGVzZSB1bnRpbCB3
ZSBoYXZlIGEgZml4IGZvciB3ZWJraXQub3JnL2IvMTU1MDQxCiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vZXhjZWVkLW9wZW4tZmlsZS1saW1pdC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNl
TmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDhiMjdiMTk2MjA3NTBjOTg3MjJjOTc2ZTA4ZTVkODhh
ZDdkNmFmNzguLjZlMjFjZjc5Njg2ZjA0YmY0ZmJlOTIxNzZiM2FiNDcwNGIyNWZiNGQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFt
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVx
dWVzdERhdGFiYXNlTmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNyBAQAogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDEwOiBDcmVhdGVkIERhdGFiYXNlICdEYXRhYmFzZTEnCiBDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMTA6IENyZWF0ZWQgRGF0YWJhc2UgJ0RhdGFiYXNlMicKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxMDogQ3JlYXRlZCBEYXRhYmFzZSAn4YmNJworQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDEwOiBDcmVhdGVkIERhdGFiYXNlICfwkI2GJwogCiBQQVNTOiBObyBJbmRleGVkREIgZGF0
YWJhc2VzIHNob3VsZCBleGlzdCBpbml0aWFsbHkKIENyZWF0ZWQgRGF0YWJhc2UgJ0RhdGFiYXNl
MScKQEAgLTgsNCArMTAsMTAgQEAgUEFTUzogQSBzaW5nbGUgSW5kZXhlZERCIGRhdGFiYXNlIHNo
b3VsZCBleGlzdAogQ3JlYXRlZCBEYXRhYmFzZSAnRGF0YWJhc2UyJwogUEFTUzogVHdvIEluZGV4
ZWREQiBkYXRhYmFzZXMgc2hvdWxkIGV4aXN0CiBbIkRhdGFiYXNlMSIsIkRhdGFiYXNlMiJdCitD
cmVhdGVkIERhdGFiYXNlICfhiY0nCitQQVNTOiBUd28gSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91
bGQgZXhpc3QKK1siRGF0YWJhc2UxIiwiRGF0YWJhc2UyIiwi4YmNIl0KK0NyZWF0ZWQgRGF0YWJh
c2UgJ/CQjYYnCitQQVNTOiBGb3VyIEluZGV4ZWREQiBkYXRhYmFzZXMgc2hvdWxkIGV4aXN0Citb
IkRhdGFiYXNlMSIsIkRhdGFiYXNlMiIsIuGJjSIsIvCQjYYiXQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzLmh0bWwK
aW5kZXggMTdhZmU0YWU1ZDU5YmE3ZjRjY2M0OWZlZGYxNTJiZjhhZjlmYjI0NC4uZTJkOTc1NWJj
ZTVlMmQ5ZDc2ZjlmOTRmMWI1MTYwMWJmYmM1NzU4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMuaHRtbApAQCAt
NTUsNiArNTUsMjkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VGhhdChuYW1lcy5sZW5ndGggPT09IDIsICJUd28gSW5kZXhlZERCIGRh
dGFiYXNlcyBzaG91bGQgZXhpc3QiKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coSlNPTi5zdHJpbmdpZnkobmFtZXMpKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlRGF0YWJhc2UoJ1x1MTI0ZCcpIik7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGFjdGlvbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgSW5kZXhlZERC
QWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMoV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdpbiwgZnVuY3Rpb24oZXJyb3IsIG5hbWVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChuYW1lcy5sZW5ndGgg
PT09IDMsICJUd28gSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3QiKTsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coSlNPTi5zdHJpbmdpZnkobmFtZXMpKTsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY3JlYXRlRGF0
YWJhc2UoJ1x1ZDgwMFx1ZGY0NicpIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGFjdGlvbjogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXMo
V2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5zZWN1cml0eU9yaWdp
biwgZnVuY3Rpb24oZXJyb3IsIG5hbWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAobiBp
biBuYW1lcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KG5hbWVzLm4pOworCisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0Tm9FcnJvcihlcnJvcik7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChuYW1lcy5sZW5ndGggPT09
IDQsICJGb3VyIEluZGV4ZWREQiBkYXRhYmFzZXMgc2hvdWxkIGV4aXN0Iik7CisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKEpTT04uc3RyaW5naWZ5KG5hbWVzKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IH0K
</data>
<flag name="review"
          id="301710"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277548</attachid>
            <date>2016-04-27 16:55:52 -0700</date>
            <delta_ts>2016-04-27 18:16:01 -0700</delta_ts>
            <desc>Patch for EWS + landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>63772</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZTc1YjNjLi4xNWU5NjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDQt
MjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IEltcGxlbWVudCBuYXRpdmUgSURCRmFjdG9yeS5nZXRBbGxEYXRhYmFzZU5hbWVzIGZvciBX
ZWJJbnNwZWN0b3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTcwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisg
ICAgICAgIEFkZCBtb3JlIHRvIHRoaXMgdGVzdCBhbmQgcmUtZW5hYmxlIGl0LgorCisgICAgICAg
ICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBpbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVl
c3REYXRhYmFzZU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvaW5kZXhl
ZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzLmh0bWw6CisKIDIwMTYtMDQtMjcgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIENTUDogQWRkIHRlc3RzIGZvciBzZXR0
aW5nIGFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2Nv
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODU0N2M3MS4uNDYwYmMxNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCkBAIC05MjYsOSArOTI2LDYgQEAgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0
aW9uLXNjaGVkdWxlci01Lmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90
cmFuc2FjdGlvbi1zY2hlZHVsZXItNi5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLmh0bWwgWyBTa2lwIF0KIAot
IyBJbnNwZWN0b3IgZG9lc24ndCBzdXBwb3J0IG1vZGVybiBJREIgeWV0Ci13ZWJraXQub3JnL2Iv
MTU0Njg2IGluc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFiYXNlTmFtZXMuaHRtbCBbIFNr
aXAgXQotCiAjIFRoZXNlIHR3byBJREIgdGVzdHMgYXJlLCBieSB0aGVpciBuYXR1cmUsIHZlcnkg
c2xvdwogIyBTa2lwIHRoZXNlIHVudGlsIHdlIGhhdmUgYSBmaXggZm9yIHdlYmtpdC5vcmcvYi8x
NTUwNDEKIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9leGNlZWQtb3Blbi1maWxlLWxpbWl0Lmh0
bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIv
cmVxdWVzdERhdGFiYXNlTmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggOGIyN2Ix
OS4uNmUyMWNmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9y
ZXF1ZXN0RGF0YWJhc2VOYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy1leHBlY3RlZC50eHQKQEAgLTEsNSAr
MSw3IEBACiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IENyZWF0ZWQgRGF0YWJhc2UgJ0RhdGFi
YXNlMScKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogQ3JlYXRlZCBEYXRhYmFzZSAnRGF0YWJh
c2UyJworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBDcmVhdGVkIERhdGFiYXNlICfhiY0nCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IENyZWF0ZWQgRGF0YWJhc2UgJ/CQjYYnCiAKIFBBU1M6
IE5vIEluZGV4ZWREQiBkYXRhYmFzZXMgc2hvdWxkIGV4aXN0IGluaXRpYWxseQogQ3JlYXRlZCBE
YXRhYmFzZSAnRGF0YWJhc2UxJwpAQCAtOCw0ICsxMCwxMCBAQCBQQVNTOiBBIHNpbmdsZSBJbmRl
eGVkREIgZGF0YWJhc2Ugc2hvdWxkIGV4aXN0CiBDcmVhdGVkIERhdGFiYXNlICdEYXRhYmFzZTIn
CiBQQVNTOiBUd28gSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3QKIFsiRGF0YWJhc2Ux
IiwiRGF0YWJhc2UyIl0KK0NyZWF0ZWQgRGF0YWJhc2UgJ+GJjScKK1BBU1M6IFR3byBJbmRleGVk
REIgZGF0YWJhc2VzIHNob3VsZCBleGlzdAorWyJEYXRhYmFzZTEiLCJEYXRhYmFzZTIiLCLhiY0i
XQorQ3JlYXRlZCBEYXRhYmFzZSAn8JCNhicKK1BBU1M6IEZvdXIgSW5kZXhlZERCIGRhdGFiYXNl
cyBzaG91bGQgZXhpc3QKK1siRGF0YWJhc2UxIiwiRGF0YWJhc2UyIiwi4YmNIiwi8JCNhiJdCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERhdGFi
YXNlTmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvcmVxdWVzdERh
dGFiYXNlTmFtZXMuaHRtbAppbmRleCAxN2FmZTRhLi5lMmQ5NzU1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXF1ZXN0RGF0YWJhc2VOYW1lcy5o
dG1sCkBAIC01NSw2ICs1NSwyOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9yKTsKICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5hbWVzLmxlbmd0aCA9PT0gMiwgIlR3byBJbmRl
eGVkREIgZGF0YWJhc2VzIHNob3VsZCBleGlzdCIpOwogICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZyhKU09OLnN0cmluZ2lmeShuYW1lcykpOworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjcmVhdGVEYXRhYmFzZSgnXHUxMjRkJyki
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBJ
bmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lcyhXZWJJbnNwZWN0b3IuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3VyaXR5T3JpZ2luLCBmdW5jdGlvbihlcnJvciwgbmFt
ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVy
cm9yKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5hbWVz
Lmxlbmd0aCA9PT0gMywgIlR3byBJbmRleGVkREIgZGF0YWJhc2VzIHNob3VsZCBleGlzdCIpOwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhKU09OLnN0cmluZ2lmeShuYW1l
cykpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJj
cmVhdGVEYXRhYmFzZSgnXHVkODAwXHVkZjQ2JykiKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgYWN0aW9uOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YWJh
c2VOYW1lcyhXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnNlY3Vy
aXR5T3JpZ2luLCBmdW5jdGlvbihlcnJvciwgbmFtZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yIChuIGluIG5hbWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQobmFtZXMubik7
CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3ROb0Vycm9yKGVycm9y
KTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KG5hbWVzLmxl
bmd0aCA9PT0gNCwgIkZvdXIgSW5kZXhlZERCIGRhdGFiYXNlcyBzaG91bGQgZXhpc3QiKTsKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coSlNPTi5zdHJpbmdpZnkobmFtZXMp
KTsKICAgICAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA4YjcyZmY3Li5jZGNmMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE2LTA0LTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBN
b2Rlcm4gSURCOiBJbXBsZW1lbnQgbmF0aXZlIElEQkZhY3RvcnkuZ2V0QWxsRGF0YWJhc2VOYW1l
cyBmb3IgV2ViSW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBNb3ZlZCB0aGVzZSBIZXggRGlnaXQgdXRpbGl0aWVzIGZyb20gV2ViQ29y
ZSBVUkwgY29kZSAoPz8/KSwgCisgICAgICAgIGFuZCBhZGQgYSBjaGVja2VkIHZlcnNpb24gb2Yg
Z2V0dGluZyB0aGUgaGV4IGRpZ2l0IHZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvSGV4
TnVtYmVyLmg6CisgICAgICAgIChXVEY6OmlzSGV4RGlnaXQpOgorICAgICAgICAoV1RGOjp1bmNo
ZWNrZWRIZXhEaWdpdCk6CisgICAgICAgIChXVEY6OmhleERpZ2l0VmFsdWUpOgorICAgICAgICAo
V1RGOjp1bmNoZWNrZWRIZXhEaWdpdFZhbHVlKToKKwogMjAxNi0wNC0yNSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIGJ1aWxkIGZsYWcgZm9y
IHRlbXBsYXRlIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCmluZGV4IDc0MWE4YzEuLmM0M2I1ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0hleE51bWJlci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTE3LDggKzE4LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgogICovCiAKLSNpZm5kZWYgSGV4TnVtYmVyX2gKLSNkZWZpbmUgSGV4TnVtYmVyX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAt
MTExLDYgKzExMSw1NCBAQCBpbmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXpl
KHVuc2lnbmVkIG51bWJlciwgVCYgZGVzdGluYXRpb24sIHVuc2lnbgogICAgIGRlc3RpbmF0aW9u
LmFwcGVuZChyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKIH0KIAorCitpbmxpbmUgYm9v
bCBpc0hleERpZ2l0KGNoYXIgYykKK3sKKyAgICByZXR1cm4gKGMgPj0gJzAnICYmIGMgPD0gJzkn
KSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnRicpIHx8IChjID49ICdhJyAmJiBjIDw9ICdmJyk7Cit9
CisKK2lubGluZSBjaGFyIHVuY2hlY2tlZEhleERpZ2l0KGludCBpKQoreworICAgIGlmIChpIDwg
MCB8fCBpID4gMTYpCisgICAgICAgIHJldHVybiAnMCc7CisKKyAgICByZXR1cm4gKGkgPj0gMTAp
ID8gaSAtIDEwICsgJ0EnIDogaSArICcwJzsKK30KKworaW5saW5lIGJvb2wgaGV4RGlnaXRWYWx1
ZShjaGFyIGMsIGNoYXImIHJlc3VsdCkKK3sKKyAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScp
IHsKKyAgICAgICAgcmVzdWx0ID0gYyAtICcwJzsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKSB7CisgICAgICAgIHJlc3VsdCA9IGMg
LSAnQScgKyAxMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGMgPj0g
J2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgIHJlc3VsdCA9IGMgLSAnYScgKyAxMDsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUg
aW50IHVuY2hlY2tlZEhleERpZ2l0VmFsdWUoY2hhciBjKQoreworICAgIGlmIChjID49ICcwJyAm
JiBjIDw9ICc5JykKKyAgICAgICAgcmV0dXJuIGMgLSAnMCc7CisKKyAgICBpZiAoYyA+PSAnQScg
JiYgYyA8PSAnRicpCisgICAgICAgIHJldHVybiBjIC0gJ0EnICsgMTA7CisKKyAgICBpZiAoYyA+
PSAnYScgJiYgYyA8PSAnZicpCisgICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7CisKKyAgICBy
ZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kQnl0
ZUFzSGV4OwpAQCAtMTE5LDUgKzE2Nyw3IEBAIHVzaW5nIFdURjo6YXBwZW5kVW5zaWduZWRBc0hl
eEZpeGVkU2l6ZTsKIHVzaW5nIFdURjo6cGxhY2VCeXRlQXNIZXg7CiB1c2luZyBXVEY6OnBsYWNl
Qnl0ZUFzSGV4Q29tcHJlc3NJZlBvc3NpYmxlOwogdXNpbmcgV1RGOjpMb3dlcmNhc2U7Ci0KLSNl
bmRpZiAvLyBIZXhOdW1iZXJfaAordXNpbmcgV1RGOjppc0hleERpZ2l0OwordXNpbmcgV1RGOjp1
bmNoZWNrZWRIZXhEaWdpdDsKK3VzaW5nIFdURjo6aGV4RGlnaXRWYWx1ZTsKK3VzaW5nIFdURjo6
dW5jaGVja2VkSGV4RGlnaXRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwN2RiOGM3Li4xYzY5MDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsOTQgQEAKIDIwMTYtMDQtMjcgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIE1vZGVybiBJREI6IEltcGxlbWVudCBuYXRpdmUg
SURCRmFjdG9yeS5nZXRBbGxEYXRhYmFzZU5hbWVzIGZvciBXZWJJbnNwZWN0b3IuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Q292ZXJlZCBieSBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlc3QpLgorCisgICAgICAgIEltcGxlbWVu
dCBhIG5ldyAiZ2V0QWxsRGF0YWJhc2VOYW1lcyIgY2FsbCBvbiBJREJGYWN0b3J5LgorICAgICAg
ICAKKyAgICAgICAgSXQgaXMgbm90IGV4cG9zZWQgdG8gdGhlIERPTSwgYW5kIGlzIG1lYW50IHNv
bGVseSBmb3IgaW50ZXJuYWwgV2ViSW5zcGVjdG9yIHVzZS4KKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oOiBFeHBvcnQgc29tZSBzdHVmZiB0
byBXZWJDb3JlVGVzdFN1cHBvcnQKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RT
dG9yZSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFz
ZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6Z2V0QWxsRGF0YWJh
c2VOYW1lcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxs
RGF0YWJhc2VOYW1lcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Qcm94eS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VO
YW1lcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25U
b1NlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnRE
ZWxlZ2F0ZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Z2V0QWxsRGF0
YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cGVy
Zm9ybUdldEFsbERhdGFiYXNlTmFtZXMpOiBEbyB0aGUgYWN0dWFsIHdvcmsgb2YgZ2V0dGluZyAK
KyAgICAgICAgICB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGxpc3RpbmcgYW5kIGNvbnZlcnRp
bmcgdGhlIHBhdGhzIHRvIGRhdGFiYXNlIG5hbWVzLgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUZyb21FbmNv
ZGVkRmlsZW5hbWUpOiBIZWxwZXIgZm9yIElEQlNlcnZlci4KKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXMpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaDoK
KworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFt
ZXMpOiBVc2UgdGhlIG5ldyBJREJGYWN0b3J5IEFQSSB0bworICAgICAgICAgIGFzeW5jaHJvbm91
c2x5IGdldCB0aGUgbGlzdCBvZiBkYXRhYmFzZSBuYW1lcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L0Nyb3NzVGhyZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT46OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yPFN0cmluZz4+Ojpjb3B5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oOgorCisgICAgICAgICogcGxh
dGZvcm0vRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVGcm9tRmlsZW5h
bWUpOiBQZXJmb3JtIHRoZSByZXZlcnNlIG9mIGVuY29kZUZvckZpbGVuYW1lLgorICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKworICAgICAgICAqIHBsYXRmb3JtL2NmL0ZpbGVTeXN0
ZW1DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKToKKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNo
KTogVXRpbGl0eSBmb3IgcGVlbGluZyBvZmYgdGhlIGxhc3QgY29tcG9uZW50CisgICAgICAgICAg
b2YgYSBtdWx0aS1jb21wb25lbnQgcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3Rv
cnkpOiBUaGlzIHdhcyBicm9rZW4gd2hlbiByZXR1cm5pbmcgZmlsZW5hbWVzIHdpdGggVVRGIGlu
IHRoZW0uIEZpeCBpdC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVO
U1VSTEV4dHJhcy5tbTogTW92ZSB0aGUgc3RhdGljIGhleCBkaWdpdCB1dGlsaXR5IGZ1bmN0aW9u
cyB0byBXVEYuCisgICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjppc1VzZXJWaXNpYmxlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSGV4RGln
aXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aGV4RGlnaXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aGV4RGlnaXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgCisKKzIwMTYtMDQt
MjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIE1vZGVybml6
ZSBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIHN0eWxlLgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MTA2CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNl
LmgKaW5kZXggMDczYjU5My4uMGM2ZTgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIERPTVdpbmRvd0luZGV4ZWREYXRhYmFz
ZSogZnJvbShET01XaW5kb3cqKTsKIAotICAgIHN0YXRpYyBJREJGYWN0b3J5KiBpbmRleGVkREIo
RE9NV2luZG93Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElEQkZhY3RvcnkqIGluZGV4
ZWREQihET01XaW5kb3cmKTsKIAogICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRT
dXNwZW5zaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVu
dFN1c3BlbnNpb24oRnJhbWUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAwZjA1Yjk4Li4xMmQwYzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYsIGNvCiAKIFJlZlB0cjxXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewotICAgIExPRyhJbmRleGVkREIsICJJ
REJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlIC0gKCVzICVzKSIsIG1faW5mby5uYW1lKCkudXRm
OCgpLmRhdGEoKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVCghbV92ZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24gfHwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmlzVmVyc2lv
bkNoYW5nZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggYzk0ZDk2Zi4uOGNkNjJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC01OSwxMyArNTksMTggQEAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3Ry
aW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9v
dChjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIG1haW5G
cmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0b3J5LCBt
X21haW5GcmFtZU9yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CisgICAgcmV0dXJuIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobV9tYWluRnJhbWVP
cmlnaW4sIG1fb3BlbmluZ09yaWdpbiwgcm9vdERpcmVjdG9yeSk7Cit9CisKK1N0cmluZyBJREJE
YXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCit7CisgICAg
U3RyaW5nIG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290
RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CiAKICAgICAvLyBJZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUg
b3JpZ2lucyBhcmUgdGhlIHNhbWUsIHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KLSAgICBpZiAo
bV9vcGVuaW5nT3JpZ2luID09IG1fbWFpbkZyYW1lT3JpZ2luKQorICAgIGlmIChvcGVuaW5nT3Jp
Z2luID09IHRvcExldmVsT3JpZ2luKQogICAgICAgICByZXR1cm4gbWFpbkZyYW1lRGlyZWN0b3J5
OwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWluRnJhbWVEaXJlY3Rv
cnksIG1fb3BlbmluZ09yaWdpbi5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWluRnJhbWVEaXJlY3Rv
cnksIG9wZW5pbmdPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
OwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBmOWVmMDEwLi4zMWU0
MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtOTMsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlTmFtZTsg
fQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3Ry
aW5nJiByb290RGlyZWN0b3J5KSBjb25zdDsKKyAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGly
ZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9y
aWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCBjb25zdCBTdHJp
bmcmIHJvb3REaXJlY3RvcnkpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBib29sIGRlY29kZShEZWNvZGVyJiwgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDlkMGE3
N2EuLmJlOGY5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNTksNiArMTU5LDExIEBAIHNob3J0IElEQkZhY3Rvcnk6OmNtcChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU1ZhbHVlIGZpcnN0VmFsdWUsIEpTVmFsCiAg
ICAgcmV0dXJuIGZpcnN0LT5jb21wYXJlKHNlY29uZC5nZXQoKSk7CiB9CiAKK3ZvaWQgSURCRmFj
dG9yeTo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1l
T3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiBjYWxsYmFjaykKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25Qcm94eS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdP
cmlnaW4sIGNhbGxiYWNrKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5kZXggMWZkZjcxMy4uODM4NjI3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtMjcsOSArMjcsMTEg
QEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSlNWYWx1ZTsKQEAgLTM5LDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlOwogCkBAIC01OCw2ICs2MSw4IEBAIHB1YmxpYzoKIAogICAgIHNo
b3J0IGNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlIGZpcnN0LCBKU0M6
OkpTVmFsdWUgc2Vjb25kLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbiYg
bWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPik7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgSURCRmFjdG9yeShJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCmluZGV4IDkxZDU3NTUuLjk1NzRiN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uUHJveHkuY3BwCkBAIC04Miw2ICs4MiwxNSBAQCBSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gSURCQ29ubmVjdGlvblByb3h5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZQogICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCit2b2lkIElEQkNv
bm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbiYg
bWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiBjYWxsYmFjaykKK3sKKyAg
ICAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBieSB0aGUgd2ViIGlu
c3BlY3RvciBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuZ2V0QWxsRGF0YWJhc2VOYW1lcyht
YWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrKTsKK30KKworCiB9IC8vIG5h
bWVzYXBjZSBJREJDbGllbnQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5oCmluZGV4IGVmNWJiNzcuLmQyY2NkMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5oCkBAIC0yOCwxMyArMjgsMTcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAog
I2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBJREJEYXRhYmFzZUlkZW50aWZpZXI7CiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBuYW1lc3Bh
Y2UgSURCQ2xpZW50IHsKIApAQCAtNTcsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWYo
KTsKICAgICB2b2lkIGRlcmVmKCk7CiAKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IG9wZW5pbmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4m
KT4pOworCiBwcml2YXRlOgogICAgIElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgbV9jb25uZWN0aW9u
VG9TZXJ2ZXI7CiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggZDBhMWIyZi4uMGJkOTA2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTQxMSw2ICs0MTEsMjMgQEAgYm9v
bCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Omhhc1JlY29yZE9mVHJhbnNhY3Rpb24oY29uc3QgSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWMKICAgICByZXR1cm4gbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmNv
bnRhaW5zKGlkZW50aWZpZXIpIHx8IG1fY29tbWl0dGluZ1RyYW5zYWN0aW9ucy5jb250YWlucyhp
ZGVudGlmaWVyKSB8fCBtX2Fib3J0aW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIp
OwogfQogCit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhj
b25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdp
biYgb3BlbmluZ09yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpPiBjYWxsYmFjaykKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY2FsbGJhY2tJRCA9IDA7CisK
KyAgICBtX2dldEFsbERhdGFiYXNlTmFtZXNDYWxsYmFja3MuYWRkKCsrY2FsbGJhY2tJRCwgV1RG
TW92ZShjYWxsYmFjaykpOworCisgICAgbV9kZWxlZ2F0ZS0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtYWluRnJhbWVPcmlnaW4pLCBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcGVuaW5nT3JpZ2luKSwgY2Fs
bGJhY2tJRCk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRh
YmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRh
YmFzZU5hbWVzKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2dldEFsbERhdGFiYXNlTmFtZXND
YWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBBU1NFUlQoY2FsbGJhY2spOworCisgICAg
Y2FsbGJhY2soZGF0YWJhc2VOYW1lcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5k
ZXggYjAxNDQxYy4uM2NjYjMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaApAQCAt
MTIzLDYgKzEyMyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0
aW9uKElEQkRhdGFiYXNlJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9u
KElEQkRhdGFiYXNlJik7CiAKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5p
bmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBj
YWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyk7CisKIHByaXZh
dGU6CiAgICAgSURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVn
YXRlJik7CiAKQEAgLTE0MCw2ICsxNDMsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8SURCUmVz
b3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SURCVHJhbnNhY3Rpb24+PiBtX2Fib3J0aW5nVHJhbnNh
Y3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8VHJhbnNh
Y3Rpb25PcGVyYXRpb24+PiBtX2FjdGl2ZU9wZXJhdGlvbnM7CiAKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+PiBtX2dldEFs
bERhdGFiYXNlTmFtZXNDYWxsYmFja3M7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCQ29ubmVj
dGlvblByb3h5PiBtX3Byb3h5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUuaAppbmRleCAzNzBiM2JhLi5kODAzMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaApAQCAtNDIsNiArNDIsOCBAQCBjbGFzcyBJREJS
ZXNvdXJjZUlkZW50aWZpZXI7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkluZm87CiBjbGFzcyBJREJW
YWx1ZTsKIAorc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKKwogbmFtZXNwYWNlIEluZGV4ZWRE
QiB7CiBlbnVtIGNsYXNzIE9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZTsKIH0KQEAgLTc3LDYgKzc5
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVk
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcikg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkgPSAwOworCiAgICAgdmlydHVhbCB2
b2lkIHJlZigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSA9IDA7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rp
b25Ub0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAppbmRleCBiOTUyZjhjLi40YmY0MWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlv
blRvQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtMTM4LDYgKzEzOCwxMSBAQCB2b2lkIElE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIG1fZGVsZWdhdGUtPm5vdGlmeU9wZW5EQlJlcXVlc3RCbG9j
a2VkKHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKIH0KIAordm9p
ZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qg
Y2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCit7CisgICAg
bV9kZWxlZ2F0ZS0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyhjYWxsYmFja0lELCBkYXRhYmFzZU5h
bWVzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCBjNWRjNDJjLi43ZTI0NjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWlu
dDY0X3QgbmV3VmVyc2lvbik7CiAKKyAgICB2b2lkIGRpZEdldEFsbERhdGFiYXNlTmFtZXModWlu
dDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpOwor
CiBwcml2YXRlOgogICAgIElEQkNvbm5lY3Rpb25Ub0NsaWVudChJREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVs
ZWdhdGUuaAppbmRleCBjNDIzZTRjLi40MmM1NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVj
dGlvblRvQ2xpZW50RGVsZWdhdGUuaApAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRXJy
b3I7CkBAIC02NCw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeU9wZW5E
QlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pID0gMDsKIAor
ICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNr
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKSA9IDA7CisKICAgICB2aXJ0
dWFsIHZvaWQgcmVmKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpID0gMDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCmluZGV4IGQxODk4ZTEuLjA4MzM4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkNyb3NzVGhy
ZWFkQ29waWVyLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdERhdGEuaCIKICNpbmNsdWRlICJJREJS
ZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMzc2LDYgKzM3NywzNSBAQCB2
b2lkIElEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLAogICAgICAgICBkYXRhYmFzZUNvbm5lY3Rpb24tPmRpZEZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQocmVxdWVzdElkZW50aWZpZXIpOwogfQogCit2b2lkIElEQlNl
cnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sK
KyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJklEQlNl
cnZlcjo6cGVyZm9ybUdldEFsbERhdGFiYXNlTmFtZXMsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSUQpKTsKK30KKwor
dm9pZCBJREJTZXJ2ZXI6OnBlcmZvcm1HZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFt
ZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRf
dCBjYWxsYmFja0lEKQoreworICAgIFN0cmluZyBkaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50
aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QobWFpbkZyYW1lT3JpZ2luLCBv
cGVuaW5nT3JpZ2luLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBlbnRyaWVzID0gbGlzdERpcmVjdG9yeShkaXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgiKiIp
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFzZXM7CisgICAgZGF0YWJhc2VzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZW50cmllcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgZW50cnkgOiBl
bnRyaWVzKSB7CisgICAgICAgIFN0cmluZyBlbmNvZGVkTmFtZSA9IGxhc3RDb21wb25lbnRPZlBh
dGhJZ25vcmluZ1RyYWlsaW5nU2xhc2goZW50cnkpOworICAgICAgICBkYXRhYmFzZXMudW5jaGVj
a2VkQXBwZW5kKFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lRnJvbUVuY29kZWRG
aWxlbmFtZShlbmNvZGVkTmFtZSkpOworICAgIH0KKworICAgIHBvc3REYXRhYmFzZVRhc2tSZXBs
eShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFi
YXNlTmFtZXMsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjYWxsYmFja0lELCBkYXRhYmFz
ZXMpKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQoreworICAgIGF1dG8gY29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbk1hcC5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgY29ubmVjdGlvbi0+ZGlkR2V0
QWxsRGF0YWJhc2VOYW1lcyhjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzKTsKK30KKwogdm9pZCBJ
REJTZXJ2ZXI6OnBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFz
az4mJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggNjVh
MDJjMi4uYjA2OTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworCiAgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFRhc2s+JiYpOwogICAgIHZvaWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwogCkBAIC0xMDAsNiArMTAyLDkgQEAgcHJpdmF0
ZToKIAogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCisgICAgdm9pZCBwZXJmb3JtR2V0QWxs
RGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRH
ZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyk7
CisKICAgICBzdGF0aWMgdm9pZCBkYXRhYmFzZVRocmVhZEVudHJ5KHZvaWQqKTsKICAgICB2b2lk
IGRhdGFiYXNlUnVuTG9vcCgpOwogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJl
YWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYzE2MWVmZS4uMjNk
OTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY1OSw2ICs2NTks
MTcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICByZXR1cm4gZGF0YWJhc2VJbmZvOwog
fQogCitTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2Rl
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RlZE5hbWUpCit7CisgICAgaWYgKGVxdWFsKGVu
Y29kZWROYW1lLCBBU0NJSUxpdGVyYWwoIiUwMCIpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIFN0cmluZyBwYXJ0aWFsbHlEZWNvZGVkID0gZW5jb2RlZE5hbWU7CisgICAgcGFydGlhbGx5
RGVjb2RlZC5yZXBsYWNlKEFTQ0lJTGl0ZXJhbCgiJTJFIiksIEFTQ0lJTGl0ZXJhbCgiLiIpKTsK
KworICAgIHJldHVybiBkZWNvZGVGcm9tRmlsZW5hbWUocGFydGlhbGx5RGVjb2RlZCk7Cit9CisK
IFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIW1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKS5pc051bGwo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMzVkNDk3OS4uZjk5Zjg4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6
CiAKICAgICBJREJFcnJvciBnZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKGludDY0
X3Qgb2JqZWN0U3RvcmVSZWNvcmQsIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPFN0
cmluZz4mIGJsb2JGaWxlUGF0aHMpOwogCisgICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZU5hbWVG
cm9tRW5jb2RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0OwogICAgIFN0cmluZyBmdWxsRGF0YWJh
c2VQYXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDVkYzgzZWIu
LjMxZGZhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00MDEsNiArNDAxLDIy
IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkCiAgICAgfSk7CiB9CiAKK3ZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpnZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
bWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4s
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
cHJvdGVjdG9yKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdG9yLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSURdIHsK
KyAgICAgICAgbV9zZXJ2ZXItPmdldEFsbERhdGFiYXNlTmFtZXMobV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmlkZW50aWZpZXIoKSwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFj
a0lEKTsKKyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERh
dGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRh
dGFiYXNlTmFtZXMpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdG9y
KHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdG9y
LCBjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2Vy
dmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXMpOwor
ICAgIH0pOworfQorCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWNjZXNzVG9UZW1wb3JhcnlG
aWxlQ29tcGxldGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGRlbGV0ZUZpbGUocGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Q
cm9jZXNzSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKaW5kZXggZmUyODRjMi4uZDA0N2RlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuaApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRh
YmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBn
ZXRBbGxEYXRhYmFzZU5hbWVzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3Jp
Z2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNh
bGxiYWNrSUQpIGZpbmFsOwogCiAgICAgLy8gSURCQ29ubmVjdGlvblRvQ2xpZW50CiAgICAgdWlu
dDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwpAQCAtOTYsNiArOTcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgZmluYWw7CiAgICAgdm9pZCBk
aWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5T3Bl
bkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikgZmluYWw7
CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKSBmaW5hbDsKIAogICAgIHZvaWQgcmVm
KCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OnJlZigpOyB9CiAg
ICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+
OjpkZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA3MDYwMWZkLi41NjkzMjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAg
LTkwLDYyICs5MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotI2lm
IDAgLy8gSURCRmFjdG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyBpc24ndCBpbXBsZW1lbnRlZCBhbnkg
bW9yZS4gRGlzYWJsZSB0aGlzIGZvciBub3cuCi0KLWNsYXNzIEdldERhdGFiYXNlTmFtZXNDYWxs
YmFjayA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShH
ZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2spOwotcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2V0RGF0
YWJhc2VOYW1lc0NhbGxiYWNrPiBjcmVhdGUoUmVmPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJh
Y2s+JiYgcmVxdWVzdENhbGxiYWNrLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNr
KFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSwgc2VjdXJpdHlPcmlnaW4pKTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIH5HZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2soKSB7IH0KLQotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKLSAgICB9Ci0KLSAgICB2b2lkIGhhbmRsZUV2ZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBpZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuc3VjY2Vz
c0V2ZW50KSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIlVu
ZXhwZWN0ZWQgZXZlbnQgdHlwZS4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIElEQlJlcXVlc3QqIGlkYlJlcXVlc3QgPSBzdGF0aWNfY2FzdDxJREJSZXF1ZXN0
Kj4oZXZlbnQtPnRhcmdldCgpKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVj
OwotICAgICAgICBSZWZQdHI8SURCQW55PiByZXF1ZXN0UmVzdWx0ID0gaWRiUmVxdWVzdC0+cmVz
dWx0KGVjKTsKLSAgICAgICAgaWYgKGVjLmNvZGUpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdENh
bGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCByZXN1bHQgaW4gY2FsbGJhY2suIik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlcXVlc3RSZXN1
bHQtPnR5cGUoKSAhPSBJREJBbnk6OlR5cGU6OkRPTVN0cmluZ0xpc3QpIHsKLSAgICAgICAgICAg
IG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4i
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBkYXRhYmFzZU5hbWVzTGlzdCA9IHJlcXVlc3RSZXN1bHQtPmRvbVN0cmluZ0xp
c3QoKTsKLSAgICAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGRh
dGFiYXNlTmFtZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzTGlzdC0+bGVu
Z3RoKCk7ICsraSkKLSAgICAgICAgICAgIGRhdGFiYXNlTmFtZXMtPmFkZEl0ZW0oZGF0YWJhc2VO
YW1lc0xpc3QtPml0ZW0oaSkpOwotICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoV1RGTW92ZShkYXRhYmFzZU5hbWVzKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEdldERh
dGFiYXNlTmFtZXNDYWxsYmFjayhSZWY8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4mJiBy
ZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCi0gICAgICAgIDog
RXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAg
ICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykpCi0gICAgICAg
ICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikgeyB9Ci0gICAgUmVmPFJlcXVlc3RE
YXRhYmFzZU5hbWVzQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIFN0cmluZyBtX3Nl
Y3VyaXR5T3JpZ2luOwotfTsKLQotI2VuZGlmCi0KIGNsYXNzIEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiB7CiBwdWJsaWM6
CiAgICAgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQpAQCAtNTEyLDI5ICs0NTYsMzQgQEAgc3RhdGljIElEQkZhY3RvcnkqIGFzc2VydElEQkZh
Y3RvcnkoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBEb2N1bWVudCogZG9jdW1lbnQKIAogdm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBSZWY8UmVxdWVz
dERhdGFiYXNlTmFtZXNDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGVycm9yU3RyaW5nKTsKLSAgICBVTlVTRURfUEFSQU0oc2VjdXJpdHlPcmlnaW4pOwot
ICAgIHJlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvYnRhaW4gZGF0YWJh
c2UgbmFtZXMuIik7Ci0KLSNpZiAwIC8vIElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMgaXNu
J3QgaW1wbGVtZW50ZWQgYW55IG1vcmUuIERpc2FibGUgdGhpcyBmb3Igbm93LgogICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRoU2VjdXJpdHlPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9y
U3RyaW5nLCBmcmFtZSk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgYXV0byogb3BlbmluZ09yaWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOworICAg
IGlmICghb3BlbmluZ09yaWdpbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogdG9wT3Jp
Z2luID0gZG9jdW1lbnQtPnRvcE9yaWdpbigpOworICAgIGlmICghdG9wT3JpZ2luKQorICAgICAg
ICByZXR1cm47CisKICAgICBJREJGYWN0b3J5KiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9y
eShlcnJvclN0cmluZywgZG9jdW1lbnQpOwogICAgIGlmICghaWRiRmFjdG9yeSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPElEQlJlcXVl
c3Q+IGlkYlJlcXVlc3QgPSBpZGJGYWN0b3J5LT5nZXREYXRhYmFzZU5hbWVzKCpkb2N1bWVudCwg
ZWMpOwotICAgIGlmICghaWRiUmVxdWVzdCB8fCBlYykgewotICAgICAgICByZXF1ZXN0Q2FsbGJh
Y2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb2J0YWluIGRhdGFiYXNlIG5hbWVzLiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIFJlZlB0cjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxi
YWNrPiBjYWxsYmFjayA9IFdURk1vdmUocmVxdWVzdENhbGxiYWNrKTsKKyAgICBpZGJGYWN0b3J5
LT5nZXRBbGxEYXRhYmFzZU5hbWVzKCp0b3BPcmlnaW4sICpvcGVuaW5nT3JpZ2luLCBbY2FsbGJh
Y2tdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKSB7CisgICAgICAgIGlmICgh
Y2FsbGJhY2stPmlzQWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZUFycmF5ID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAgICAgIGZv
ciAoYXV0byYgZGF0YWJhc2VOYW1lIDogZGF0YWJhc2VOYW1lcykKKyAgICAgICAgICAgIGRhdGFi
YXNlTmFtZUFycmF5LT5hZGRJdGVtKGRhdGFiYXNlTmFtZSk7CiAKLSAgICBpZGJSZXF1ZXN0LT5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIEdldERhdGFiYXNlTmFt
ZXNDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSwgZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpLCBmYWxzZSk7Ci0jZW5kaWYKKyAgICAgICAg
Y2FsbGJhY2stPnNlbmRTdWNjZXNzKFdURk1vdmUoZGF0YWJhc2VOYW1lQXJyYXkpKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFJlZjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4mJiBy
ZXF1ZXN0Q2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9z
c1RocmVhZENvcGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENv
cGllci5jcHAKaW5kZXggNmRlNjcxNy4uNTA3NGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Vzc2lvbklELmgi
CiAjaW5jbHVkZSAiVGhyZWFkU2FmZURhdGFCdWZmZXIuaCIKQEAgLTg0LDYgKzg1LDExIEBAIENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFJlc291cmNlUmVzcG9uc2U+OjpUeXBl
IENyb3NzVGhyZWFkQ29waWVyQmFzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHlEYXRhKCk7CiB9
CiAKK0Nyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFNlY3VyaXR5T3JpZ2luRGF0
YT46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgU2VjdXJpdHlPcmln
aW5EYXRhPjo6Y29weShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEpCit7Cisg
ICAgcmV0dXJuIG9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCk7Cit9CisKIENyb3NzVGhyZWFkQ29w
aWVyQmFzZTxmYWxzZSwgZmFsc2UsIFNlc3Npb25JRD46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgU2Vzc2lvbklEPjo6Y29weShjb25zdCBTZXNzaW9uSUQmIHNlc3Np
b25JRCkKIHsKICAgICByZXR1cm4gc2Vzc2lvbklEOwpAQCAtOTQsNiArMTAwLDE2IEBAIENyb3Nz
VGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFRocmVhZFNhZmVEYXRhQnVmZmVyPjo6VHlw
ZSBDcm9zc1RocmVhZENvcGllCiAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKGJ1ZmZl
cik7CiB9CiAKK0Nyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFZlY3RvcjxTdHJp
bmc+Pjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8U3Ry
aW5nPj46OmNvcHkoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MpCit7CisgICAgVmVjdG9y
PFN0cmluZz4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0cmlu
Z3Muc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHN0cmluZ3MpCisgICAgICAgIHJl
c3VsdC51bmNoZWNrZWRBcHBlbmQoc3RyaW5nLmlzb2xhdGVkQ29weSgpKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogSW5kZXhlZERC
OjpUcmFuc2FjdGlvbk1vZGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSW5k
ZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU+Ojpjb3B5KGNvbnN0IEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25Nb2RlJiBtb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVy
LmgKaW5kZXggNDBjZmEzZS4uNGQyMGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNiArNTAsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBj
bGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVz
cG9uc2VEYXRhOwogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YTsKK3N0cnVj
dCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM7CiAK
IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2VIZWxwZXIgewpAQCAtMTM0LDYgKzEzNywxMSBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBS
ZXNvdXJjZVJlc3BvbnNlPiB7CiAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8
ZmFsc2UsIGZhbHNlLCBTZWN1cml0eU9yaWdpbkRhdGE+IHsKKyAgICB0eXBlZGVmIFNlY3VyaXR5
T3JpZ2luRGF0YSBUeXBlOworICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8
ZmFsc2UsIGZhbHNlLCBTZXNzaW9uSUQ+IHsKICAgICB0eXBlZGVmIFNlc3Npb25JRCBUeXBlOwog
ICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgU2Vzc2lvbklEJik7CkBAIC0xNDQsNiArMTUyLDEx
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2Us
IFRocmVhZFNhZmVEYXRhQnVmZmVyPiB7CiAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRD
b3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVmVjdG9yPFN0cmluZz4+IHsKKyAgICB0eXBlZGVmIFZl
Y3RvcjxTdHJpbmc+IFR5cGU7CisgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOworfTsKKwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogbmFtZXNwYWNlIElu
ZGV4ZWREQiB7CiBlbnVtIGNsYXNzIFRyYW5zYWN0aW9uTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5jcHAKaW5kZXggMzBlNWQwNC4uMzFlOTI3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKQEAgLTEzMCw2ICsxMzAsODcgQEAgU3RyaW5nIGVuY29k
ZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcpCiAgICAgcmV0dXJuIHJlc3Vs
dC50b1N0cmluZygpOwogfQogCitTdHJpbmcgZGVjb2RlRnJvbUZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgaW5wdXRTdHJpbmcpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXRTdHJpbmcubGVu
Z3RoKCk7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiBpbnB1dFN0cmluZzsKKwor
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVu
Z3RoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBpZiAoaW5wdXRTdHJpbmdbaV0gIT0gJyUnKSB7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGlucHV0U3RyaW5nW2ldKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5h
bWUsIGl0IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0
aGFuIHRoZSBjdXJyZW50IGluZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVk
IHZhbHVlLgorICAgICAgICBpZiAoaSArIDIgPj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgICAgICBpZiAoaW5wdXRTdHJpbmdbaSsxXSAhPSAnKycpIHsKKyAgICAgICAg
ICAgIGNoYXIgdmFsdWU7CisgICAgICAgICAgICBpZiAoIWhleERpZ2l0VmFsdWUoaW5wdXRTdHJp
bmdbaSArIDFdLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
ICAgIExDaGFyIGNoYXJhY3RlciA9IHZhbHVlIDw8IDQ7CisKKyAgICAgICAgICAgIGlmICghaGV4
RGlnaXRWYWx1ZShpbnB1dFN0cmluZ1tpICsgMl0sIHZhbHVlKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoYXJhY3RlciB8IHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhl
IGlucHV0IHN0cmluZyBpcyBhIHZhbGlkIGVuY29kZWQgZmlsZW5hbWUsIGl0IG11c3QgYmUgYXQg
bGVhc3QgNSBjaGFyYWN0ZXJzIGxvbmdlcgorICAgICAgICAvLyB0aGFuIHRoZSBjdXJyZW50IGlu
ZGV4IHRvIGFjY291bnQgZm9yIHRoaXMgcGVyY2VudCBlbmNvZGVkIHZhbHVlLgorICAgICAgICBp
ZiAoaSArIDUgPj0gbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBj
aGFyIHZhbHVlOworICAgICAgICBpZiAoIWhleERpZ2l0VmFsdWUoaW5wdXRTdHJpbmdbaSArIDJd
LCB2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBVQ2hhciBjaGFyYWN0
ZXIgPSB2YWx1ZSA8PCAxMjsKKworICAgICAgICBpZiAoIWhleERpZ2l0VmFsdWUoaW5wdXRTdHJp
bmdbaSArIDNdLCB2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBjaGFy
YWN0ZXIgPSBjaGFyYWN0ZXIgfCAodmFsdWUgPDwgOCk7CisKKyAgICAgICAgaWYgKCFoZXhEaWdp
dFZhbHVlKGlucHV0U3RyaW5nW2kgKyA0XSwgdmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgY2hhcmFjdGVyID0gY2hhcmFjdGVyIHwgKHZhbHVlIDw8IDQpOworCisgICAg
ICAgIGlmICghaGV4RGlnaXRWYWx1ZShpbnB1dFN0cmluZ1tpICsgNV0sIHZhbHVlKSkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjaGFyYWN0ZXIgfCB2
YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJp
bmcgbGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIGNoYXIgcGF0aFNlcGVyYXRvciA9ICdc
XCc7CisjZWxzZQorICAgIGNoYXIgcGF0aFNlcGVyYXRvciA9ICcvJzsKKyNlbmRpZgorCisgICAg
YXV0byBwb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGVyYXRvcik7CisgICAgaWYg
KHBvc2l0aW9uID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAgIHNpemVf
dCBlbmRPZlN1YnN0cmluZyA9IHBhdGgubGVuZ3RoKCkgLSAxOworICAgIGlmIChwb3NpdGlvbiA9
PSBlbmRPZlN1YnN0cmluZykgeworICAgICAgICAtLWVuZE9mU3Vic3RyaW5nOworICAgICAgICBw
b3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQocGF0aFNlcGVyYXRvciwgZW5kT2ZTdWJzdHJpbmcp
OworICAgIH0KKworICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwb3NpdGlvbiArIDEsIGVuZE9m
U3Vic3RyaW5nIC0gcG9zaXRpb24pOworfQorCiBib29sIGFwcGVuZEZpbGVDb250ZW50c1RvRmls
ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFyZ2V0KQog
ewogICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvclJlYWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IGYxYTc4ZGYuLjk1MjdkYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE0Niw2ICsxNDYsNyBAQCBXRUJDT1JFX0VY
UE9SVCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYg
cmVzdWx0KTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUg
Y3JlYXRpb24gdGltZS4KIGJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYsIEZpbGVN
ZXRhZGF0YSYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKK1N0cmluZyBs
YXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGNvbnN0IFN0cmluZyYgcGF0
aCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcm
IHBhdGgpOwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOwpAQCAtMTU5LDYgKzE2MCw3IEBAIGJv
b2wgZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJik7IC8vIFJldHVybnMgdHJ1ZSBpZiBz
dWNjZXNzZnVsLgogV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyID0gU3RyaW5nKCkpOwogCiBX
RUJDT1JFX0VYUE9SVCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmKTsKK1N0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNo
YXIqKTsKIAogaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7
IH0KIApAQCAtMTk0LDYgKzE5Niw3IEBAIGJvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxl
KTsKIAogLy8gRW5jb2RlIGEgc3RyaW5nIGZvciB1c2Ugd2l0aGluIGEgZmlsZSBuYW1lLgogV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGVuY29kZUZvckZpbGVOYW1lKGNvbnN0IFN0cmluZyYpOworU3Ry
aW5nIGRlY29kZUZyb21GaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKIAogI2lmIFVTRShDRikKIFJl
dGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKaW5kZXggM2U1NDBiOS4uMWY2ODRiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtNTQsNiArNTUsMTEgQEAgQ1N0cmluZyBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZl
ci5kYXRhKCksIHN0cmxlbihidWZmZXIuZGF0YSgpKSk7CiB9CiAKK1N0cmluZyBzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKSkuZ2V0KCk7Cit9CisKIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4IDU4MTg4ZmYu
LmEwODkyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCkBAIC01NCw2ICs1NCwxMSBAQCBTdHJpbmcgZmlsZW5hbWVUb1N0cmluZyhjb25z
dCBjaGFyKiBmaWxlbmFtZSkKICNlbmRpZgogfQogCitTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCit7
CisgICAgcmV0dXJuIGZpbGVuYW1lVG9TdHJpbmcoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsK
K30KKwogc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4gdW5lc2NhcGVkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCmluZGV4IDkxZjZkZmQuLmE4
NTcwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNV
UkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFz
LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxmdW5jdGlv
bmFsPgorI2ltcG9ydCA8d3RmL0hleE51bWJlci5oPgogI2ltcG9ydCA8d3RmL09iamNSdW50aW1l
RXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CkBAIC03MTgsMzQgKzcxOSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVzKE5T
U3RyaW5nICpzdHJpbmcsIEJPT0wgZW5jb2RlKQogICAgIHJldHVybiBbbXV0YWJsZUNvcHkgYXV0
b3JlbGVhc2VdOwogfQogCi1zdGF0aWMgQk9PTCBpc0hleERpZ2l0KGNoYXIgYykKLXsKLSAgICBy
ZXR1cm4gKGMgPj0gJzAnICYmIGMgPD0gJzknKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnRicpIHx8
IChjID49ICdhJyAmJiBjIDw9ICdmJyk7Ci19Ci0KLXN0YXRpYyBjaGFyIGhleERpZ2l0KGludCBp
KQotewotICAgIGlmIChpIDwgMCB8fCBpID4gMTYpCi0gICAgICAgIHJldHVybiAnMCc7Ci0KLSAg
ICByZXR1cm4gKGkgPj0gMTApID8gaSAtIDEwICsgJ0EnIDogaSArPSAnMCc7IAotfQotCi1zdGF0
aWMgaW50IGhleERpZ2l0VmFsdWUoY2hhciBjKQotewotICAgIGlmIChjID49ICcwJyAmJiBjIDw9
ICc5JykKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0KLSAgICBpZiAoYyA+PSAnQScgJiYgYyA8
PSAnRicpCi0gICAgICAgIHJldHVybiBjIC0gJ0EnICsgMTA7Ci0KLSAgICBpZiAoYyA+PSAnYScg
JiYgYyA8PSAnZicpCi0gICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7Ci0KLSAgICBMT0dfRVJS
T1IoImlsbGVnYWwgaGV4IGRpZ2l0Iik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBOU1N0
cmluZyAqc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2UoTlNTdHJpbmcgKnN0cmluZykKIHsKICAg
ICBOU011dGFibGVTdHJpbmcgKnRyaW1tZWQgPSBbW3N0cmluZyBtdXRhYmxlQ29weV0gYXV0b3Jl
bGVhc2VdOwpAQCAtODMxLDggKzgwNCw4IEBAIHN0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5
cGVkU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIFVJbnQ4IGMgPSBpbkJ5dGVzW2ld
OwogICAgICAgICBpZiAoYyA8PSAweDIwIHx8IGMgPj0gMHg3ZikgewogICAgICAgICAgICAgKnAr
KyA9ICclJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhEaWdpdChjID4+IDQpOwotICAgICAgICAg
ICAgKnArKyA9IGhleERpZ2l0KGMgJiAweGYpOworICAgICAgICAgICAgKnArKyA9IHVuY2hlY2tl
ZEhleERpZ2l0KGMgPj4gNCk7CisgICAgICAgICAgICAqcCsrID0gdW5jaGVja2VkSGV4RGlnaXQo
YyAmIDB4Zik7CiAgICAgICAgICAgICBvdXRMZW5ndGggKz0gMzsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICpwKysgPSBjOwpAQCAtOTI2LDggKzg5OSw4IEBAIE5TRGF0YSAqZGF0YUZv
clVSTENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVu
dFR5cGUpCiAgICAgICAgIGlmIChjIDw9IDB4MjAgfHwgYyA+PSAweDdmKSB7CiAgICAgICAgICAg
ICBjaGFyIGVzY2FwZWRbM107CiAgICAgICAgICAgICBlc2NhcGVkWzBdID0gJyUnOwotICAgICAg
ICAgICAgZXNjYXBlZFsxXSA9IGhleERpZ2l0KGMgPj4gNCk7Ci0gICAgICAgICAgICBlc2NhcGVk
WzJdID0gaGV4RGlnaXQoYyAmIDB4Zik7CisgICAgICAgICAgICBlc2NhcGVkWzFdID0gdW5jaGVj
a2VkSGV4RGlnaXQoYyA+PiA0KTsKKyAgICAgICAgICAgIGVzY2FwZWRbMl0gPSB1bmNoZWNrZWRI
ZXhEaWdpdChjICYgMHhmKTsKICAgICAgICAgICAgIFtyZXN1bHREYXRhIGFwcGVuZEJ5dGVzOmVz
Y2FwZWQgbGVuZ3RoOjNdOyAgICAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNoYXIg
YlsxXTsKQEAgLTEwMzgsOCArMTAxMSw4IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjcmVhdGVTdHJp
bmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoQ0ZTdHJpbmdSZWYgc3RyaW5nKQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmb3IgKENGSW5kZXggaiA9IDA7IGogPCBvZmZzZXQ7ICsraikg
ewogICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAg
ICBvdXRCdWZmZXIuYXBwZW5kKGhleERpZ2l0KHV0ZjhCdWZmZXJbal0gPj4gNCkpOwotICAgICAg
ICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQoaGV4RGlnaXQodXRmOEJ1ZmZlcltqXSAmIDB4Zikp
OworICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodW5jaGVja2VkSGV4RGlnaXQodXRm
OEJ1ZmZlcltqXSA+PiA0KSk7CisgICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1bmNo
ZWNrZWRIZXhEaWdpdCh1dGY4QnVmZmVyW2pdICYgMHhmKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBVQ2hhciB1dGYxNkJ1ZmZlclsyXTsKQEAgLTEwNzEs
NyArMTA0NCw3IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQogICAg
ICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ldOwogICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUg
c2VxdWVuY2VzIHRoYXQgaW5kaWNhdGUgYnl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKICAgICAgICAg
aWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxlbmd0aCAmJiBpc0hleERpZ2l0KHBbaSArIDFdKSkg
JiYgaSArIDIgPCBsZW5ndGggJiYgaXNIZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgdSA9IChoZXhEaWdpdFZhbHVlKHBbaSArIDFdKSA8PCA0KSB8IGhleERp
Z2l0VmFsdWUocFtpICsgMl0pOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1ID0gKHVuY2hl
Y2tlZEhleERpZ2l0VmFsdWUocFtpICsgMV0pIDw8IDQpIHwgdW5jaGVja2VkSGV4RGlnaXRWYWx1
ZShwW2kgKyAyXSk7CiAgICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKICAgICAgICAgICAgICAg
ICAvLyB1bmVzY2FwZQogICAgICAgICAgICAgICAgICpxKysgPSB1OwpAQCAtMTEwOCw4ICsxMDgx
LDggQEAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCiAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGMgPSAqcDsKICAgICAgICAgICAgIGlmIChjID4gMHg3ZikgewogICAg
ICAgICAgICAgICAgICpxKysgPSAnJSc7Ci0gICAgICAgICAgICAgICAgKnErKyA9IGhleERpZ2l0
KGMgPj4gNCk7Ci0gICAgICAgICAgICAgICAgKnErKyA9IGhleERpZ2l0KGMgJiAweGYpOworICAg
ICAgICAgICAgICAgICpxKysgPSB1bmNoZWNrZWRIZXhEaWdpdChjID4+IDQpOworICAgICAgICAg
ICAgICAgICpxKysgPSB1bmNoZWNrZWRIZXhEaWdpdChjICYgMHhmKTsKICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgICpxKysgPSAqcDsKICAgICAgICAgICAgIHArKzsKQEAgLTEx
NTIsNyArMTEyNSw3IEBAIEJPT0wgaXNVc2VyVmlzaWJsZVVSTChOU1N0cmluZyAqc3RyaW5nKQog
ICAgICAgICAgICAgdmFsaWQgPSBOTzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVs
c2UgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxlbmd0aCAmJiBpc0hleERpZ2l0KHBbaSArIDFd
KSkgJiYgaSArIDIgPCBsZW5ndGggJiYgaXNIZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgdSA9IChoZXhEaWdpdFZhbHVlKHBbaSArIDFdKSA8PCA0KSB8IGhl
eERpZ2l0VmFsdWUocFtpICsgMl0pOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1ID0gKHVu
Y2hlY2tlZEhleERpZ2l0VmFsdWUocFtpICsgMV0pIDw8IDQpIHwgdW5jaGVja2VkSGV4RGlnaXRW
YWx1ZShwW2kgKyAyXSk7CiAgICAgICAgICAgICBpZiAodSA+IDB4N2YpIHsKICAgICAgICAgICAg
ICAgICB2YWxpZCA9IE5POwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggY2Q4OGY2NS4u
YTYxZjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5
c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwCkBAIC0zMDEsOCArMzAxLDggQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQogVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVu
dHJpZXM7Ci0gICAgQ1N0cmluZyBjcGF0aCA9IHBhdGgudXRmOCgpOwotICAgIENTdHJpbmcgY2Zp
bHRlciA9IGZpbHRlci51dGY4KCk7CisgICAgQ1N0cmluZyBjcGF0aCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3RyaW5nIGNmaWx0ZXIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsdGVyKTsKICAgICBESVIqIGRpciA9IG9wZW5kaXIoY3BhdGguZGF0YSgpKTsK
ICAgICBpZiAoZGlyKSB7CiAgICAgICAgIHN0cnVjdCBkaXJlbnQqIGRwOwpAQCAtMzEyLDEwICsz
MTIsMTYgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKGZubWF0Y2goY2ZpbHRlci5kYXRhKCksIG5hbWUsIDApKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgY2hhciBmaWxlUGF0aFsxMDI0XTsKKyAgICAgICAg
ICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9NQVhdOwogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKGZpbGVQYXRoKSAtIDEpIDwgc25wcmludGYoZmlsZVBhdGgsIHNpemVvZihm
aWxlUGF0aCksICIlcy8lcyIsIGNwYXRoLmRhdGEoKSwgbmFtZSkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7IC8vIGJ1ZmZlciBvdmVyZmxvdwotICAgICAgICAgICAgZW50cmllcy5hcHBlbmQo
ZmlsZVBhdGgpOworCisgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworCisgICAgICAgICAgICAvLyBTb21lIGZpbGUg
c3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYg
c3RyaW5nLAorICAgICAgICAgICAgLy8gc28gdGhpcyBzdHJpbmcgbWlnaHQgYmUgbnVsbC4KKyAg
ICAgICAgICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGVudHJpZXMu
YXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAgY2xvc2VkaXIoZGly
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDI4MTFiNy4uYWQ1NTBhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDE2LTA0LTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBNb2Rlcm4gSURCOiBJbXBsZW1lbnQgbmF0aXZlIElEQkZhY3RvcnkuZ2V0
QWxsRGF0YWJhc2VOYW1lcyBmb3IgV2ViSW5zcGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBIYW5kbGUgdGhlIHByb2Nlc3MgaG9wIGZvciB0
aGUgbmV3IGdldEFsbERhdGFiYXNlTmFtZXMgY2FsbC4KKyAgICAgICAgCisgICAgICAgICogRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNl
TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmdldEFs
bERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50Lmg6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPjo6Y29weSk6IERlbGV0ZWQsIGFzIGl0cyBpbiBXZWJDb3JlIG5vdy4KKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFiYXNl
TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEdl
dEFsbERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmluOgor
CiAyMDE2LTA0LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIGRvd25sb2FkIG1lc3NhZ2UgcmVjZWl2ZXIgd2hlbiBOZXR3b3Jr
UHJvY2VzcyBjcmFzaGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAK
aW5kZXggYWFhNWE2Zi4uZmM1MWM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50LmNwcApAQCAtMTc0LDYgKzE3NCwxMSBAQCB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVzbwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Tm90aWZ5T3BlbkRC
UmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24p
KTsKIH0KIAordm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldEFsbERhdGFiYXNl
TmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNl
TmFtZXMpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjpE
aWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXMpKTsKK30KKwog
dm9pZCBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0KQogewogICAgIERhdGFiYXNlUHJvY2Vzczo6c2luZ2xldG9uKCku
aWRiU2VydmVyKCkuZGVsZXRlRGF0YWJhc2UocmVxdWVzdCk7CkBAIC0yODQsNiArMjg5LDExIEBA
IHZvaWQgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjCiAgICAgRGF0YWJhc2VQcm9jZXNzOjpzaW5nbGV0b24o
KS5pZGJTZXJ2ZXIoKS5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpnZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9y
aWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1
aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIERhdGFiYXNlUHJvY2Vzczo6c2luZ2xldG9uKCku
aWRiU2VydmVyKCkuZ2V0QWxsRGF0YWJhc2VOYW1lcyhzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdG9wT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1dlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDU1ZmQ3YTAuLmZkY2EwYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURC
Q29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBj
bGFzcyBJREJUcmFuc2FjdGlvbkluZm87CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKIHN0cnVjdCBJREJLZXlSYW5nZURhdGE7CitzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5EYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc3LDYgKzc4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURC
RXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0
IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pIGZpbmFsOwogCisgICAgdm9pZCBk
aWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkYXRhYmFzZU5hbWVzKSBmaW5hbDsKKwogICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUg
eyBSZWZDb3VudGVkPFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudD46OnJlZigpOyB9CiAgICAgdm9p
ZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ+
OjpkZXJlZigpOyB9CiAKQEAgLTEwMyw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKICAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcik7CiAKKyAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFt
ZXModWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCiAgICAgdm9pZCBk
aXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25U
b0NsaWVudC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluCmluZGV4IGE4NDhmZjku
LjMzNWNhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
Lm1lc3NhZ2VzLmluCkBAIC00NCw2ICs0NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudCB7CiAgICAgRGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIEFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SURCUmVzb3Vy
Y2VJZGVudGlmaWVyIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgRGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIpOwotfQogCisgICAgR2V0
QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW4sIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Cit9CiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhy
ZWFkQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGll
ci5jcHAKaW5kZXggMWExMGRhYi4uN2VkZGJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCkBAIC02OCwxMSArNjcsNiBAQCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiBD
cm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8VmVjdG9yPElEQgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVNlY3VyaXR5T3JpZ2luRGF0YSBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBTZWN1cml0eU9yaWdpbkRhdGE+Ojpjb3B5KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhKQotewotICAgIHJldHVybiBzZWN1cml0
eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCk7Ci19Ci0KIEFTQ0lJTGl0ZXJhbCBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBBU0NJSUxpdGVyYWw+Ojpjb3B5KGNvbnN0IEFTQ0lJ
TGl0ZXJhbCYgbGl0ZXJhbCkKIHsKICAgICByZXR1cm4gbGl0ZXJhbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYjQxYmM5Yy4uMzEwZDVmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTUy
LDEwICs1Miw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIFdlYktpdDo6TGVnYWN5VW5pcXVlSURCRGF0CiAgICAgfQogfTsKIAotdGVtcGxh
dGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiB7Ci0gICAgc3RhdGljIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBjb3B5KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdHlwZSk7Ci19Owot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBW
ZWN0b3I8Y2hhcj4+IHsKICAgICBzdGF0aWMgVmVjdG9yPGNoYXI+IGNvcHkoY29uc3QgVmVjdG9y
PGNoYXI+Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAppbmRleCA4Yzg1YmQ0Li5hMTIzYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtMTgyLDYgKzE4MiwxMSBAQCB2b2lkIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRf
dCBkYXRhYmFzZUNvbm5lYwogICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6RGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCit2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5n
T3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6R2V0QWxsRGF0YWJhc2VOYW1lcyhtX2lkZW50aWZpZXIsIHRv
cE9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRCkpOworfQorCiB2b2lkIFdlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0KQogewogICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVEYXRhYmFzZShy
ZXN1bHQpOwpAQCAtMjgzLDYgKzI4OCwxMSBAQCB2b2lkIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudAogICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5ub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChyZXF1ZXN0
SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7CiB9CiAKK3ZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNr
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVzKQoreworICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWRHZXRBbGxEYXRhYmFzZU5hbWVzKGNhbGxiYWNrSUQsIGRhdGFiYXNl
TmFtZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5oCmluZGV4IGVkYzVhMTYuLjc4ZDcwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBk
aWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZ2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKSBmaW5hbDsKIAog
ICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxX
ZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI+OjpkZXJlZigpOyB9CkBAIC04OSw2ICs5MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgdW5pcXVlRGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CiAg
ICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJvciYp
OwogICAgIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lv
biwgdWludDY0X3QgbmV3VmVyc2lvbik7CisgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhYmFzZU5hbWVz
KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgppbmRleCAxMTEyMzJhLi42NWVjMTAzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLm1l
c3NhZ2VzLmluCkBAIC00NCw2ICs0NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlciB7CiAgICAgRGlkU3RhcnRUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXIgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpJREJFcnJvciBlcnJvcikK
ICAgICBOb3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50
aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5l
d1ZlcnNpb24pCiAKKyAgICBEaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IGNhbGxiYWNr
SUQsIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlTmFtZXMpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>