<?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>188664</bug_id>
          
          <creation_ts>2018-08-16 11:29:56 -0700</creation_ts>
          <short_desc>[watchOS] Upstream Proximity Networking (nee Wi-Fi Assertions)</short_desc>
          <delta_ts>2018-08-16 16:22:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bdakin</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450761</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-08-16 11:29:56 -0700</bug_when>
    <thetext>[watchOS] Upstream Proximity Networking (nee Wi-Fi Assertions)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450790</commentid>
    <comment_count>1</comment_count>
      <attachid>347284</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-08-16 12:15:23 -0700</bug_when>
    <thetext>Created attachment 347284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450793</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-16 12:17:20 -0700</bug_when>
    <thetext>Attachment 347284 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityAssertion.mm:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.mm:80:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.mm:79:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.h:41:  WRM_iRATInterface is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 22 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>1450875</commentid>
    <comment_count>3</comment_count>
      <attachid>347304</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-08-16 14:18:31 -0700</bug_when>
    <thetext>Created attachment 347304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450876</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-16 14:21:16 -0700</bug_when>
    <thetext>Attachment 347304 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityAssertion.mm:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.mm:80:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.mm:79:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.h:41:  WRM_iRATInterface is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 23 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>1450880</commentid>
    <comment_count>5</comment_count>
      <attachid>347304</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-08-16 14:28:45 -0700</bug_when>
    <thetext>Comment on attachment 347304
Patch

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

&gt; Source/WebKit/Configurations/WebKit.xcconfig:104
&gt; +WK_PROXIMITY_NETWORKING_LDFLAGS = $(WK_PROXIMITY_NETWORKING_LDFLAGS_$(WK_PLATFORM_NAME));

Weird! This used to be about a framework, not a feature, but this is kind of nice too I guess.

It will only last until someone needs one of these things for something else, I guess.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:62
&gt; +enum class WebsiteDataFetchOption;

I feel like this should sort between class and struct, but maybe not

&gt; Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.h:82
&gt; +    enum class State {

Give it a size?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450886</commentid>
    <comment_count>6</comment_count>
      <attachid>347310</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-08-16 14:55:24 -0700</bug_when>
    <thetext>Created attachment 347310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450887</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-16 14:57:07 -0700</bug_when>
    <thetext>Attachment 347310 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityAssertion.mm:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.mm:80:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.mm:79:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/WebKit/NetworkProcess/watchos/NetworkProximityManager.h:41:  WRM_iRATInterface is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 23 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>1450937</commentid>
    <comment_count>8</comment_count>
      <attachid>347310</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-16 16:21:02 -0700</bug_when>
    <thetext>Comment on attachment 347310
Patch

Clearing flags on attachment: 347310

Committed r234968: &lt;https://trac.webkit.org/changeset/234968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450938</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-16 16:21:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450939</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-16 16:22:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/43400980&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347284</attachid>
            <date>2018-08-16 12:15:23 -0700</date>
            <delta_ts>2018-08-16 14:18:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188664-20180816121522.patch</filename>
            <type>text/plain</type>
            <size>72053</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwOGQ4MDRkYTk1YmUzZmYxODViOWJk
MTJhZTkxN2U3MTQ2OWY1ODAuLjk4MGVkOWY0ZjYzMjkyOGRhMGVjYjFkNTVhZDgxYjc0ZGY4YjUy
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMDgtMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBVcHN0cmVhbSBQcm94aW1pdHkgTmV0d29y
a2luZyAobmVlIFdpLUZpIEFzc2VydGlvbnMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBEZWZpbmVkIEVOQUJM
RV9QUk9YSU1JVFlfTkVUV09SS0lORyB0byAxIG9uIHdhdGNoT1MuCisKIDIwMTgtMDgtMTAgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW21hY09TXSBNdWx0aXBs
ZSB0aGlyZCBwYXJ0eSBhcHBzIGNyYXNoIGR1ZSB0byB0aGUgdGhyZWFkIHNhZmV0eSBjaGVjayBp
biBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZTk2YWYzZDUxMDJjZGYz
OWMzZGEzNjY5OGQ5NzVlZDNlMWQwMTgzLi4xMDBiNmM3ZTQ2NTJhNmFiMjhhNjVhM2ZmMWY2NTkx
NmNlY2Y2N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxOC0wOC0xNiAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFVwc3RyZWFtIFBy
b3hpbWl0eSBOZXR3b3JraW5nIChuZWUgV2ktRmkgQXNzZXJ0aW9ucykKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViS2l0
LnhjY29uZmlnOgorCisgICAgICAgIEFkZGVkIExERkxBR1MgZm9yIFByb3hpbWl0eSBOZXR3b3Jr
aW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJveGltaXR5TWFuYWdlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKworICAgICAgICBBZGRlZCBOZXR3b3JrUHJv
eGltaXR5TWFuYWdlciBhcyBhIHN1cHBsZW1lbnQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
OgorCisgICAgICAgIFJlbmFtZWQgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykgdG8gRU5BQkxFKFBS
T1hJTUlUWV9ORVRXT1JLSU5HKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisKKyAgICAgICAgUmVuYW1lZCBtX3dpRmlBc3NlcnRpb25I
b2xkZXIgdG8gbV9wcm94aW1pdHlBc3NlcnRpb25Ub2tlbiBhbmQgY2hhbmdlZCBpdHMgdHlwZSBm
cm9tIGFuCisgICAgICAgIG9wdGlvbmFsIFdpRmlBc3NlcnRpb25Ib2xkZXIgdG8gYW4gb3B0aW9u
YWwgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6VG9rZW4uCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVUb1N1
c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNz
RGlkUmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJv
Y2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCk6CisKKyAg
ICAgICAgQ2hhbmdlZCB0byB1c2UgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XaUZpQXNzZXJ0aW9uSG9sZGVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5tbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlB
c3NlcnRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlBc3Nl
cnRpb246OlRva2VuOjpUb2tlbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlB
c3NlcnRpb246OlRva2VuOjp+VG9rZW4pOgorCisgICAgICAgIEFkZGVkLiBOZXR3b3JrRGF0YVRh
c2tzIGhvbGQgdGhlc2UgdG9rZW5zIHRvIGtlZXAgQmx1ZXRvb3RoIG9yIFdpLUZpIGFzc2VydGlv
bnMgYWN0aXZlCisgICAgICAgIGR1cmluZyBsb2FkaW5nLiBXaGVuIHRoZSBsYXN0IHRva2VuIGlz
IGRlc3Ryb3llZCwgaXRzIGFzc29jaWF0ZWQgYXNzZXJ0aW9uIHdpbGwgYmUKKyAgICAgICAgZGVh
Y3RpdmF0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uOjpOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6aG9sZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZE5vdyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVy
RmlyZWQpOgorCisgICAgICAgIEFkZGVkLiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIGlzIHRo
ZSBiYXNlIGNsYXNzIGZvciBCbHVldG9vdGggYW5kIFdpLUZpIGFzc2VydGlvbnMuIEl0CisgICAg
ICAgIG1hbmFnZXMgdGhlIGxvZ2ljIGZvciBob2xkaW5nIGFuZCByZWxlYXNpbmcgYXNzZXJ0aW9u
cyBhcyB3ZWxsIGFzIHJlc3BvbmRpbmcgdG8gbmV0d29yaworICAgICAgICBwcm9jZXNzIGJhY2tn
cm91bmRpbmcgYW5kIHN1c3BlbnNpb24uCisKKyAgICAgICAgKFdlYktpdDo6Qmx1ZXRvb3RoUHJv
eGltaXR5QXNzZXJ0aW9uOjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24pOgorICAgICAgICAo
V2ViS2l0OjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmQpOgorICAgICAgICAo
V2ViS2l0OjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3cpOgorICAgICAgICAo
V2ViS2l0OjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2VOb3cpOgorCisgICAg
ICAgIEFkZGVkLiBIb2xkcyBhIEJsdWV0b290aCBhc3NlcnRpb24gYnkgY2FsbGluZyAtW0lEU1Nl
cnZpY2Ugc2V0TGlua1ByZWZlcmVuY2VzOl0uCisKKyAgICAgICAgKFdlYktpdDo6V2lGaVByb3hp
bWl0eUFzc2VydGlvbjo6V2lGaVByb3hpbWl0eUFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldpRmlQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3cpOgorICAgICAgICAoV2ViS2l0OjpXaUZp
UHJveGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlTm93KToKKworICAgICAgICBBZGRlZC4gSG9sZHMg
YSBXaS1GaSBhc3NlcnRpb24gYnkgdXNpbmcgV2lGaU1hbmFnZXJDbGllbnQuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmg6IEFkZGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSBzZXRD
bGllbnQ6XSk6CisgICAgICAgICgtW1dLUHJveGltaXR5U2VydmljZURlbGVnYXRlIHNlcnZpY2U6
ZGV2aWNlc0NoYW5nZWQ6XSk6CisgICAgICAgICgtW1dLUHJveGltaXR5U2VydmljZURlbGVnYXRl
IHNlcnZpY2U6bmVhcmJ5RGV2aWNlc0NoYW5nZWQ6XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm94aW1pdHlNYW5hZ2VyOjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp+TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6c3VwcGxlbWVudE5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpiaW5kUmVxdWVzdFRvV2lGaSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjphcHBseVByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cmVzdW1lKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cmVjb21tZW5kYXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cHJvY2Vzc1JlY29tbWVuZGF0aW9ucyk6
CisgICAgICAgIChXZWJLaXQ6OnRvUHJvY2Vzc0lEKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZVJlY29tbWVuZGF0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXNwZW5kUmVjb21tZW5kYXRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZUNvbXBhbmlvblBy
b3hpbWl0eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp1cGRh
dGVSZWNvbW1lbmRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXI6OmRldmljZXNDaGFuZ2VkKToKKworICAgICAgICBBZGRlZC4gTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXIgaXMgYSBuZXR3b3JrIHByb2Nlc3Mgc3VwcGxlbWVudCB0aGF0IGNhbiBiaW5kCisgICAg
ICAgIE5ldHdvcmtEYXRhVGFza3MgdG8gV2ktRmksIGFzc29jaWF0ZSBhc3NlcnRpb25zIHdpdGgg
TmV0d29ya0RhdGFUYXNrcywgY2hlY2sgZm9yIGNvbXBhbmlvbgorICAgICAgICBwcm94aW1pdHks
IGFzayBmb3IgcHJveGltaXR5IG5ldHdvcmsgcmVjb21tZW5kYXRpb25zLCBhbmQgcmVzcG9uZCB0
byBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgYmFja2dyb3VuZGluZyBhbmQgc3VzcGVuZGluZy4K
KworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKworICAgICAgICBSZW5hbWVkIHRoZSBX
aUZpQXNzZXJ0aW9ucyBsb2cgY2hhbm5lbCB0byBQcm94aW1pdHlOZXR3b3JraW5nLgorCisgICAg
ICAgICogUGxhdGZvcm0vc3BpL2lvcy9Nb2JpbGVXaUZpU1BJLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisKKyAgICAgICAgUmVu
YW1lZCBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKSB0byBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJ
TkcpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogY29uZmlnLmg6CisKKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgZGVmaW5pdGlvbiBvZiBI
QVZFX01PQklMRV9XSUZJLgorCiAyMDE4LTA4LTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0
YSBzaG91bGQgdXNlIG1lbWJlciBpbml0aWFsaXphdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
aW5kZXggYzMwNzBmZjkyYzczY2JlOGUyYTI5ZWVjY2JlYTBlMjBkZjgwZTMzMS4uMGQzZTdmNzQ1
ZDg3MWEyNDYyMjVkNDZkZGI1Njg2OTFiZjBkMmM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5o
CkBAIC0xODAsNiArMTgwLDE3IEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xNzkxNjc+LiAqLwogCiAjZW5kaWYgLyogUExBVEZPUk0oSU9TKSAqLwogCisv
KiAtLS0tLS0tLS0gQXBwbGUgV0FUQ0hPUyBwb3J0IC0tLS0tLS0tLSAqLworI2lmIFBMQVRGT1JN
KFdBVENIT1MpCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfUFJPWElNSVRZX05FVFdPUktJTkcpCisj
aWYgIVRBUkdFVF9PU19TSU1VTEFUT1IKKyNkZWZpbmUgRU5BQkxFX1BST1hJTUlUWV9ORVRXT1JL
SU5HIDEKKyNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBQTEFURk9STShXQVRDSE9TKSAqLwor
CiAvKiAtLS0tLS0tLS0gQXBwbGUgTUFDIHBvcnQgKG5vdCBJT1MpIC0tLS0tLS0tLSAqLwogI2lm
IFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54
Y2NvbmZpZwppbmRleCBhNjY3MDlmNGRhMDhkODFlZWM3MzQ4ODM4OGVkYWJkYTMxMTgxZTY0Li5l
MWFlMTE1ZTYwOGJmNmM3NGMwZTU1ZWI0ZjViMmJmNTkyYTcyYTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTAxLDYgKzEwMSw5IEBAIFdL
X1BERktJVF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9ICQoV0tfUERGS0lUX0xERkxBR1NfaXBo
b25lb3MpOwogV0tfUERGS0lUX0xERkxBR1NfaXBob25lb3Nbc2RrPWlwaG9uZSoxMS4qXSA9IDsK
IFdLX1BERktJVF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvcltzZGs9aXBob25lKjExLipdID0gOwog
CitXS19QUk9YSU1JVFlfTkVUV09SS0lOR19MREZMQUdTID0gJChXS19QUk9YSU1JVFlfTkVUV09S
S0lOR19MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tfUFJPWElNSVRZX05FVFdPUktJ
TkdfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBJRFMgLWZyYW1ld29yayBNb2JpbGVXaUZp
IC1mcmFtZXdvcmsgU3lzdGVtQ29uZmlndXJhdGlvbiAtZnJhbWV3b3JrIFdpcmVsZXNzQ29leE1h
bmFnZXI7CisKIFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUyA9ICQoV0tfU0FGRV9CUk9XU0lOR19M
REZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTX2lw
aG9uZW9zID0gLWZyYW1ld29yayBTYWZhcmlTYWZlQnJvd3Npbmc7CiBXS19TQUZFX0JST1dTSU5H
X0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBTYWZhcmlTYWZlQnJvd3Npbmc7
CkBAIC0xMTUsNyArMTE4LDcgQEAgV0tfVUlLSVRfTERGTEFHU19jb2NvYXRvdWNoID0gLWZyYW1l
d29yayBVSUtpdDsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MgPSAkKFdLX1VSTF9GT1JNQVRU
SU5HX0xERkxBR1NfJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HKSk7CiBXS19VUkxfRk9STUFUVElO
R19MREZMQUdTX1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGluZzsKIAotRlJBTUVXT1JLX0FO
RF9MSUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29y
ayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFw
aGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3Jr
IEltYWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdv
cmsgJChXS19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tf
QVNTRVJUSU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09S
RV9QREZfTERGTEFHUykgJChXS19DT1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NF
UlZJQ0VTX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19JT1NV
UkZBQ0VfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xE
RkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VT
VEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAk
KFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAkKFdLX1VSTF9G
T1JNQVRUSU5HX0xERkxBR1MpOworRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAtbG9i
amMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBD
b3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0
IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBJT0tp
dCAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChXS19BQ0NFU1NJQklMSVRZX0xE
RkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VTX0xERkxB
R1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QREZfTERGTEFHUykgJChXS19DT1JF
X1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfR1JB
UEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0VfTERGTEFHUykgJChXS19MSUJT
QU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVf
U0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5H
TF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1BST1hJTUlUWV9ORVRXT1JLSU5H
X0xERkxBR1MpICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1Mp
ICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUyk7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJk
IGxpYnJhcnkgYmFzaWNfc3RyaW5nc3RyZWFtLCBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhl
aXIgcmVsYXRlZCBleGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5
bWJvbHMuCiBVTkVYUE9SVEVEX1NZTUJPTF9MREZMQUdTID0gLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVElT
dDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDliYWRfYWxsb2Mg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53
bVB2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53bSAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVD
MkVPUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZO
N1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMxRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFYVNFRG4g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNv
cmUxMlBvbGljeUFjdGlvbkVFRWNsRVMyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUU0c3dhcEVSUzRfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUx
MlBvbGljeUFjdGlvbkVFRUMxRVJLUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMyRVJLUzRfIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBv
bGljeUFjdGlvbkVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThm
dW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25F
RUVhU0VSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5TdDNfXzExN2JhZF9m
dW5jdGlvbl9jYWxsRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJh
c2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVF
MF9OU18xM2Jhc2ljX2lzdHJlYW1JY1MyX0VFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9f
WlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlh
bGxvY2F0b3JJY0VFRUUwX05TXzE0YmFzaWNfaW9zdHJlYW1JY1MyX0VFIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJf
dHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUxNl9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VF
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRUTlN0M19fMTE4YmFzaWNfc3RyaW5nc3Ry
ZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18xMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxf
X1pUVk5TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185
YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4
YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VF
RUU4X05TXzEzYmFzaWNfb3N0cmVhbUljUzJfRUU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdkZTgwMGU3MThhNjFkYzI3ZjQ3Nzc0
OTE2YjU1OGE5NzdjNTcwNWYuLmFkNGYzNjk4MDg0YTk2MDlmZTNlYWY3ZWNiMzFkZDMxZTE0ZWNm
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFz
ay5oIgpAQCAtMTIxLDYgKzEyMiw5IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcygp
CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBhZGRTdXBw
bGVtZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKICNlbmRpZgorI2lmIEVOQUJM
RShQUk9YSU1JVFlfTkVUV09SS0lORykKKyAgICBhZGRTdXBwbGVtZW50PE5ldHdvcmtQcm94aW1p
dHlNYW5hZ2VyPigpOworI2VuZGlmCiAKICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xl
dG9uKCkuYWRkTGlzdGVuZXIoW3RoaXNdKGJvb2wgaXNPbkxpbmUpIHsKICAgICAgICAgYXV0byB3
ZWJQcm9jZXNzQ29ubmVjdGlvbnMgPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKQEAgLTE0OCw2
ICsxNTIsMTMgQEAgRG93bmxvYWRNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRNYW5h
Z2VyKCkKICAgICByZXR1cm4gZG93bmxvYWRNYW5hZ2VyOwogfQogCisjaWYgRU5BQkxFKFBST1hJ
TUlUWV9ORVRXT1JLSU5HKQorTmV0d29ya1Byb3hpbWl0eU1hbmFnZXImIE5ldHdvcmtQcm9jZXNz
Ojpwcm94aW1pdHlNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gKnN1cHBsZW1lbnQ8TmV0d29ya1By
b3hpbWl0eU1hbmFnZXI+KCk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVt
b3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGNvbm5lY3Rpb24pCiB7CiAgICAgc2l6ZV90IHZlY3RvckluZGV4ID0gbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMuZmluZChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2ZWQxZWVkODdlZmVhMzgwMGRlY2U5NTgy
ZmI5YmM1MTUwZTNkYjc2Li4xN2U3Yzk1M2YwNTExMGYxNDBlYTJlYzc5YzYyOTMzMTc2N2M0ZTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBA
IC01OCwxNSArNTgsMTUgQEAgY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKyAg
ICAKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKK2VudW0gY2xhc3MgV2Vic2l0
ZURhdGFUeXBlOwogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyOwotI2lmIEVOQUJMRShTRVJW
RVJfUFJFQ09OTkVDVCkKLWNsYXNzIFByZWNvbm5lY3RUYXNrOwotI2VuZGlmCiBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dDsKK2NsYXNzIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOwogY2xhc3MgTmV0d29ya1Jlc291cmNl
TG9hZGVyOwotZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwotZW51bSBjbGFzcyBX
ZWJzaXRlRGF0YVR5cGU7CitjbGFzcyBQcmVjb25uZWN0VGFzazsKIHN0cnVjdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
czsKIApAQCAtOTgsNiArOTgsOSBAQCBwdWJsaWM6CiAKICAgICBBdXRoZW50aWNhdGlvbk1hbmFn
ZXImIGF1dGhlbnRpY2F0aW9uTWFuYWdlcigpOwogICAgIERvd25sb2FkTWFuYWdlciYgZG93bmxv
YWRNYW5hZ2VyKCk7CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorICAgIE5ldHdv
cmtQcm94aW1pdHlNYW5hZ2VyJiBwcm94aW1pdHlNYW5hZ2VyKCk7CisjZW5kaWYKIAogICAgIE5l
dHdvcmtDYWNoZTo6Q2FjaGUqIGNhY2hlKCkgeyByZXR1cm4gbV9jYWNoZS5nZXQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGI3YWIxODYwMDcxNzkzMDM1NTY3
MGU5YzNjNDA3OTc5YTc2NjUzOGUuLjJlZjcwMDY4MmJlZjNkN2M4ZTgxZGZlMjQ5YmQ5MDVkMzY2
OTRjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNDT1JTRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXND
YW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMp
CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQogICAgIGVuY29kZXIgPDwgd2lyZWxl
c3NDb250ZXh0SWRlbnRpZmllcjsKICNlbmRpZgogfQpAQCAtMjUxLDcgKzI1MSw3IEBAIGJvb2wg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIE5ldHdvcmtQcm9jCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXJsU2No
ZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0jaWYgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykKKyNpZiBFTkFCTEUoUFJP
WElNSVRZX05FVFdPUktJTkcpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2lyZWxl
c3NDb250ZXh0SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDBlOTEyOWIzOTUwMGQ0MDAwNWNmODk3MjNm
NjUyMDZjMWZjYzFiNzIuLmRmYmVjNDdjYzU0MTA2YTY2MDg2YTBmZGY0M2U2YmM1MzcwOWZiNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdHJ1
Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxTdHJpbmc+
IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDsKICAgICBW
ZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQ7CiAKLSNpZiBF
TkFCTEUoV0lGSV9BU1NFUlRJT05TKQorI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykK
ICAgICB1bnNpZ25lZCB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyIHsgMCB9OwogI2VuZGlmCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDM2YWFmNzNkMTljODI0MzJkYzVmYTQxYjViNDc2ZmUy
N2RhMmQzYjkuLjVlNjdhNzgwYWVmNjE0NzNjYjNmYTU0ODUzZWU0NGUxN2ZkZDNkZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQWN0aXZp
dHlUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgiCi0jaW5jbHVkZSAiV2lGaUFzc2VydGlvbkhvbGRlci5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAt
NzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUlEOyB9OwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZUlEOyB9OwogCi0jaWYgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykKLSAgICB2b2lkIG1h
eWJlSG9sZFdpRmlBc3NlcnRpb24oYm9vbCBzaG91bGRIb2xkV2lGaUFzc2VydGlvbikKKyNpZiBF
TkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisgICAgdm9pZCBob2xkUHJveGltaXR5QXNzZXJ0
aW9uKE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIGFzc2VydGlvbikKICAgICB7Ci0gICAgICAg
IEFTU0VSVCghbV93aUZpQXNzZXJ0aW9uSG9sZGVyKTsKLSAgICAgICAgbV93aUZpQXNzZXJ0aW9u
SG9sZGVyLmVtcGxhY2Uoc2hvdWxkSG9sZFdpRmlBc3NlcnRpb24pOworICAgICAgICBBU1NFUlQo
IW1fcHJveGltaXR5QXNzZXJ0aW9uVG9rZW4pOworICAgICAgICBtX3Byb3hpbWl0eUFzc2VydGlv
blRva2VuLmVtcGxhY2UoYXNzZXJ0aW9uKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTA2LDggKzEw
Niw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tp
ZVN0b3JhZ2UgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05T
KQotICAgIHN0ZDo6b3B0aW9uYWw8V2lGaUFzc2VydGlvbkhvbGRlcj4gbV93aUZpQXNzZXJ0aW9u
SG9sZGVyOworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKyAgICBzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OlRva2VuPiBtX3Byb3hpbWl0eUFzc2VydGlv
blRva2VuOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCA4MjJiNDBkMjQx
Mjg5MjJiNWYzNjMxZWZiOTA2Nzk4MjEwNmI2NGZkLi4yMDRiM2ZhNWU5ZTdlZTgzYjZjYWY1MzU3
NjExYTk0Yjc0NGRjMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbXBvcnQgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJOZXR3b3JrU2Vzc2lvbkNvY29hLmgiCiAjaW1wb3J0ICJTZXNzaW9u
VHJhY2tlci5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC00NCwxMCAr
NDUsNiBAQAogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0Jhc2U2NC5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdl
YktpdEFkZGl0aW9ucy9OZXR3b3JrRGF0YVRhc2tDb2NvYUFkZGl0aW9ucy5tbT4KLSNlbmRpZgot
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE0MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEyMDAwMCkKIEBpbnRlcmZhY2UgTlNVUkxTZXNzaW9uVGFzayAoU3RhZ2luZykK
IEBwcm9wZXJ0eSAobnVsbGFibGUsIHJlYWR3cml0ZSwgcmV0YWluKSBOU1VSTCAqX3NpdGVGb3JD
b29raWVzOwpAQCAtMjEzLDggKzIxMCw4IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAKICAg
ICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6
OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7CiAgICAgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hv
dWxkQ29udGVudFNuaWZmID09IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZD
b250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYg
PT0gV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKLSNpZiBF
TkFCTEUoV0lGSV9BU1NFUlRJT05TKQotICAgIGFwcGx5QWRkaXRpb25hbFByb3BlcnRpZXMocmVx
dWVzdCwgKnRoaXMsIG5zUmVxdWVzdCk7CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5H
KQorICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5wcm94aW1pdHlNYW5hZ2VyKCkuYXBw
bHlQcm9wZXJ0aWVzKHJlcXVlc3QsICp0aGlzLCBuc1JlcXVlc3QpOwogI2VuZGlmCiAKICAgICBh
dXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4obV9z
ZXNzaW9uLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCAxMmNmM2FmMGIxMDI2YWQwYjUx
YzU5YjRlMTYwZWE4YjIzNjI4ZWNmLi5jOTM0OGU3NDE4Yjc3OWQ3NGFiN2VjODc1ZGQ4YjE0YTc5
NDgzY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJM
b2dnaW5nLmgiCiAjaW1wb3J0ICJOZXR3b3JrQ2FjaGUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJveGltaXR5TWFuYWdl
ci5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJOZXR3b3Jr
U2Vzc2lvbkNvY29hLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC00NSwxMCAr
NDYsNiBAQAogI2ltcG9ydCA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogI2ltcG9ydCA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1w
b3J0IDxXZWJLaXRBZGRpdGlvbnMvTmV0d29ya1Byb2Nlc3NDb2NvYUFkZGl0aW9ucy5tbT4KLSNl
bmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU5ldHdv
cmtTZXR0aW5ncygpCkBAIC0xMTAsMTAgKzEwNyw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3ND
CiAKICAgICBBU1NFUlQoIW1fZGlza0NhY2hlSXNEaXNhYmxlZEZvclRlc3RpbmcpOwogCi0jaWYg
RU5BQkxFKFdJRklfQVNTRVJUSU9OUykKLSAgICBpbml0aWFsaXplV2lGaUFzc2VydGlvbnMocGFy
YW1ldGVycyk7Ci0jZW5kaWYKLQogICAgIGlmIChtX2Rpc2tDYWNoZURpcmVjdG9yeS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNDUsOCArMjM4LDggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1TeW5jQWxsQ29va2llcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1QcmVwYXJlVG9TdXNwZW5k
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSNpZiBF
TkFCTEUoV0lGSV9BU1NFUlRJT05TKQotICAgIHN1c3BlbmRXaUZpQXNzZXJ0aW9ucyhTdXNwZW5z
aW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKyAgICBwcm94aW1pdHlNYW5hZ2Vy
KCkuc3VzcGVuZChTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogI2Vu
ZGlmCkBAIC0yNTQsMjMgKzI0NywyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVBy
ZXBhcmVUb1N1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1bWUoKQogewotI2lmIEVOQUJM
RShXSUZJX0FTU0VSVElPTlMpCi0gICAgcmVzdW1lV2lGaUFzc2VydGlvbnMoUmVzdW1wdGlvblJl
YXNvbjo6UHJvY2Vzc1Jlc3VtaW5nKTsKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcp
CisgICAgcHJveGltaXR5TWFuYWdlcigpLnJlc3VtZShSZXN1bXB0aW9uUmVhc29uOjpQcm9jZXNz
UmVzdW1pbmcpOwogI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJv
Y2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKQogewotI2lmIEVOQUJMRShXSUZJX0FTU0VS
VElPTlMpCi0gICAgc3VzcGVuZFdpRmlBc3NlcnRpb25zKFN1c3BlbnNpb25SZWFzb246OlByb2Nl
c3NCYWNrZ3JvdW5kaW5nLCBbXSB7IH0pOworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lO
RykKKyAgICBwcm94aW1pdHlNYW5hZ2VyKCkuc3VzcGVuZChTdXNwZW5zaW9uUmVhc29uOjpQcm9j
ZXNzQmFja2dyb3VuZGluZywgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKIHsKLSNpZiBF
TkFCTEUoV0lGSV9BU1NFUlRJT05TKQotICAgIHJlc3VtZVdpRmlBc3NlcnRpb25zKFJlc3VtcHRp
b25SZWFzb246OlByb2Nlc3NGb3JlZ3JvdW5kaW5nKTsKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05F
VFdPUktJTkcpCisgICAgcHJveGltaXR5TWFuYWdlcigpLnJlc3VtZShSZXN1bXB0aW9uUmVhc29u
OjpQcm9jZXNzRm9yZWdyb3VuZGluZyk7CiAjZW5kaWYKIH0KIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dp
RmlBc3NlcnRpb25Ib2xkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
V2lGaUFzc2VydGlvbkhvbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTkz
NWMzMmZmM2M2ZTk4NjYzZDYzM2QyOWVhNzg0ZWQzYzJlYWU5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgSEFWRShNT0JJTEVfV0lGSSkKLQot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2lGaUFzc2VydGlvbkhvbGRlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2lGaUFz
c2VydGlvbkhvbGRlcik7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2lGaUFzc2VydGlvbkhvbGRl
cihib29sIHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uKTsKLSAgICB+V2lGaUFzc2VydGlvbkhvbGRl
cigpOwotCi0gICAgYm9vbCBzaG91bGRIb2xkV2lGaUFzc2VydGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkSG9sZFdpRmlBc3NlcnRpb247IH0KLQotcHJpdmF0ZToKLSAgICBib29sIG1fc2hv
dWxkSG9sZFdpRmlBc3NlcnRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEhBVkUoTU9CSUxFX1dJRkkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL1dpRmlBc3NlcnRpb25Ib2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL1dpRmlBc3NlcnRpb25Ib2xkZXIubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGE2YjMzNzljZjg3YjAyZWYyNzU1N2Q0NWFkODcwNTllYTMzNzgyM2Qu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XaUZpQXNzZXJ0aW9uSG9sZGVyLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiV2lGaUFzc2VydGlvbkhvbGRlci5oIgotCi0jaWYgSEFWRShNT0JJTEVfV0lGSSkK
LQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMv
V2lGaUFzc2VydGlvbkhvbGRlckFkZGl0aW9ucy5tbT4KLSNlbHNlCi1zdGF0aWMgdm9pZCBob2xk
V2lGaUFzc2VydGlvbihjb25zdCBXaUZpQXNzZXJ0aW9uSG9sZGVyJikKLXsKLX0KLQotc3RhdGlj
IHZvaWQgcmVsZWFzZVdpRmlBc3NlcnRpb24oY29uc3QgV2lGaUFzc2VydGlvbkhvbGRlciYpCi17
Ci19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdpRmlBc3NlcnRpb25Ib2xkZXI6
OldpRmlBc3NlcnRpb25Ib2xkZXIoYm9vbCBzaG91bGRIb2xkV2lGaUFzc2VydGlvbikKLSAgICA6
IG1fc2hvdWxkSG9sZFdpRmlBc3NlcnRpb24geyBzaG91bGRIb2xkV2lGaUFzc2VydGlvbiB9Ci17
Ci0gICAgaG9sZFdpRmlBc3NlcnRpb24oKnRoaXMpOwotfQotCi1XaUZpQXNzZXJ0aW9uSG9sZGVy
Ojp+V2lGaUFzc2VydGlvbkhvbGRlcigpCi17Ci0gICAgcmVsZWFzZVdpRmlBc3NlcnRpb24oKnRo
aXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEhBVkUoTU9CSUxF
X1dJRkkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3Mv
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTEwNzEy
NGY1MDZhYTc5NTA1NDBiYTFlOWNlOTcwMjEzODE2ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24uaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorCisjaW5jbHVkZSAiTW9iaWxlV2lGaVNQSS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgSURTU2VydmljZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgUmVzdW1wdGlvblJlYXNvbiA6IHVp
bnQ4X3Q7CitlbnVtIGNsYXNzIFN1c3BlbnNpb25SZWFzb24gOiB1aW50OF90OworCitjbGFzcyBO
ZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrUHJveGltaXR5QXNzZXJ0aW9uKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBUb2tlbiB7CisgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRva2VuKTsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4
cGxpY2l0IFRva2VuKE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIGFzc2VydGlvbikKKyAgICAg
ICAgICAgIDogbV9hc3NlcnRpb24geyBhc3NlcnRpb24gfQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2Fzc2VydGlvbi5ob2xkKCk7CisgICAgICAgIH0KKworICAgICAgICB+VG9rZW4oKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2Fzc2VydGlvbi5yZWxlYXNlKCk7CisgICAgICAgIH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24mIG1fYXNzZXJ0
aW9uOworICAgIH07CisKKyAgICB2b2lkIHJlc3VtZShSZXN1bXB0aW9uUmVhc29uKTsKKyAgICB2
b2lkIHN1c3BlbmQoU3VzcGVuc2lvblJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKworcHJvdGVjdGVkOgorICAgIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24oKTsKKyAgICB2
aXJ0dWFsIH5OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKCkgPSBkZWZhdWx0OworCisgICAgYm9v
bCBtX2lzSG9sZGluZ0Fzc2VydGlvbiB7IGZhbHNlIH07CisKK3ByaXZhdGU6CisgICAgZW51bSBj
bGFzcyBTdGF0ZSB7CisgICAgICAgIEJhY2tncm91bmRlZCwgLy8gQ2FuIGhvbGQgYXNzZXJ0aW9u
cyB1bnRpbCBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lciBmaXJlcy4KKyAgICAgICAg
UmVzdW1lZCwgLy8gQ2FuIGhvbGQgYXNzZXJ0aW9ucyBhdCBhbnkgdGltZS4KKyAgICAgICAgU3Vz
cGVuZGVkLCAvLyBDYW4gbm90IGhvbGQgYXNzZXJ0aW9ucy4KKyAgICB9OworCisgICAgdmlydHVh
bCB2b2lkIGhvbGROb3coKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VOb3coKSA9IDA7
CisKKyAgICB2b2lkIGhvbGQoKTsKKyAgICB2b2lkIHJlbGVhc2UoKTsKKyAgICB2b2lkIHJlbGVh
c2VUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXJG
aXJlZCgpOworICAgIHZvaWQgc3VzcGVuZE5vdygpOworCisgICAgdWludDY0X3QgbV9hc3NlcnRp
b25Db3VudCB7IDAgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9Owor
ICAgIFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXIgbV9yZWxlYXNlVGltZXI7CisgICAg
V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRp
bmdUaW1lcjsKK307CisKK2NsYXNzIEJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbiBmaW5hbCA6
IHB1YmxpYyBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24oSURTU2VydmljZSAqKTsKKworICAgIHZvaWQg
c3VzcGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
Citwcml2YXRlOgorICAgIHZvaWQgaG9sZE5vdygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVsZWFz
ZU5vdygpIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPElEU1NlcnZpY2U+IG1faWRzU2Vydmlj
ZTsKK307CisKK2NsYXNzIFdpRmlQcm94aW1pdHlBc3NlcnRpb24gZmluYWwgOiBwdWJsaWMgTmV0
d29ya1Byb3hpbWl0eUFzc2VydGlvbiB7CitwdWJsaWM6CisgICAgV2lGaVByb3hpbWl0eUFzc2Vy
dGlvbigpOworCitwcml2YXRlOgorICAgIHZvaWQgaG9sZE5vdygpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVsZWFzZU5vdygpIG92ZXJyaWRlOworCisgICAgUmV0YWluUHRyPFdpRmlNYW5hZ2VyQ2xp
ZW50UmVmPiBtX3dpRmlNYW5hZ2VyQ2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2Vy
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlNzFjNmNkZTI3YzExZDYzYzJiZDE4MzQ4
OTg3ZmY3ZDgwNzFkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbQpAQCAtMCwwICsxLDIz
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbi5oIgorCisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQor
CisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9y
dCAiTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKKyNpbXBvcnQgPElEUy9JRFNfUHJpdmF0ZS5o
PgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0
aWMgYXV0byBhc3NlcnRpb25SZWxlYXNlRGVsYXlBZnRlckJhY2tncm91bmRpbmcgPSAxMF9zOwor
c3RhdGljIGF1dG8gYXNzZXJ0aW9uUmVsZWFzZURlbGF5Rm9ySHlzdGVyZXNpcyA9IDEwX3M7CisK
K05ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246Ok5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24oKQor
ICAgIDogbV9yZWxlYXNlVGltZXIgeyAqdGhpcywgJk5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246
OnJlbGVhc2VUaW1lckZpcmVkLCBhc3NlcnRpb25SZWxlYXNlRGVsYXlGb3JIeXN0ZXJlc2lzIH0K
KyAgICAsIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3Jr
UHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXJGaXJlZCwg
YXNzZXJ0aW9uUmVsZWFzZURlbGF5QWZ0ZXJCYWNrZ3JvdW5kaW5nIH0KK3sKK30KKwordm9pZCBO
ZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpob2xkKCkKK3sKKyAgICArK21fYXNzZXJ0aW9uQ291
bnQ7CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIEFT
U0VSVCghbV9pc0hvbGRpbmdBc3NlcnRpb24pOworICAgICAgICBBU1NFUlQoIW1fcmVsZWFzZVRp
bWVyLmlzQWN0aXZlKCkpOworICAgICAgICBBU1NFUlQoIW1fc3VzcGVuZEFmdGVyQmFja2dyb3Vu
ZGluZ1RpbWVyLmlzQWN0aXZlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fcmVsZWFzZVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV9yZWxlYXNlVGltZXIuc3Rv
cCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fYXNzZXJ0aW9uQ291bnQg
PT0gMSkKKyAgICAgICAgaG9sZE5vdygpOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlBc3Nl
cnRpb246OnJlbGVhc2UoKQoreworICAgIEFTU0VSVChtX2Fzc2VydGlvbkNvdW50KTsKKyAgICBp
ZiAoIW1fYXNzZXJ0aW9uQ291bnQgfHwgLS1tX2Fzc2VydGlvbkNvdW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIEFT
U0VSVCghbV9pc0hvbGRpbmdBc3NlcnRpb24pOworICAgICAgICBBU1NFUlQoIW1fcmVsZWFzZVRp
bWVyLmlzQWN0aXZlKCkpOworICAgICAgICBBU1NFUlQoIW1fc3VzcGVuZEFmdGVyQmFja2dyb3Vu
ZGluZ1RpbWVyLmlzQWN0aXZlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9y
ZWxlYXNlVGltZXIucmVzdGFydCgpOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b246OnJlc3VtZShSZXN1bXB0aW9uUmVhc29uKQoreworICAgIHN3aXRjaCAobV9zdGF0ZSkgewor
ICAgIGNhc2UgU3RhdGU6OkJhY2tncm91bmRlZDoKKyAgICAgICAgbV9zdXNwZW5kQWZ0ZXJCYWNr
Z3JvdW5kaW5nVGltZXIuc3RvcCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpS
ZXN1bWVkOgorICAgICAgICBBU1NFUlQoIW1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVy
LmlzQWN0aXZlKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpTdXNwZW5kZWQ6
CisgICAgICAgIEFTU0VSVCghbV9pc0hvbGRpbmdBc3NlcnRpb24pOworICAgICAgICBBU1NFUlQo
IW1fcmVsZWFzZVRpbWVyLmlzQWN0aXZlKCkpOworICAgICAgICBBU1NFUlQoIW1fc3VzcGVuZEFm
dGVyQmFja2dyb3VuZGluZ1RpbWVyLmlzQWN0aXZlKCkpOworICAgICAgICBob2xkTm93KCk7Cisg
ICAgICAgIGlmICghbV9hc3NlcnRpb25Db3VudCkKKyAgICAgICAgICAgIG1fcmVsZWFzZVRpbWVy
LnJlc3RhcnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbV9zdGF0ZSA9IFN0YXRl
OjpSZXN1bWVkOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmQo
U3VzcGVuc2lvblJlYXNvbiByZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2UgU3VzcGVu
c2lvblJlYXNvbjo6UHJvY2Vzc0JhY2tncm91bmRpbmc6CisgICAgICAgIC8vIFRoZSBOZXR3b3Jr
aW5nIHByb2Nlc3MgaXMgYmVpbmcgYmFja2dyb3VuZGVkLiBXZSBzaG91bGQgZHJvcCBvdXIgYXNz
ZXJ0aW9ucworICAgICAgICAvLyBzb29uLCBpbiBjYXNlIHRoZSBzeXN0ZW0gc3VzcGVuZHMgdGhl
IHByb2Nlc3MgYmVmb3JlIHdlIHJlY2VpdmUgUHJvY2Vzc1N1c3BlbmRpbmcuCisgICAgICAgIG1f
c3RhdGUgPSBTdGF0ZTo6QmFja2dyb3VuZGVkOworICAgICAgICBtX3N1c3BlbmRBZnRlckJhY2tn
cm91bmRpbmdUaW1lci5yZXN0YXJ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VzcGVu
c2lvblJlYXNvbjo6UHJvY2Vzc1N1c3BlbmRpbmc6CisgICAgICAgIC8vIFRoZSBOZXR3b3JraW5n
IHByb2Nlc3MgaXMgYmVpbmcgc3VzcGVuZGVkLCBzbyB3ZSBuZWVkIHRvIGRyb3Agb3VyIGFzc2Vy
dGlvbnMKKyAgICAgICAgLy8gaW1tZWRpYXRlbHkgYmVmb3JlIHRoYXQgaGFwcGVucy4KKyAgICAg
ICAgc3VzcGVuZE5vdygpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmRO
b3coKQoreworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOworICAgIG1fcmVsZWFzZVRp
bWVyLnN0b3AoKTsKKyAgICBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lci5zdG9wKCk7
CisgICAgcmVsZWFzZU5vdygpOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246
OnJlbGVhc2VUaW1lckZpcmVkKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVsZWFzZVRpbWVyLmlzQWN0
aXZlKCkpOworICAgIEFTU0VSVCghbV9hc3NlcnRpb25Db3VudCk7CisgICAgQVNTRVJUKG1fc3Rh
dGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgcmVsZWFzZU5vdygpOworfQorCit2b2lkIE5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lckZp
cmVkKCkKK3sKKyAgICBBU1NFUlQoIW1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyLmlz
QWN0aXZlKCkpOworICAgIEFTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQpOworICAg
IHN1c3BlbmROb3coKTsKK30KKworQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpCbHVldG9v
dGhQcm94aW1pdHlBc3NlcnRpb24oSURTU2VydmljZSAqaWRzU2VydmljZSkKKyAgICA6IG1faWRz
U2VydmljZSB7IGlkc1NlcnZpY2UgfQoreworfQorCit2b2lkIEJsdWV0b290aFByb3hpbWl0eUFz
c2VydGlvbjo6c3VzcGVuZChTdXNwZW5zaW9uUmVhc29uIHJlYXNvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gd2FzSG9sZGluZ0Fz
c2VydGlvbiA9IG1faXNIb2xkaW5nQXNzZXJ0aW9uOworICAgIE5ldHdvcmtQcm94aW1pdHlBc3Nl
cnRpb246OnN1c3BlbmQocmVhc29uLCBbXSB7IH0pOworCisgICAgc3dpdGNoIChyZWFzb24pIHsK
KyAgICBjYXNlIFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NCYWNrZ3JvdW5kaW5nOgorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1c3BlbnNp
b25SZWFzb246OlByb2Nlc3NTdXNwZW5kaW5nOgorICAgICAgICBBU1NFUlQoIW1faXNIb2xkaW5n
QXNzZXJ0aW9uKTsKKyAgICAgICAgaWYgKCF3YXNIb2xkaW5nQXNzZXJ0aW9uKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICAvLyBJRFMgcHJvY2Vzc2VzIC1zZXRMaW5rUHJlZmVyZW5jZXM6IG9uIGEgYmFj
a2dyb3VuZCBkaXNwYXRjaCBxdWV1ZSBhbmQgcHJvdmlkZXMgbm8KKyAgICAgICAgLy8gY29tcGxl
dGlvbiBoYW5kbGVyLiBJZiB3ZSBzdXNwZW5kIGJlZm9yZSBJRFMgZmluaXNoZXMgc2V0dGluZyBs
aW5rIHByZWZlcmVuY2VzLCB0aGUKKyAgICAgICAgLy8gQmx1ZXRvb3RoIHJhZGlvIG1pZ2h0IHN0
YXkgaW4gYSBoaWdoIHBvd2VyIG1vZGUsIGhhcm1pbmcgYmF0dGVyeSBsaWZlLiBEZWxheSBzdXNw
ZW5zaW9uCisgICAgICAgIC8vIGJ5IDMwIHNlY29uZHMgdG8gZW5zdXJlIC1zZXRMaW5rUHJlZmVy
ZW5jZXM6IGFsd2F5cyBmaW5pc2hlcyBpdHMgd29yay4KKyAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMzAgKiBOU0VDX1BFUl9TRUMpLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBCbG9ja1B0cjx2b2lkKCk+Ojpmcm9tQ2FsbGFibGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCit2b2lkIEJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbjo6aG9sZE5vdygpCit7CisgICAg
aWYgKG1faXNIb2xkaW5nQXNzZXJ0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNF
X0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiSG9sZGluZyBCbHVldG9vdGggQ2xhc3NpYyBhc3Nl
cnRpb24uIik7CisgICAgW21faWRzU2VydmljZSBzZXRMaW5rUHJlZmVyZW5jZXM6QHsgSURTTGlu
a1ByZWZlcmVuY2VPcHRpb25QYWNrZXRzUGVyU2Vjb25kS2V5IDogQCgyMDApIH1dOworICAgIG1f
aXNIb2xkaW5nQXNzZXJ0aW9uID0gdHJ1ZTsKK30KKwordm9pZCBCbHVldG9vdGhQcm94aW1pdHlB
c3NlcnRpb246OnJlbGVhc2VOb3coKQoreworICAgIGlmICghbV9pc0hvbGRpbmdBc3NlcnRpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcs
ICJSZWxlYXNpbmcgQmx1ZXRvb3RoIENsYXNzaWMgYXNzZXJ0aW9uLiIpOworICAgIFttX2lkc1Nl
cnZpY2Ugc2V0TGlua1ByZWZlcmVuY2VzOkB7IElEU0xpbmtQcmVmZXJlbmNlT3B0aW9uUGFja2V0
c1BlclNlY29uZEtleSA6IEAoMCkgfV07CisgICAgbV9pc0hvbGRpbmdBc3NlcnRpb24gPSBmYWxz
ZTsKK30KKworV2lGaVByb3hpbWl0eUFzc2VydGlvbjo6V2lGaVByb3hpbWl0eUFzc2VydGlvbigp
CisgICAgOiBtX3dpRmlNYW5hZ2VyQ2xpZW50IHsgYWRvcHRDRihXaUZpTWFuYWdlckNsaWVudENy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrV2lGaUNsaWVudFR5cGVOb3JtYWwpKSB9Cit7Cit9
CisKK3ZvaWQgV2lGaVByb3hpbWl0eUFzc2VydGlvbjo6aG9sZE5vdygpCit7CisgICAgaWYgKG1f
aXNIb2xkaW5nQXNzZXJ0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQ
cm94aW1pdHlOZXR3b3JraW5nLCAiSG9sZGluZyBXaS1GaSBhc3NlcnRpb24uIik7CisgICAgQVNT
RVJUKFdpRmlNYW5hZ2VyQ2xpZW50R2V0VHlwZShtX3dpRmlNYW5hZ2VyQ2xpZW50LmdldCgpKSA9
PSBrV2lGaUNsaWVudFR5cGVOb3JtYWwpOworICAgIFdpRmlNYW5hZ2VyQ2xpZW50U2V0VHlwZSht
X3dpRmlNYW5hZ2VyQ2xpZW50LmdldCgpLCBrV2lGaUNsaWVudFR5cGVEaXJlY3RUb0Nsb3VkKTsK
KyAgICBtX2lzSG9sZGluZ0Fzc2VydGlvbiA9IHRydWU7Cit9CisKK3ZvaWQgV2lGaVByb3hpbWl0
eUFzc2VydGlvbjo6cmVsZWFzZU5vdygpCit7CisgICAgaWYgKCFtX2lzSG9sZGluZ0Fzc2VydGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2lu
ZywgIlJlbGVhc2luZyBXaS1GaSBhc3NlcnRpb24uIik7CisgICAgQVNTRVJUKFdpRmlNYW5hZ2Vy
Q2xpZW50R2V0VHlwZShtX3dpRmlNYW5hZ2VyQ2xpZW50LmdldCgpKSA9PSBrV2lGaUNsaWVudFR5
cGVEaXJlY3RUb0Nsb3VkKTsKKyAgICBXaUZpTWFuYWdlckNsaWVudFNldFR5cGUobV93aUZpTWFu
YWdlckNsaWVudC5nZXQoKSwga1dpRmlDbGllbnRUeXBlTm9ybWFsKTsKKyAgICBtX2lzSG9sZGlu
Z0Fzc2VydGlvbiA9IGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWE3MDNhNDZlMGVkYzFlZjkwNTVjNWJjMDFhZDA2NTMwNTJmYzEzOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9O
ZXR3b3JrUHJveGltaXR5TWFuYWdlci5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgSURTU2VydmljZTsKK09CSkNfQ0xBU1MgTlNB
cnJheTsKK09CSkNfQ0xBU1MgTlNVUkxSZXF1ZXN0OworT0JKQ19DTEFTUyBXS1Byb3hpbWl0eVNl
cnZpY2VEZWxlZ2F0ZTsKK09CSkNfQ0xBU1MgV1JNX2lSQVRJbnRlcmZhY2U7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIENoaWxkUHJvY2VzczsKK2NsYXNzIE5ldHdvcmtEYXRhVGFza0NvY29hOwor
ZW51bSBjbGFzcyBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb24gOiB1aW50OF90OworCitl
bnVtIGNsYXNzIFJlc3VtcHRpb25SZWFzb24gOiB1aW50OF90IHsKKyAgICBQcm9jZXNzRm9yZWdy
b3VuZGluZywKKyAgICBQcm9jZXNzUmVzdW1pbmcsCit9OworCitlbnVtIGNsYXNzIFN1c3BlbnNp
b25SZWFzb24gOiB1aW50OF90IHsKKyAgICBQcm9jZXNzQmFja2dyb3VuZGluZywKKyAgICBQcm9j
ZXNzU3VzcGVuZGluZworfTsKKworY2xhc3MgTmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgfk5ldHdvcmtQcm94aW1pdHlTZXJ2aWNlQ2xpZW50KCkg
PSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VzQ2hhbmdlZChOU0FycmF5ICpkZXZp
Y2VzKSA9IDA7Cit9OworCitjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFuYWdlciBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHByaXZhdGUgTmV0d29ya1Byb3hpbWl0eVNl
cnZpY2VDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcihD
aGlsZFByb2Nlc3MmKTsKKyAgICB+TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIoKTsKKworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAgdm9pZCBhcHBseVByb3Bl
cnRpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmV0d29ya0RhdGFUYXNrQ29j
b2EmLCBOU1VSTFJlcXVlc3QgKiYpOworICAgIHZvaWQgcmVzdW1lKFJlc3VtcHRpb25SZWFzb24p
OworICAgIHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgU3RhdGUgeworICAgICAgICBC
YWNrZ3JvdW5kZWQsCisgICAgICAgIEZvcmVncm91bmRlZCwKKyAgICAgICAgSW5pdGlhbGl6ZWQs
CisgICAgICAgIFJlc3VtZWQsCisgICAgICAgIFN1c3BlbmRlZCwKKyAgICB9OworCisgICAgYm9v
bCBpc0NvbXBhbmlvbkluUHJveGltaXR5KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBhbmlvbklu
UHJveGltaXR5OyB9CisgICAgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uIHJlY29tbWVu
ZGF0aW9uKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHko
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eTsgfQorCisg
ICAgdm9pZCBwcm9jZXNzUmVjb21tZW5kYXRpb25zKE5TQXJyYXkgKnJlY29tbWVuZGF0aW9ucyk7
CisgICAgdm9pZCByZXN1bWVSZWNvbW1lbmRhdGlvbnMoKTsKKyAgICB2b2lkIHN1c3BlbmRSZWNv
bW1lbmRhdGlvbnMoU3RhdGUgb2xkU3RhdGUpOworICAgIHZvaWQgdXBkYXRlQ29tcGFuaW9uUHJv
eGltaXR5KCk7CisgICAgdm9pZCB1cGRhdGVSZWNvbW1lbmRhdGlvbigpOworCisgICAgLy8gTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CisKKyAgICAvLyBOZXR3b3JrUHJv
eGltaXR5U2VydmljZUNsaWVudAorICAgIHZvaWQgZGV2aWNlc0NoYW5nZWQoTlNBcnJheSAqZGV2
aWNlcykgb3ZlcnJpZGU7CisKKyAgICB1bnNpZ25lZCBtX2NvbnRleHRJZGVudGlmaWVyIHsgMCB9
OworICAgIGJvb2wgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5IHsgZmFsc2UgfTsKKyAgICBib29s
IG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5IHsgZmFsc2UgfTsKKyAgICBTdGF0ZSBt
X3N0YXRlIHsgU3RhdGU6OkluaXRpYWxpemVkIH07CisgICAgUmV0YWluUHRyPFdSTV9pUkFUSW50
ZXJmYWNlPiBtX2lSQVRJbnRlcmZhY2U7CisgICAgUmV0YWluUHRyPElEU1NlcnZpY2U+IG1faWRz
U2VydmljZTsKKyAgICBSZXRhaW5QdHI8V0tQcm94aW1pdHlTZXJ2aWNlRGVsZWdhdGU+IG1faWRz
U2VydmljZURlbGVnYXRlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fcmVj
b21tZW5kYXRpb25RdWV1ZTsKKyAgICBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24gbV9ibHVl
dG9vdGhQcm94aW1pdHlBc3NlcnRpb247CisgICAgV2lGaVByb3hpbWl0eUFzc2VydGlvbiBtX3dp
RmlQcm94aW1pdHlBc3NlcnRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFu
YWdlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMzZkMjFhYjlkYWM2MWY5YzcwNmU5MzA3NzVlYTQxYmVlYTJi
NTNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRj
aG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tCkBAIC0wLDAgKzEsMzIzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJveGltaXR5TWFuYWdl
ci5oIgorCisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorCisjaW1wb3J0ICJMb2dn
aW5nLmgiCisjaW1wb3J0ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgorI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPElEUy9JRFMuaD4KKyNpbXBv
cnQgPFdpcmVsZXNzQ29leE1hbmFnZXIvV1JNX2lSQVRJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CisKK1dURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQoU0NOZXR3b3JrSW50ZXJmYWNlKTsKKwor
QGludGVyZmFjZSBXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxJRFNTZXJ2
aWNlRGVsZWdhdGU+CistICh2b2lkKXNldENsaWVudDooV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5
U2VydmljZUNsaWVudCopY2xpZW50OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tQcm94aW1p
dHlTZXJ2aWNlRGVsZWdhdGUgeworICAgIFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eVNlcnZpY2VD
bGllbnQqIF9jbGllbnQ7Cit9CisKKy0gKHZvaWQpc2V0Q2xpZW50OihXZWJLaXQ6Ok5ldHdvcmtQ
cm94aW1pdHlTZXJ2aWNlQ2xpZW50KiljbGllbnQKK3sKKyAgICBfY2xpZW50ID0gY2xpZW50Owor
fQorCistICh2b2lkKXNlcnZpY2U6KElEU1NlcnZpY2UgKilzZXJ2aWNlIGRldmljZXNDaGFuZ2Vk
OihOU0FycmF5ICopZGV2aWNlcworeworICAgIGlmIChfY2xpZW50KQorICAgICAgICBfY2xpZW50
LT5kZXZpY2VzQ2hhbmdlZChkZXZpY2VzKTsKK30KKworLSAodm9pZClzZXJ2aWNlOihJRFNTZXJ2
aWNlICopc2VydmljZSBuZWFyYnlEZXZpY2VzQ2hhbmdlZDooTlNBcnJheSAqKWRldmljZXMKK3sK
KyAgICBpZiAoX2NsaWVudCkKKyAgICAgICAgX2NsaWVudC0+ZGV2aWNlc0NoYW5nZWQoZGV2aWNl
cyk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTmV0d29y
a1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uIDogdWludDhfdCB7CisgICAgQmx1ZXRvb3RoLAorICAg
IE5vbmUsCisgICAgV2lGaSwKK307CisKK05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpOZXR3b3Jr
UHJveGltaXR5TWFuYWdlcihDaGlsZFByb2Nlc3MmKQorICAgIDogbV9pZHNTZXJ2aWNlIHsgYWRv
cHROUyhbW0lEU1NlcnZpY2UgYWxsb2NdIGluaXRXaXRoU2VydmljZTpAImNvbS5hcHBsZS5wcml2
YXRlLmFsbG95LndlYmtpdG5ldHdvcmtpbmciXSkgfQorICAgICwgbV9pZHNTZXJ2aWNlRGVsZWdh
dGUgeyBhZG9wdE5TKFtbV0tQcm94aW1pdHlTZXJ2aWNlRGVsZWdhdGUgYWxsb2NdIGluaXRdKSB9
CisgICAgLCBtX3JlY29tbWVuZGF0aW9uUXVldWUgeyBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZSgiV2ViS2l0IE5ldHdvcmsgUHJveGltaXR5IFJlY29tbWVuZGF0aW9uIFF1ZXVl
IiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkgfQorICAgICwgbV9ibHVldG9vdGhQcm94aW1pdHlB
c3NlcnRpb24geyBtX2lkc1NlcnZpY2UuZ2V0KCkgfQoreworICAgIFttX2lkc1NlcnZpY2VEZWxl
Z2F0ZSBzZXRDbGllbnQ6dGhpc107CisgICAgW21faWRzU2VydmljZSBhZGREZWxlZ2F0ZTptX2lk
c1NlcnZpY2VEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsK
K30KKworTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6On5OZXR3b3JrUHJveGltaXR5TWFuYWdlcigp
Cit7CisgICAgW21faWRzU2VydmljZURlbGVnYXRlIHNldENsaWVudDpudWxscHRyXTsKK30KKwor
Y29uc3QgY2hhciogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sK
KyAgICByZXR1cm4gIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyIjsKK30KKworc3RhdGljIHZvaWQg
YmluZFJlcXVlc3RUb1dpRmkoTlNVUkxSZXF1ZXN0IComIHJlcXVlc3QpCit7CisgICAgc3RhdGlj
IE5TU3RyaW5nICp3aUZpSW50ZXJmYWNlSWRlbnRpZmllciA9IFtdKCkgLT4gTlNTdHJpbmcgKiB7
CisgICAgICAgIGF1dG8gaW50ZXJmYWNlcyA9IGFkb3B0Q0YoU0NOZXR3b3JrSW50ZXJmYWNlQ29w
eUFsbCgpKTsKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRD
b3VudChpbnRlcmZhY2VzLmdldCgpKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGF1
dG8gaW50ZXJmYWNlID0gY2hlY2tlZF9jZl9jYXN0PFNDTmV0d29ya0ludGVyZmFjZVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChpbnRlcmZhY2VzLmdldCgpLCBpKSk7CisgICAgICAgICAgICBp
ZiAoIUNGRXF1YWwoU0NOZXR3b3JrSW50ZXJmYWNlR2V0SW50ZXJmYWNlVHlwZShpbnRlcmZhY2Up
LCBrU0NOZXR3b3JrSW50ZXJmYWNlVHlwZUlFRUU4MDIxMSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHJldGFpblB0cihTQ05ldHdv
cmtJbnRlcmZhY2VHZXRCU0ROYW1lKGludGVyZmFjZSkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0coUHJveGltaXR5TmV0d29ya2luZywgIkRldGVybWluZWQgV2ktRmkgaW50ZXJmYWNlIGlkZW50
aWZpZXIgaXMgJUAuIiwgaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gKE5T
U3RyaW5nICopaWRlbnRpZmllci5sZWFrUmVmKCk7CisgICAgICAgIH0KKworICAgICAgICBSRUxF
QVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiRmFpbGVkIHRvIGRldGVybWluZSBXaS1GaSBp
bnRlcmZhY2UgaWRlbnRpZmllci4iKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9KCk7CisK
KyAgICBpZiAoIXdpRmlJbnRlcmZhY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIG11dGFibGVSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOwor
ICAgIFttdXRhYmxlUmVxdWVzdCBzZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6d2lGaUludGVy
ZmFjZUlkZW50aWZpZXJdOworICAgIHJlcXVlc3QgPSBtdXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFz
ZSgpOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjphcHBseVByb3BlcnRpZXMo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0NvY29hJiBkYXRhVGFzaywgTlNVUkxSZXF1ZXN0IComIG5zUmVxdWVzdCkKK3sKKyAg
ICAvLyBJZiB0aGUgY2xpZW50IGhhcyBhbHJlYWR5IGJvdW5kIHRoZSByZXF1ZXN0IHRvIGFuIGlk
ZW50aWZpZXIsIGRvbid0IG92ZXJyaWRlIGl0LgorICAgIGlmIChuc1JlcXVlc3QuYm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRhdGFU
YXNrLmlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkpCisgICAgICAgIHVwZGF0ZVJlY29tbWVuZGF0aW9u
KCk7CisKKyAgICBzd2l0Y2ggKHJlY29tbWVuZGF0aW9uKCkpIHsKKyAgICBjYXNlIE5ldHdvcmtQ
cm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Qmx1ZXRvb3RoOgorICAgICAgICBkYXRhVGFzay5ob2xk
UHJveGltaXR5QXNzZXJ0aW9uKG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246Ok5vbmU6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9u
OjpXaUZpOgorICAgICAgICBkYXRhVGFzay5ob2xkUHJveGltaXR5QXNzZXJ0aW9uKG1fd2lGaVBy
b3hpbWl0eUFzc2VydGlvbik7CisgICAgICAgIGJpbmRSZXF1ZXN0VG9XaUZpKG5zUmVxdWVzdCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdl
cjo6cmVzdW1lKFJlc3VtcHRpb25SZWFzb24gcmVhc29uKQoreworICAgIHN3aXRjaCAocmVhc29u
KSB7CisgICAgY2FzZSBSZXN1bXB0aW9uUmVhc29uOjpQcm9jZXNzRm9yZWdyb3VuZGluZzoKKyAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpGb3JlZ3JvdW5kZWQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUmVzdW1wdGlvblJlYXNvbjo6UHJvY2Vzc1Jlc3VtaW5nOgorICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlc3VtZWQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlc3VtZVJl
Y29tbWVuZGF0aW9ucygpOworCisgICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbigpKSB7CisgICAg
Y2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246OkJsdWV0b290aDoKKyAgICAgICAg
bV9ibHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24ucmVzdW1lKHJlYXNvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25lOgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6V2lG
aToKKyAgICAgICAgbV93aUZpUHJveGltaXR5QXNzZXJ0aW9uLnJlc3VtZShyZWFzb24pOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1
c3BlbmQoU3VzcGVuc2lvblJlYXNvbiByZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIG9sZFN0YXRlID0gbV9zdGF0ZTsKKyAg
ICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2UgU3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc0Jh
Y2tncm91bmRpbmc6CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QmFja2dyb3VuZGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NTdXNwZW5kaW5n
OgorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgc3VzcGVuZFJlY29tbWVuZGF0aW9ucyhvbGRTdGF0ZSk7CisKKyAgICBhdXRv
IHdyYXBwZWRDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiRmlu
aXNoZWQgc3VzcGVuZGluZyBOZXR3b3JrUHJveGltaXR5TWFuYWdlciAoc3RhdGU6ICV1KS4iLCBt
X3N0YXRlKTsKKyAgICB9OworCisgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywg
IlN1c3BlbmRpbmcgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIgKHN0YXRlOiAldSkuIiwgbV9zdGF0
ZSk7CisgICAgbV9ibHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24uc3VzcGVuZChyZWFzb24sIFdU
Rk1vdmUod3JhcHBlZENvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV93aUZpUHJveGltaXR5QXNz
ZXJ0aW9uLnN1c3BlbmQocmVhc29uLCBbXSB7IH0pOworfQorCitOZXR3b3JrUHJveGltaXR5UmVj
b21tZW5kYXRpb24gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnJlY29tbWVuZGF0aW9uKCkgY29u
c3QKK3sKKyAgICBpZiAoIWlzQ29tcGFuaW9uSW5Qcm94aW1pdHkoKSkKKyAgICAgICAgcmV0dXJu
IE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Tm9uZTsKKworICAgIGlmIChzaG91bGRV
c2VEaXJlY3RXaUZpSW5Qcm94aW1pdHkoKSkKKyAgICAgICAgcmV0dXJuIE5ldHdvcmtQcm94aW1p
dHlSZWNvbW1lbmRhdGlvbjo6V2lGaTsKKworICAgIHJldHVybiBOZXR3b3JrUHJveGltaXR5UmVj
b21tZW5kYXRpb246OkJsdWV0b290aDsKK30KKwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdl
cjo6cHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhOU0FycmF5ICpyZWNvbW1lbmRhdGlvbnMpCit7Cisg
ICAgbV9zaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHkgPSBmYWxzZTsKKyAgICBib29sIGRp
ZFNlZURpcmVjdFdpRmlSZWNvbW1lbmRhdGlvbiA9IGZhbHNlOworICAgIGZvciAoV1JNX2lSQVRQ
cm94aW1pdHlSZWNvbW1lbmRhdGlvbiAqcmVjb21tZW5kYXRpb24gaW4gcmVjb21tZW5kYXRpb25z
KSB7CisgICAgICAgIHN3aXRjaCAocmVjb21tZW5kYXRpb24uUmVjb21tZW5kYXRpb25UeXBlKSB7
CisgICAgICAgIGNhc2UgV1JNUmVjb21tZW5kYXRpb25MaW5rVHlwZUJUOgorICAgICAgICBjYXNl
IFdSTVJlY29tbWVuZGF0aW9uTGlua1R5cGVDb21wYW5pb25XaWZpOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV1JNUmVjb21tZW5kYXRpb25MaW5rVHlwZURpcmVjdFdpZmk6Cisg
ICAgICAgICAgICBBU1NFUlQoIWRpZFNlZURpcmVjdFdpRmlSZWNvbW1lbmRhdGlvbik7CisgICAg
ICAgICAgICBkaWRTZWVEaXJlY3RXaUZpUmVjb21tZW5kYXRpb24gPSB0cnVlOworICAgICAgICAg
ICAgbV9zaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHkgPSByZWNvbW1lbmRhdGlvbi5saW5r
UmVjb21tZW5kYXRpb25Jc1ZhbGlkICYmIHJlY29tbWVuZGF0aW9uLmxpbmtJc1JlY29tbWVuZGVk
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSRUxFQVNFX0xP
RyhQcm94aW1pdHlOZXR3b3JraW5nLCAiUHJvY2Vzc2VkIGlSQVRNYW5hZ2VyIHJlY29tbWVuZGF0
aW9ucyAoc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5OiAlZCkuXG4iLCBtX3Nob3VsZFVz
ZURpcmVjdFdpRmlJblByb3hpbWl0eSk7Cit9CisKK3N0YXRpYyBXQ01Qcm9jZXNzSWQgdG9Qcm9j
ZXNzSUQodW5zaWduZWQgY29udGV4dElkZW50aWZpZXIpCit7CisgICAgc3dpdGNoIChjb250ZXh0
SWRlbnRpZmllcikgeworICAgIGNhc2UgV1JNV2Via2l0OgorICAgICAgICByZXR1cm4gV1JNV2Vi
a2l0OworICAgIGNhc2UgV1JNV2Via2l0TWFpbDoKKyAgICAgICAgcmV0dXJuIFdSTVdlYmtpdE1h
aWw7CisgICAgY2FzZSBXUk1XZWJraXROb3RpZmljYXRpb246CisgICAgICAgIHJldHVybiBXUk1X
ZWJraXROb3RpZmljYXRpb247CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdDTVVua25v
d247CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpyZXN1bWVSZWNv
bW1lbmRhdGlvbnMoKQoreworICAgIGlmIChtX2lSQVRJbnRlcmZhY2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIHVwZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgpOworCisgICAgYXV0byBwcm9jZXNz
SUQgPSB0b1Byb2Nlc3NJRChtX2NvbnRleHRJZGVudGlmaWVyKTsKKyAgICBpZiAocHJvY2Vzc0lE
ID09IFdDTVVua25vd24pIHsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2lu
ZywgIkludmFsaWQgV0NNIHByb2Nlc3MgSUQgKCVkKS4iLCBtX2NvbnRleHRJZGVudGlmaWVyKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdv
cmtpbmcsICJSZWdpc3RlcmluZyB3aXRoIGlSQVRNYW5hZ2VyIChXQ00gcHJvY2VzcyBJRDogJWQs
IHN0YXRlOiAldSkuIiwgcHJvY2Vzc0lELCBtX3N0YXRlKTsKKyAgICBtX2lSQVRJbnRlcmZhY2Ug
PSBhZG9wdE5TKFtbV1JNX2lSQVRJbnRlcmZhY2UgYWxsb2NdIGluaXRdKTsKKyAgICBbbV9pUkFU
SW50ZXJmYWNlIHJlZ2lzdGVyQ2xpZW50OnByb2Nlc3NJRCBxdWV1ZTptX3JlY29tbWVuZGF0aW9u
UXVldWUuZ2V0KCldOworICAgIHVwZGF0ZVJlY29tbWVuZGF0aW9uKCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1c3BlbmRSZWNvbW1lbmRhdGlvbnMoU3RhdGUgb2xkU3Rh
dGUpCit7CisgICAgLy8gSWYgdGhpcyBpcyBub3QgYSBmb3JlZ3JvdW5kLXRvLWJhY2tncm91bmQg
dHJhbnNpdGlvbiwgYXZvaWQgdW5yZWdpc3RlcmluZy4gUGFnZSBsb2FkcyBjYW4KKyAgICAvLyBv
ZnRlbiBjYXVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHRvIHJlc3VtZSwgdHJhbnNpdGlvbiB0byB0
aGUgYmFja2dyb3VuZCwgdGhlbiB0cmFuc2l0aW9uIHRvCisgICAgLy8gdGhlIGZvcmVncm91bmQg
aW4gcmFwaWQgc3VjY2Vzc2lvbiwgY2F1c2luZyB1bm5lY2Vzc2FyeSBpUkFUTWFuYWdlciByZWdp
c3RyYXRpb24gY2h1cm4gYW5kCisgICAgLy8gZXhwb3NpbmcgYnVncyBzdWNoIGFzIDxyZGFyOi8v
cHJvYmxlbS80MjU2MDMyMD4uCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkJhY2tncm91bmRl
ZCAmJiBvbGRTdGF0ZSAhPSBTdGF0ZTo6Rm9yZWdyb3VuZGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIW1faVJBVEludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFT
RV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlVucmVnaXN0ZXJpbmcgd2l0aCBpUkFUTWFuYWdl
ciAoV0NNIHByb2Nlc3MgSUQ6ICVkLCBzdGF0ZTogJXUpLiIsIG1fY29udGV4dElkZW50aWZpZXIs
IG1fc3RhdGUpOworICAgIFttX2lSQVRJbnRlcmZhY2UgdW5yZWdpc3RlckNsaWVudF07CisgICAg
bV9pUkFUSW50ZXJmYWNlID0gbmlsOworICAgIG1faXNDb21wYW5pb25JblByb3hpbWl0eSA9IGZh
bHNlOworICAgIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5ID0gZmFsc2U7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZUNvbXBhbmlvblByb3hpbWl0eSgp
Cit7CisgICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5ID0gZmFsc2U7CisgICAgZm9yIChJRFNE
ZXZpY2UgKmRldmljZSBpbiBbbV9pZHNTZXJ2aWNlIGRldmljZXNdKSB7CisgICAgICAgIGlmIChk
ZXZpY2UuaXNEZWZhdWx0UGFpcmVkRGV2aWNlICYmIGRldmljZS5pc05lYXJieSkgeworICAgICAg
ICAgICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2lu
ZywgIkRldGVybWluZWQgY29tcGFuaW9uIHByb3hpbWl0eSAoaXNDb21wYW5pb25JblByb3hpbWl0
eTogJWQpLiIsIG1faXNDb21wYW5pb25JblByb3hpbWl0eSk7Cit9CisKK3ZvaWQgTmV0d29ya1By
b3hpbWl0eU1hbmFnZXI6OnVwZGF0ZVJlY29tbWVuZGF0aW9uKCkKK3sKKyAgICBpZiAoIWlzQ29t
cGFuaW9uSW5Qcm94aW1pdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2lSQVRJ
bnRlcmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5l
dHdvcmtpbmcsICJSZXF1ZXN0aW5nIGFuIGltbWVkaWF0ZSByZWNvbW1lbmRhdGlvbiBmcm9tIGlS
QVRNYW5hZ2VyLiIpOworCisgICAgYXV0byBzZW1hcGhvcmUgPSBhZG9wdE9TT2JqZWN0KGRpc3Bh
dGNoX3NlbWFwaG9yZV9jcmVhdGUoMCkpOworICAgIFttX2lSQVRJbnRlcmZhY2UgZ2V0UHJveGlt
aXR5TGlua1JlY29tbWVuZGF0aW9uOk5PIHJlY29tbWVuZGF0aW9uOlt0aGlzLCBzZW1hcGhvcmVd
KE5TQXJyYXk8V1JNX2lSQVRQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiAqPiAqcmVjb21tZW5kYXRp
b25zKSB7CisgICAgICAgIHByb2Nlc3NSZWNvbW1lbmRhdGlvbnMocmVjb21tZW5kYXRpb25zKTsK
KyAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3NpZ25hbChzZW1hcGhvcmUuZ2V0KCkpOworICAg
IH1dOworCisgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQoc2VtYXBob3JlLmdldCgpLCBkaXNw
YXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAxICogTlNFQ19QRVJfU0VDKSk7Cit9CisKK3Zv
aWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgbV9jb250ZXh0SWRlbnRp
ZmllciA9IHBhcmFtZXRlcnMud2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcjsKKyAgICByZXN1bWUo
UmVzdW1wdGlvblJlYXNvbjo6UHJvY2Vzc1Jlc3VtaW5nKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
eGltaXR5TWFuYWdlcjo6ZGV2aWNlc0NoYW5nZWQoTlNBcnJheSAqKQoreworICAgIHVwZGF0ZUNv
bXBhbmlvblByb3hpbWl0eSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
aW5kZXggZGE3Y2E1OGIxMjRlMzIwMTc5OTE3NzlkNGY4N2YyYWQ0NzhhMWFkMS4uOWJjM2U0ZjNk
MTFhMTcwMTZmMmY4MDg4MjgyYmZlNDEzZWI5Y2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKQEAgLTY3LDYgKzY3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShQcm9jZXNzKSBcCiAgICAg
TShQcm9jZXNzU3VzcGVuc2lvbikgXAogICAgIE0oUHJvY2Vzc1N3YXBwaW5nKSBcCisgICAgTShQ
cm94aW1pdHlOZXR3b3JraW5nKSBcCiAgICAgTShSZW1vdGVMYXllclRyZWUpIFwKICAgICBNKFJl
c2l6ZSkgXAogICAgIE0oUmVzb3VyY2VMb2FkU3RhdGlzdGljcykgXApAQCAtODEsNyArODIsNiBA
QCBleHRlcm4gIkMiIHsKICAgICBNKFZpcnR1YWxNZW1vcnkpIFwKICAgICBNKFZpc2libGVSZWN0
cykgXAogICAgIE0oV2ViUlRDKSBcCi0gICAgTShXaUZpQXNzZXJ0aW9ucykgXAogCiBXRUJLSVQy
X0xPR19DSEFOTkVMUyhERUNMQVJFX0xPR19DSEFOTkVMKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvTW9iaWxlV2lGaVNQSS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvaW9zL01vYmlsZVdpRmlTUEkuaAppbmRleCBkYmNlOWQwNThiMTliYTBiZDA3
ZTVhN2NmOTNiY2Y5MDFjYzhlYzVjLi42MWIzMDE2ZmUzNzY5ODA5MmE4ZjFiZDQ0ZjI5NTk0YmVi
MTkyZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvTW9iaWxl
V2lGaVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9Nb2JpbGVXaUZp
U1BJLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAK
LSNpbmNsdWRlIDxNb2JpbGVXaUZpL1dpRmlNYW5hZ2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8TW9i
aWxlV2lGaS9Nb2JpbGVXaUZpLmg+CiAKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5k
ZXggY2JhZTliOWQ3ZWY5ODU3Y2EwZTAzMWFjMWM2MmYxZWY2ZDEwNmQ2Mi4uYWYxNjdkZTRmOWE2
MmIzN2FiMDY5NTlhNzhmNzQ5OTA3MTU2OGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAg
LTEzMiw3ICsxMzIsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb247CiAgICAgY29weS0+bV9hbHdh
eXNLZWVwQW5kUmV1c2VTd2FwcGVkUHJvY2Vzc2VzID0gdGhpcy0+bV9hbHdheXNLZWVwQW5kUmV1
c2VTd2FwcGVkUHJvY2Vzc2VzOwogICAgIGNvcHktPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVu
V2l0aE9wZW5lciA9IHRoaXMtPm1fcHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lcjsK
LSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQorI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09S
S0lORykKICAgICBjb3B5LT5tX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5tX3dp
cmVsZXNzQ29udGV4dElkZW50aWZpZXI7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaAppbmRleCAwNDljMjE0NTYyOWJlMzdmMDk0MmUxNTFlZjJjOTIwMDdlNDMx
NGJkLi41NTg3MjJlZTBmMjE5MTk3NmQ2NjRkMmNhZGM2Y2NiMTBhM2ViNjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBjdXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2N1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsgfQogICAgIHZv
aWQgc2V0Q3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFdURjo6
U3RyaW5nJiBjdXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIpIHsgbV9jdXN0
b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIgPSBjdXN0b21XZWJDb250ZW50U2Vy
dmljZUJ1bmRsZUlkZW50aWZpZXI7IH0KIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCisj
aWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQogICAgIHVuc2lnbmVkIHdpcmVsZXNzQ29u
dGV4dElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZp
ZXI7IH0KICAgICB2b2lkIHNldFdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIodW5zaWduZWQgd2ly
ZWxlc3NDb250ZXh0SWRlbnRpZmllcikgeyBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSB3
aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOyB9CiAjZW5kaWYKQEAgLTIwNSw3ICsyMDUsNyBAQCBw
cml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQorI2lmIEVOQUJMRShQUk9YSU1J
VFlfTkVUV09SS0lORykKICAgICB1bnNpZ25lZCBtX3dpcmVsZXNzQ29udGV4dElkZW50aWZpZXIg
eyAwIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggNTFi
MjA0OTcwMzc2OWI1YWEwNWM5Yjg3NjZmMDYzZjhmZWVmYmYzZS4uODNmZGZmMWMzNjNlYWNhNTRh
YjRiMTc5YmU2MjVkMTg3ODk1YTg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1t
CkBAIC0xMzksNyArMTM5LDcgQEAgLSAodm9pZClzZXRBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93
ZWRVUkxzOihOU0FycmF5PE5TVVJMICo+ICopYWRkaXRpb25hbFJlYWRBY2MKICAgICBfcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLT5zZXRBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocyhX
VEZNb3ZlKHBhdGhzKSk7CiB9CiAKLSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQorI2lmIEVO
QUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKIC0gKE5TVUludGVnZXIpd2lyZWxlc3NDb250ZXh0
SWRlbnRpZmllcgogewogICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT53aXJl
bGVzc0NvbnRleHRJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCBjZTU4NmRjMTM1NWQ2YTQyNmI0
YWExMmQ1OWIyMWY3MGJmNzBlMDg2Li5iNDc5ZjM4ZDZlZmRjOGM0ZGMwMzM2NmI1NTViYjNkNDU2
YTMwZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYQogICAgICAgICBwYXJhbWV0ZXJzLnJlY29yZFJlcGxheUNhY2hlTG9jYXRpb24gPSBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJRklfQVNT
RVJUSU9OUykKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCiAgICAgcGFyYW1ldGVy
cy53aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyID0gbV9jb25maWd1cmF0aW9uLT53aXJlbGVzc0Nv
bnRleHRJZGVudGlmaWVyKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2NWFkYTkzNTU2Y2YzNDNmZWE3NTExYmQ4
ODc1N2I3ZWMwZTM3NzQuLjBhNzFkNTM5ODc0Y2I3NjkzYWRmY2ZjYjJhNzExNTUzYmJkYmUxODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTU5Myw2ICsxNTkzLDEwIEBACiAJCUExMDJBNzA4MUVDMEVFRTkwMEQ4MUQ4MiAvKiBjb20u
bWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2Fu
ZGJveCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTVFMzk0
OTFENUJEOEE3MDBCNEI3Q0UgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVn
aW4uc2IgKi87IH07CiAJCUExMDQ2RUExMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDQ2RTlGMjA3
OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLzsgfTsKIAkJQTEwNDZFQTIyMDc5MjYzMTAw
RjBDNUQ4IC8qIFdLUERGVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExMDQ2RUEwMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcubW0gKi87
IH07CisJCUExMTQ1NUFDMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE0
NTVBQTIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oICovOyB9
OworCQlBMTE0NTVBRDIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ1
NUFCMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tICovOyB9
OworCQlBMTE0NTVCMDIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ1NUFF
MjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oICovOyB9OworCQlB
MTE0NTVCMTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE0NTVBRjIxMUZE
MjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gKi87IH07CiAJCUExMTVE
QzcxMTkxRDgyRDcwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RDE5MUQ4MkFC
MDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tICovOyB9OwogCQlBMTE1REM3
MjE5MUQ4MkRBMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFCMDBE
QTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTExOEE5RUUxOTA3QUQ2RjAwRjdDOTJCIC8q
IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9j
dW1lbnREYXRhLmNwcCAqLzsgfTsKQEAgLTE2MTQsOCArMTYxOCw2IEBACiAJCUExQzUxMkM4MTkw
NjU2RTUwMDQ0ODkxNCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzUxMkM2MTkwNjU2RTUwMDQ0ODkx
NCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCAqLzsgfTsKIAkJQTFDNTEyQzkxOTA2NTZF
NTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzUxMkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi87IH07CiAJCUExRDQyMDQ3MURCNTU3ODUwMEJCNkIw
RCAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4
dE1lbnVMaXN0ZW5lci5jcHAgKi87IH07Ci0JCUExREFGRERGMjA3RTlCMTYwMDVFOEE1MiAvKiBX
aUZpQXNzZXJ0aW9uSG9sZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMURBRkRERDIwN0U5QjE2MDA1RThBNTIgLyogV2lGaUFzc2VydGlvbkhvbGRl
ci5oICovOyB9OwotCQlBMURBRkRFMDIwN0U5QjE2MDA1RThBNTIgLyogV2lGaUFzc2VydGlvbkhv
bGRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
REFGRERFMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0aW9uSG9sZGVyLm1tICovOyB9Owog
CQlBMURGNjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMDE4RTBCN0M4MDAz
QTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gKi87IH07CiAJCUExREY2MzEzMThFMEI3QzgwMDNB
M0UyQSAvKiBEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50
LmggKi87IH07CiAJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUU2ODg2RjFG
NkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oICovOyB9OwpAQCAtNDE5Nyw2ICs0MTk5
LDEwIEBACiAJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLQ29udGV4dFByaXZhdGVNYWMu
aDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExMDQ2RTlGMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tQREZWaWV3Lmg7IHBhdGggPSBpb3MvV0tQREZWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExMDQ2RUEwMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BERlZpZXcubW07IHBhdGggPSBpb3MvV0tQREZW
aWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE0NTVBQTIxMUZDRkNBMDBD
QTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3
b3JrUHJveGltaXR5QXNzZXJ0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
MTQ1NUFCMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExNDU1QUUyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdv
cmtQcm94aW1pdHlNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMTQ1NUFGMjExRkQyNTIwMENB
OTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTE1REM2RDE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLV2ViVmlld1ByaW50
Rm9ybWF0dGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE1REM2RTE5MUQ4
MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29r
RG9jdW1lbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFF1
aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHBhdGggPSBpb3MvUXVpY2tMb29rRG9jdW1lbnREYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMTcsOCArNDIyMyw2IEBACiAJ
CUExQTRGRTYwMThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Rvd25sb2FkRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNTEyQzYxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA7IHBhdGggPSBpb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzUxMkM3MTkwNjU2
RTUwMDQ0ODkxNCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaDsgcGF0aCA9IGlvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExREFG
REREMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0aW9uSG9sZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdpRmlBc3NlcnRpb25Ib2xkZXIuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL2NvY29hL1dp
RmlBc3NlcnRpb25Ib2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTFEQUZE
REUyMDdFOUIxNjAwNUU4QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXaUZpQXNzZXJ0aW9uSG9sZGVyLm1tOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93bmxvYWRDbGllbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3du
bG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb3dubG9hZENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUU2ODg2RjFGNkUyQkFCMDA3
MDA2QTYgLyogUXVhcmFudGluZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFyYW50aW5lU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NTUzLDYgKzY1NTcsNyBAQAogCQkJCUUx
Nzk4Qzc2MTZFNjgxNTUwMDI0MDEzOSAvKiBGaWxlQVBJICovLAogCQkJCTJEQTk0NEJCMTg4NTEx
REQwMEVEODZEQiAvKiBpb3MgKi8sCiAJCQkJNTEwQ0M3REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1h
YyAqLywKKwkJCQlBMTE0NTVBMTIxMUZDRTdGMDBDQTkzNUIgLyogd2F0Y2hvcyAqLywKIAkJCQk0
MTMwNzU5NzFERTg0RUQ3MDAzOUVDNjkgLyogd2VicnRjICovLAogCQkJCTUzRjNDQUE1MjA2QzQ0
M0UwMDg2NDkwRSAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmNwcCAqLywKIAkJCQk1MzVCQ0I5
MDIwNjlDNDlDMDBDQ0NFMDIgLyogTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oICovLApAQCAtNzEx
Nyw4ICs3MTIyLDYgQEAKIAkJCQk3RUM0RjBGOTE4RTRBOTQ1MDA4MDU2QUYgLyogTmV0d29ya1By
b2Nlc3NDb2NvYS5tbSAqLywKIAkJCQk1MzIxNTk1MDFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29y
a1Nlc3Npb25Db2NvYS5oICovLAogCQkJCTVDMjBDQjlCMUJCMERDRDIwMDg5NUJCMSAvKiBOZXR3
b3JrU2Vzc2lvbkNvY29hLm1tICovLAotCQkJCUExREFGREREMjA3RTlCMTYwMDVFOEE1MiAvKiBX
aUZpQXNzZXJ0aW9uSG9sZGVyLmggKi8sCi0JCQkJQTFEQUZEREUyMDdFOUIxNjAwNUU4QTUyIC8q
IFdpRmlBc3NlcnRpb25Ib2xkZXIubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNvY29hOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcxODksNiArNzE5MiwxOCBAQAogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTExNDU1QTEyMTFG
Q0U3RjAwQ0E5MzVCIC8qIHdhdGNob3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uLmggKi8sCisJCQkJQTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdv
cmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi8sCisJCQkJQTExNDU1QUUyMTFGRDI1MjAwQ0E5MzVC
IC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggKi8sCisJCQkJQTExNDU1QUYyMTFGRDI1MjAw
Q0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovLAorCQkJKTsKKwkJCW5hbWUg
PSB3YXRjaG9zOworCQkJcGF0aCA9IE5ldHdvcmtQcm9jZXNzL3dhdGNob3M7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQlBMTgyRDVCMTFCRTZCQ0Y0MDA4N0E3Q0MgLyogaW9z
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTkyNTYsNiAr
OTI3MSw4IEBACiAJCQkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNz
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxM0ExNjNEMTYzMDg4RjYwMDVEN0QyMiAvKiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTQyNkVF
MUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExMTQ1NUFDMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNz
ZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTE0NTVCMDIxMUZEMjUyMDBDQTkzNUIgLyog
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRkQxOEI2MTY1
MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxNTI1NTFCMTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI2RjAxQzIzRjgwOTAwRDQxMTgzIC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTk2NDQsNyAr
OTY2MSw2IEBACiAJCQkJMTU3MzlCQkQxQjQyMDQyRDAwRDI1OEMxIC8qIFdlYlVzZXJNZWRpYUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNFRTU3NUMxREI3RDYxMTAwQzc0QzUwIC8qIFdl
YlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREZDN0RCQjFC
Q0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwuaCBpbiBIZWFkZXJzICovLAotCQkJCUExREFG
RERGMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0aW9uSG9sZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOUNENTVBQTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MjMyREY0MThCMjlENjgwMEQwNTk2
RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0TWFjLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTExMTAwLDYgKzExMTE2LDggQEAKIAkJCQlFMTRBOTU0OTE2RTAxNkE0
MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEzQTE2M0MxNjMwODhGNjAwNUQ3RDIyIC8qIE5l
dHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTExNDU1QUQyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0g
aW4gU291cmNlcyAqLywKKwkJCQlBMTE0NTVCMTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1By
b3hpbWl0eU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFGQkFEMDBE
QkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
NTI1NTFBMTcwMTE4MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI2RUYxQzIzRjgwOTAwRDQxMTgzIC8q
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTE1
ODgsNyArMTE2MDYsNiBAQAogCQkJCTgzRUU1NzVCMURCN0Q2MTEwMEM3NEM1MCAvKiBXZWJWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREZDN0RCQzFCQ0ND
MTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RE
MTEyN0EyOTgwMDA4RkY0RjQgLyogV2ViV2hlZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlBMURBRkRFMDIwN0U5QjE2MDA1RThBNTIgLyogV2lGaUFzc2VydGlvbkhvbGRlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTg2ODE2MEQwMTg3NjQ1NTcwMDIxRTc5RCAvKiBXaW5kb3dTZXJ2ZXJD
b25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlDRDU1QUIxMjhFMjk0RjAwMTMzQzg1
IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjkyMzJERjgxOEIyQTlBRTAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RJT1MubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY29uZmln
LmggYi9Tb3VyY2UvV2ViS2l0L2NvbmZpZy5oCmluZGV4IDYzNzk4Mjc4Y2M5ZTFiMjAwOGNmZWZi
YmQ1OWE4YzlmMzhiNzgyOGYuLjE0Y2FjODQxOGJlZjk5MDc2MGMwZTYyZGMwNzhmZTg2YjAxZTEw
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY29uZmlnLmgKKysrIGIvU291cmNlL1dlYktp
dC9jb25maWcuaApAQCAtMTE5LDE0ICsxMTksNiBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmbmRl
ZiBIQVZFX01PQklMRV9XSUZJCi0jaWYgUExBVEZPUk0oSU9TKSAmJiAhVEFSR0VUX09TX1NJTVVM
QVRPUiAmJiAhUExBVEZPUk0oSU9TTUFDKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2Rl
ZmluZSBIQVZFX01PQklMRV9XSUZJIDEKLSNlbHNlCi0jZGVmaW5lIEhBVkVfTU9CSUxFX1dJRkkg
MAotI2VuZGlmCi0jZW5kaWYKLQogI2lmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkgJiYgIWRlZmluZWQoX19pMzg2
X18pICYmICFQTEFURk9STShJT1NNQUMpCiAjZGVmaW5lIEhBVkVfU0FGRV9CUk9XU0lORyAxCiAj
ZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347304</attachid>
            <date>2018-08-16 14:18:31 -0700</date>
            <delta_ts>2018-08-16 14:55:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188664-20180816141830.patch</filename>
            <type>text/plain</type>
            <size>72967</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwOGQ4MDRkYTk1YmUzZmYxODViOWJk
MTJhZTkxN2U3MTQ2OWY1ODAuLjk4MGVkOWY0ZjYzMjkyOGRhMGVjYjFkNTVhZDgxYjc0ZGY4YjUy
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMDgtMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBVcHN0cmVhbSBQcm94aW1pdHkgTmV0d29y
a2luZyAobmVlIFdpLUZpIEFzc2VydGlvbnMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GZWF0dXJlRGVmaW5lcy5oOiBEZWZpbmVkIEVOQUJM
RV9QUk9YSU1JVFlfTkVUV09SS0lORyB0byAxIG9uIHdhdGNoT1MuCisKIDIwMTgtMDgtMTAgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW21hY09TXSBNdWx0aXBs
ZSB0aGlyZCBwYXJ0eSBhcHBzIGNyYXNoIGR1ZSB0byB0aGUgdGhyZWFkIHNhZmV0eSBjaGVjayBp
biBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZTk2YWYzZDUxMDJjZGYz
OWMzZGEzNjY5OGQ5NzVlZDNlMWQwMTgzLi4wNzk0OGI1NTJkMTkxNTZiMjRhNWVhNGJjMGYzMGYy
NjhiN2UxMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxOC0wOC0xNiAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFVwc3RyZWFtIFBy
b3hpbWl0eSBOZXR3b3JraW5nIChuZWUgV2ktRmkgQXNzZXJ0aW9ucykKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3hpbWl0eSBOZXR3b3JraW5nIHBy
b3ZpZGVzIHR3byBmZWF0dXJlcyBmb3Igc3BlZWRpbmcgdXAgcGFnZSBsb2FkcyBvbiB3YXRjaE9T
OgorCisgICAgICAgIDEuIEJpbmRpbmcgcmVxdWVzdHMgdG8gdGhlIEFwcGxlIFdhdGNoJ3MgV2kt
RmkgaW50ZXJmYWNlIGV2ZW4gd2hlbiB0aGUgaVBob25lIGlzIGluIHByb3hpbWl0eS4KKyAgICAg
ICAgMi4gV2hlbiBXaS1GaSBpc24ndCBhdmFpbGFibGUsIHByZWVtcHRpdmVseSB1cGdyYWRpbmcg
dGhlIEJsdWV0b290aCBsaW5rIHRvIGl0cyBmYXN0ZXN0IGRhdGEKKyAgICAgICAgcmF0ZSBwcmlv
ciB0byBzdGFydGluZyBwYWdlIGxvYWRzLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2Vi
S2l0LnhjY29uZmlnOgorCisgICAgICAgIEFkZGVkIExERkxBR1MgZm9yIFByb3hpbWl0eSBOZXR3
b3JraW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJveGltaXR5TWFuYWdlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKworICAgICAgICBBZGRlZCBOZXR3b3Jr
UHJveGltaXR5TWFuYWdlciBhcyBhIHN1cHBsZW1lbnQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oOgorCisgICAgICAgIFJlbmFtZWQgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykgdG8gRU5BQkxF
KFBST1hJTUlUWV9ORVRXT1JLSU5HKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisKKyAgICAgICAgUmVuYW1lZCBtX3dpRmlBc3NlcnRp
b25Ib2xkZXIgdG8gbV9wcm94aW1pdHlBc3NlcnRpb25Ub2tlbiBhbmQgY2hhbmdlZCBpdHMgdHlw
ZSBmcm9tIGFuCisgICAgICAgIG9wdGlvbmFsIFdpRmlBc3NlcnRpb25Ib2xkZXIgdG8gYW4gb3B0
aW9uYWwgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6VG9rZW4uCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3ND
b2NvYSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVU
b1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9j
ZXNzRGlkUmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
UHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCk6CisK
KyAgICAgICAgQ2hhbmdlZCB0byB1c2UgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XaUZpQXNzZXJ0aW9uSG9sZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlB
c3NlcnRpb246OlRva2VuOjpUb2tlbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb246OlRva2VuOjp+VG9rZW4pOgorCisgICAgICAgIEFkZGVkLiBOZXR3b3JrRGF0
YVRhc2tzIGhvbGQgdGhlc2UgdG9rZW5zIHRvIGtlZXAgQmx1ZXRvb3RoIG9yIFdpLUZpIGFzc2Vy
dGlvbnMgYWN0aXZlCisgICAgICAgIGR1cmluZyBsb2FkaW5nLiBXaGVuIHRoZSBsYXN0IHRva2Vu
IGlzIGRlc3Ryb3llZCwgaXRzIGFzc29jaWF0ZWQgYXNzZXJ0aW9uIHdpbGwgYmUKKyAgICAgICAg
ZGVhY3RpdmF0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQ
cm94aW1pdHlBc3NlcnRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uOjpOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6aG9sZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZE5vdyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1Rp
bWVyRmlyZWQpOgorCisgICAgICAgIEFkZGVkLiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIGlz
IHRoZSBiYXNlIGNsYXNzIGZvciBCbHVldG9vdGggYW5kIFdpLUZpIGFzc2VydGlvbnMuIEl0Cisg
ICAgICAgIG1hbmFnZXMgdGhlIGxvZ2ljIGZvciBob2xkaW5nIGFuZCByZWxlYXNpbmcgYXNzZXJ0
aW9ucyBhcyB3ZWxsIGFzIHJlc3BvbmRpbmcgdG8gbmV0d29yaworICAgICAgICBwcm9jZXNzIGJh
Y2tncm91bmRpbmcgYW5kIHN1c3BlbnNpb24uCisKKyAgICAgICAgKFdlYktpdDo6Qmx1ZXRvb3Ro
UHJveGltaXR5QXNzZXJ0aW9uOjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3cpOgorICAgICAg
ICAoV2ViS2l0OjpCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OnJlbGVhc2VOb3cpOgorCisg
ICAgICAgIEFkZGVkLiBIb2xkcyBhIEJsdWV0b290aCBhc3NlcnRpb24gYnkgY2FsbGluZyAtW0lE
U1NlcnZpY2Ugc2V0TGlua1ByZWZlcmVuY2VzOl0uCisKKyAgICAgICAgKFdlYktpdDo6V2lGaVBy
b3hpbWl0eUFzc2VydGlvbjo6V2lGaVByb3hpbWl0eUFzc2VydGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldpRmlQcm94aW1pdHlBc3NlcnRpb246OmhvbGROb3cpOgorICAgICAgICAoV2ViS2l0OjpX
aUZpUHJveGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlTm93KToKKworICAgICAgICBBZGRlZC4gSG9s
ZHMgYSBXaS1GaSBhc3NlcnRpb24gYnkgdXNpbmcgV2lGaU1hbmFnZXJDbGllbnQuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmg6IEFk
ZGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSBz
ZXRDbGllbnQ6XSk6CisgICAgICAgICgtW1dLUHJveGltaXR5U2VydmljZURlbGVnYXRlIHNlcnZp
Y2U6ZGV2aWNlc0NoYW5nZWQ6XSk6CisgICAgICAgICgtW1dLUHJveGltaXR5U2VydmljZURlbGVn
YXRlIHNlcnZpY2U6bmVhcmJ5RGV2aWNlc0NoYW5nZWQ6XSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp+TmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6c3VwcGxlbWVu
dE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpiaW5kUmVxdWVzdFRvV2lGaSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjphcHBseVByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cmVzdW1lKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cmVjb21tZW5kYXRpb24gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cHJvY2Vzc1JlY29tbWVuZGF0aW9u
cyk6CisgICAgICAgIChXZWJLaXQ6OnRvUHJvY2Vzc0lEKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZVJlY29tbWVuZGF0aW9ucyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXNwZW5kUmVjb21tZW5kYXRpb25zKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnVwZGF0ZUNvbXBhbmlv
blByb3hpbWl0eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp1
cGRhdGVSZWNvbW1lbmRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eU1h
bmFnZXI6OmRldmljZXNDaGFuZ2VkKToKKworICAgICAgICBBZGRlZC4gTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXIgaXMgYSBuZXR3b3JrIHByb2Nlc3Mgc3VwcGxlbWVudCB0aGF0IGNhbiBiaW5kCisg
ICAgICAgIE5ldHdvcmtEYXRhVGFza3MgdG8gV2ktRmksIGFzc29jaWF0ZSBhc3NlcnRpb25zIHdp
dGggTmV0d29ya0RhdGFUYXNrcywgY2hlY2sgZm9yIGNvbXBhbmlvbgorICAgICAgICBwcm94aW1p
dHksIGFzayBmb3IgcHJveGltaXR5IG5ldHdvcmsgcmVjb21tZW5kYXRpb25zLCBhbmQgcmVzcG9u
ZCB0byBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgYmFja2dyb3VuZGluZyBhbmQgc3VzcGVuZGlu
Zy4KKworICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKworICAgICAgICBSZW5hbWVkIHRo
ZSBXaUZpQXNzZXJ0aW9ucyBsb2cgY2hhbm5lbCB0byBQcm94aW1pdHlOZXR3b3JraW5nLgorCisg
ICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9Nb2JpbGVXaUZpU1BJLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJ
OjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisKKyAgICAgICAg
UmVuYW1lZCBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKSB0byBFTkFCTEUoUFJPWElNSVRZX05FVFdP
UktJTkcpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogY29uZmlnLmg6CisKKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgZGVmaW5pdGlvbiBv
ZiBIQVZFX01PQklMRV9XSUZJLgorCiAyMDE4LTA4LTEwICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51
RGF0YSBzaG91bGQgdXNlIG1lbWJlciBpbml0aWFsaXphdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVz
LmgKaW5kZXggYzMwNzBmZjkyYzczY2JlOGUyYTI5ZWVjY2JlYTBlMjBkZjgwZTMzMS4uMGQzZTdm
NzQ1ZDg3MWEyNDYyMjVkNDZkZGI1Njg2OTFiZjBkMmM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oCkBAIC0xODAsNiArMTgwLDE3IEBAIHRoZSBwdWJsaWMgaU9TIFNESy4gU2VlIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNzkxNjc+LiAqLwogCiAjZW5kaWYgLyogUExBVEZPUk0oSU9TKSAqLwog
CisvKiAtLS0tLS0tLS0gQXBwbGUgV0FUQ0hPUyBwb3J0IC0tLS0tLS0tLSAqLworI2lmIFBMQVRG
T1JNKFdBVENIT1MpCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfUFJPWElNSVRZX05FVFdPUktJTkcp
CisjaWYgIVRBUkdFVF9PU19TSU1VTEFUT1IKKyNkZWZpbmUgRU5BQkxFX1BST1hJTUlUWV9ORVRX
T1JLSU5HIDEKKyNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBQTEFURk9STShXQVRDSE9TKSAq
LworCiAvKiAtLS0tLS0tLS0gQXBwbGUgTUFDIHBvcnQgKG5vdCBJT1MpIC0tLS0tLS0tLSAqLwog
I2lmIFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNmFiMjRlMmM0ODJlNDIw
Y2ZkN2M1YmYyZTc2ZjM3MGMxZjUyODUwZC4uY2M3NmRjMzU2MjRhNjM0MWZhYzRhMjhmMmE5NDI4
NmE5OGM3NDdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xMSw2ICsxMSw3IEBAIHNldChXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNz
L0ZpbGVBUEkiCiAgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FjaGUiCiAgICAg
IiR7V0VCS0lUX0RJUn0vTmV0d29ya1Byb2Nlc3MvY2FwdHVyZSIKKyAgICAiJHtXRUJLSVRfRElS
fS9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zIgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0YyIKICAgICAiJHtXRUJLSVRfRElSfS9QbGF0Zm9ybSIKICAgICAiJHtXRUJLSVRf
RElSfS9QbGF0Zm9ybS9JUEMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRp
b25zL1dlYktpdC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0
LnhjY29uZmlnCmluZGV4IGE2NjcwOWY0ZGEwOGQ4MWVlYzczNDg4Mzg4ZWRhYmRhMzExODFlNjQu
LmUxYWUxMTVlNjA4YmY2Yzc0YzBlNTVlYjRmNWIyYmY1OTJhNzJhNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnCkBAIC0xMDEsNiArMTAxLDkgQEAg
V0tfUERGS0lUX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gJChXS19QREZLSVRfTERGTEFHU19p
cGhvbmVvcyk7CiBXS19QREZLSVRfTERGTEFHU19pcGhvbmVvc1tzZGs9aXBob25lKjExLipdID0g
OwogV0tfUERGS0lUX0xERkxBR1NfaXBob25lc2ltdWxhdG9yW3Nkaz1pcGhvbmUqMTEuKl0gPSA7
CiAKK1dLX1BST1hJTUlUWV9ORVRXT1JLSU5HX0xERkxBR1MgPSAkKFdLX1BST1hJTUlUWV9ORVRX
T1JLSU5HX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19QUk9YSU1JVFlfTkVUV09S
S0lOR19MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIElEUyAtZnJhbWV3b3JrIE1vYmlsZVdp
RmkgLWZyYW1ld29yayBTeXN0ZW1Db25maWd1cmF0aW9uIC1mcmFtZXdvcmsgV2lyZWxlc3NDb2V4
TWFuYWdlcjsKKwogV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTID0gJChXS19TQUZFX0JST1dTSU5H
X0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19TQUZFX0JST1dTSU5HX0xERkxBR1Nf
aXBob25lb3MgPSAtZnJhbWV3b3JrIFNhZmFyaVNhZmVCcm93c2luZzsKIFdLX1NBRkVfQlJPV1NJ
TkdfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFNhZmFyaVNhZmVCcm93c2lu
ZzsKQEAgLTExNSw3ICsxMTgsNyBAQCBXS19VSUtJVF9MREZMQUdTX2NvY29hdG91Y2ggPSAtZnJh
bWV3b3JrIFVJS2l0OwogV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUyA9ICQoV0tfVVJMX0ZPUk1B
VFRJTkdfTERGTEFHU18kKFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkcpKTsKIFdLX1VSTF9GT1JNQVRU
SU5HX0xERkxBR1NfWUVTID0gLWZyYW1ld29yayBVUkxGb3JtYXR0aW5nOwogCi1GUkFNRVdPUktf
QU5EX0xJQlJBUllfTERGTEFHUyA9IC1sb2JqYyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3
b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdy
YXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdv
cmsgSW1hZ2VJTyAtZnJhbWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgV2ViS2l0TGVnYWN5IC1sbmV0
d29yayAkKFdLX0FDQ0VTU0lCSUxJVFlfTERGTEFHUykgJChXS19BUFBLSVRfTERGTEFHUykgJChX
S19BU1NFUlRJT05fU0VSVklDRVNfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19D
T1JFX1BERl9MREZMQUdTKSAkKFdLX0NPUkVfUFJFRElDVElPTl9MREZMQUdTKSAkKFdLX0NPUkVf
U0VSVklDRVNfTERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lP
U1VSRkFDRV9MREZMQUdTKSAkKFdLX0xJQlNBTkRCT1hfTERGTEFHUykgJChXS19MSUJXRUJSVENf
TERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9H
RVNUQUxUX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1Mp
ICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tfVVJM
X0ZPUk1BVFRJTkdfTERGTEFHUyk7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9IC1s
b2JqYyAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3Jr
IENvcmVGb3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRl
eHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIElP
S2l0IC1mcmFtZXdvcmsgV2ViS2l0TGVnYWN5IC1sbmV0d29yayAkKFdLX0FDQ0VTU0lCSUxJVFlf
TERGTEFHUykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BU1NFUlRJT05fU0VSVklDRVNfTERG
TEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1BERl9MREZMQUdTKSAkKFdLX0NP
UkVfUFJFRElDVElPTl9MREZMQUdTKSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19H
UkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9MREZMQUdTKSAkKFdLX0xJ
QlNBTkRCT1hfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChXS19NT0JJTEVfQ09S
RV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxBR1MpICQoV0tfT1BF
TkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfUFJPWElNSVRZX05FVFdPUktJ
TkdfTERGTEFHUykgJChXS19TQUZFX0JST1dTSU5HX0xERkxBR1MpICQoV0tfVUlLSVRfTERGTEFH
UykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKTsKIAogLy8gUHJldmVudCBDKysgc3RhbmRh
cmQgbGlicmFyeSBiYXNpY19zdHJpbmdzdHJlYW0sIG9wZXJhdG9yIG5ldywgZGVsZXRlIGFuZCB0
aGVpciByZWxhdGVkIGV4Y2VwdGlvbiB0eXBlcyBmcm9tIGJlaW5nIGV4cG9ydGVkIGFzIHdlYWsg
c3ltYm9scy4KIFVORVhQT1JURURfU1lNQk9MX0xERkxBR1MgPSAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sIC1XbCxfX1pUSVN0OWJhZF9hbGxvYyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pU
SVN0OWV4Y2VwdGlvbiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWJhZF9hbGxv
YyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUU1N0OWV4Y2VwdGlvbiAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pkbFB2U18gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19a
bndtUHYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19abndtIC1XbCwtdW5leHBvcnRlZF9z
eW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVF
RUMyRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklG
dk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzFFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVhU0VE
biAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOS1N0M19fMThmdW5jdGlvbklGdk43V2Vi
Q29yZTEyUG9saWN5QWN0aW9uRUVFY2xFUzJfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRTRzd2FwRVJTNF8g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29y
ZTEyUG9saWN5QWN0aW9uRUVFQzFFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19a
TlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFQzJFUktTNF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEy
UG9saWN5QWN0aW9uRUVFRDFFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18x
OGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVEMkV2IC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlv
bkVFRWFTRVJLUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE3YmFk
X2Z1bmN0aW9uX2NhbGxFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4
YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VF
RUUwX05TXzEzYmFzaWNfaXN0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNf
OWFsbG9jYXRvckljRUVFRTBfTlNfMTRiYXNpY19pb3N0cmVhbUljUzJfRUUgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hh
cl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRTE2X05TXzEzYmFzaWNfb3N0cmVhbUljUzJf
RUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFROU3QzX18xMThiYXNpY19zdHJpbmdz
dHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5TdDNfXzExNWJhc2ljX3N0cmluZ2J1ZkljTlNfMTFjaGFy
X3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRWTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5T
XzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVENOU3QzX18x
MThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvcklj
RUVFRThfTlNfMTNiYXNpY19vc3RyZWFtSWNTMl9FRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggN2RlODAwZTcxOGE2MWRjMjdmNDc3
NzQ5MTZiNTU4YTk3N2M1NzA1Zi4uYWQ0ZjM2OTgwODRhOTYwOWZlM2VhZjdlY2IzMWRkMzFlMTRl
Y2ZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlByZWNvbm5lY3RU
YXNrLmgiCkBAIC0xMjEsNiArMTIyLDkgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNz
KCkKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGFkZFN1
cHBsZW1lbnQ8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyPigpOwogI2VuZGlmCisjaWYgRU5B
QkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorICAgIGFkZFN1cHBsZW1lbnQ8TmV0d29ya1Byb3hp
bWl0eU1hbmFnZXI+KCk7CisjZW5kaWYKIAogICAgIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzaW5n
bGV0b24oKS5hZGRMaXN0ZW5lcihbdGhpc10oYm9vbCBpc09uTGluZSkgewogICAgICAgICBhdXRv
IHdlYlByb2Nlc3NDb25uZWN0aW9ucyA9IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwpAQCAtMTQ4
LDYgKzE1MiwxMyBAQCBEb3dubG9hZE1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZE1h
bmFnZXIoKQogICAgIHJldHVybiBkb3dubG9hZE1hbmFnZXI7CiB9CiAKKyNpZiBFTkFCTEUoUFJP
WElNSVRZX05FVFdPUktJTkcpCitOZXR3b3JrUHJveGltaXR5TWFuYWdlciYgTmV0d29ya1Byb2Nl
c3M6OnByb3hpbWl0eU1hbmFnZXIoKQoreworICAgIHJldHVybiAqc3VwcGxlbWVudDxOZXR3b3Jr
UHJveGltaXR5TWFuYWdlcj4oKTsKK30KKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogY29ubmVjdGlvbikKIHsKICAgICBzaXplX3QgdmVjdG9ySW5kZXggPSBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9ucy5maW5kKGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDZlZDFlZWQ4N2VmZWEzODAwZGVjZTk1
ODJmYjliYzUxNTBlM2RiNzYuLjE3ZTdjOTUzZjA1MTEwZjE0MGVhMmVjNzljNjI5MzMxNzY3YzRl
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTU4LDE1ICs1OCwxNSBAQCBjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewor
ICAgIAorZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOworZW51bSBjbGFzcyBXZWJz
aXRlRGF0YVR5cGU7CiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXI7Ci0jaWYgRU5BQkxFKFNF
UlZFUl9QUkVDT05ORUNUKQotY2xhc3MgUHJlY29ubmVjdFRhc2s7Ci0jZW5kaWYKIGNsYXNzIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Byb2Nlc3NTdXBwbGVt
ZW50OworY2xhc3MgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI7Ci1lbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb247Ci1lbnVtIGNsYXNz
IFdlYnNpdGVEYXRhVHlwZTsKK2NsYXNzIFByZWNvbm5lY3RUYXNrOwogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOwogCkBAIC05OCw2ICs5OCw5IEBAIHB1YmxpYzoKIAogICAgIEF1dGhlbnRpY2F0aW9uTWFu
YWdlciYgYXV0aGVudGljYXRpb25NYW5hZ2VyKCk7CiAgICAgRG93bmxvYWRNYW5hZ2VyJiBkb3du
bG9hZE1hbmFnZXIoKTsKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisgICAgTmV0
d29ya1Byb3hpbWl0eU1hbmFnZXImIHByb3hpbWl0eU1hbmFnZXIoKTsKKyNlbmRpZgogCiAgICAg
TmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUoKSB7IHJldHVybiBtX2NhY2hlLmdldCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYjdhYjE4NjAwNzE3OTMwMzU1
NjcwZTljM2M0MDc5NzlhNzY2NTM4ZS4uMmVmNzAwNjgyYmVmM2Q3YzhlODFkZmUyNDliZDkwNWQz
NjY5NGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lz
dGVyZWRBc0NPUlNFbmFibGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRB
c0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OwogCi0jaWYgRU5BQkxFKFdJRklfQVNTRVJUSU9O
UykKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCiAgICAgZW5jb2RlciA8PCB3aXJl
bGVzc0NvbnRleHRJZGVudGlmaWVyOwogI2VuZGlmCiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgYm9v
bCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQorI2lmIEVOQUJMRShQ
Uk9YSU1JVFlfTkVUV09SS0lORykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53aXJl
bGVzc0NvbnRleHRJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMGU5MTI5YjM5NTAwZDQwMDA1Y2Y4OTcy
M2Y2NTIwNmMxZmNjMWI3Mi4uZGZiZWM0N2NjNTQxMDZhNjYwODZhMGZkZjQzZTZiYzUzNzA5ZmI1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0
cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OwogICAg
IFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKIAotI2lm
IEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5H
KQogICAgIHVuc2lnbmVkIHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgeyAwIH07CiAjZW5kaWYK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggMzZhYWY3M2QxOWM4MjQzMmRjNWZhNDFiNWI0NzZm
ZTI3ZGEyZDNiOS4uNWU2N2E3ODBhZWY2MTQ3M2NiM2ZhNTQ4NTNlZTQ0ZTE3ZmRkM2RkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlICJXaUZpQXNzZXJ0aW9uSG9sZGVyLmgi
CisjaW5jbHVkZSAiTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBA
IC03MywxMSArNzMsMTEgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lSUQ7IH07CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH07CiAKLSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQotICAgIHZvaWQg
bWF5YmVIb2xkV2lGaUFzc2VydGlvbihib29sIHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uKQorI2lm
IEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKyAgICB2b2lkIGhvbGRQcm94aW1pdHlBc3Nl
cnRpb24oTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiYgYXNzZXJ0aW9uKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX3dpRmlBc3NlcnRpb25Ib2xkZXIpOwotICAgICAgICBtX3dpRmlBc3NlcnRp
b25Ib2xkZXIuZW1wbGFjZShzaG91bGRIb2xkV2lGaUFzc2VydGlvbik7CisgICAgICAgIEFTU0VS
VCghbV9wcm94aW1pdHlBc3NlcnRpb25Ub2tlbik7CisgICAgICAgIG1fcHJveGltaXR5QXNzZXJ0
aW9uVG9rZW4uZW1wbGFjZShhc3NlcnRpb24pOwogICAgIH0KICNlbmRpZgogCkBAIC0xMDYsOCAr
MTA2LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29v
a2llU3RvcmFnZSB7IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElP
TlMpCi0gICAgc3RkOjpvcHRpb25hbDxXaUZpQXNzZXJ0aW9uSG9sZGVyPiBtX3dpRmlBc3NlcnRp
b25Ib2xkZXI7CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorICAgIHN0ZDo6b3B0
aW9uYWw8TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6VG9rZW4+IG1fcHJveGltaXR5QXNzZXJ0
aW9uVG9rZW47CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDgyMmI0MGQy
NDEyODkyMmI1ZjM2MzFlZmI5MDY3OTgyMTA2YjY0ZmQuLjIwNGIzZmE1ZTllN2VlODNiNmNhZjUz
NTc2MTFhOTRiNzQ0ZGMxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBA
QAogI2ltcG9ydCAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTQ0LDEw
ICs0NSw2IEBACiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvQmFzZTY0Lmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8
V2ViS2l0QWRkaXRpb25zL05ldHdvcmtEYXRhVGFza0NvY29hQWRkaXRpb25zLm1tPgotI2VuZGlm
Ci0KICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTIwMDAwKQogQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrIChTdGFnaW5n
KQogQHByb3BlcnR5IChudWxsYWJsZSwgcmVhZHdyaXRlLCByZXRhaW4pIE5TVVJMICpfc2l0ZUZv
ckNvb2tpZXM7CkBAIC0yMTMsOCArMjEwLDggQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKIAog
ICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29y
ZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKICAgICBhcHBseVNuaWZm
aW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBz
aG91bGRDb250ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlm
ZkNvbnRlbnQgJiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
ZiA9PSBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwotI2lm
IEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCi0gICAgYXBwbHlBZGRpdGlvbmFsUHJvcGVydGllcyhy
ZXF1ZXN0LCAqdGhpcywgbnNSZXF1ZXN0KTsKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJ
TkcpCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnByb3hpbWl0eU1hbmFnZXIoKS5h
cHBseVByb3BlcnRpZXMocmVxdWVzdCwgKnRoaXMsIG5zUmVxdWVzdCk7CiAjZW5kaWYKIAogICAg
IGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPiht
X3Nlc3Npb24uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDEyY2YzYWYwYjEwMjZhZDBi
NTFjNTliNGUxNjBlYThiMjM2MjhlY2YuLmM5MzQ4ZTc0MThiNzc5ZDc0YWI3ZWM4NzVkZDhiMTRh
Nzk0ODNjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIk5ldHdv
cmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTQ1LDEw
ICs0Niw2IEBACiAjaW1wb3J0IDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW1wb3J0IDx3
dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNp
bXBvcnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3JrUHJvY2Vzc0NvY29hQWRkaXRpb25zLm1tPgot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTmV0
d29ya1NldHRpbmdzKCkKQEAgLTExMCwxMCArMTA3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vz
c0MKIAogICAgIEFTU0VSVCghbV9kaXNrQ2FjaGVJc0Rpc2FibGVkRm9yVGVzdGluZyk7CiAKLSNp
ZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQotICAgIGluaXRpYWxpemVXaUZpQXNzZXJ0aW9ucyhw
YXJhbWV0ZXJzKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fZGlza0NhY2hlRGlyZWN0b3J5LmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0NSw4ICsyMzgsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybVN5bmNBbGxDb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVUb1N1c3Bl
bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotI2lm
IEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCi0gICAgc3VzcGVuZFdpRmlBc3NlcnRpb25zKFN1c3Bl
bnNpb25SZWFzb246OlByb2Nlc3NTdXNwZW5kaW5nLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorICAgIHByb3hpbWl0eU1hbmFn
ZXIoKS5zdXNwZW5kKFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NTdXNwZW5kaW5nLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAj
ZW5kaWYKQEAgLTI1NCwyMyArMjQ3LDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
UHJlcGFyZVRvU3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxlCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFJlc3VtZSgpCiB7Ci0jaWYgRU5B
QkxFKFdJRklfQVNTRVJUSU9OUykKLSAgICByZXN1bWVXaUZpQXNzZXJ0aW9ucyhSZXN1bXB0aW9u
UmVhc29uOjpQcm9jZXNzUmVzdW1pbmcpOworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lO
RykKKyAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nl
c3NSZXN1bWluZyk7CiAjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Q
cm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpCiB7Ci0jaWYgRU5BQkxFKFdJRklfQVNT
RVJUSU9OUykKLSAgICBzdXNwZW5kV2lGaUFzc2VydGlvbnMoU3VzcGVuc2lvblJlYXNvbjo6UHJv
Y2Vzc0JhY2tncm91bmRpbmcsIFtdIHsgfSk7CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JL
SU5HKQorICAgIHByb3hpbWl0eU1hbmFnZXIoKS5zdXNwZW5kKFN1c3BlbnNpb25SZWFzb246OlBy
b2Nlc3NCYWNrZ3JvdW5kaW5nLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogewotI2lm
IEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCi0gICAgcmVzdW1lV2lGaUFzc2VydGlvbnMoUmVzdW1w
dGlvblJlYXNvbjo6UHJvY2Vzc0ZvcmVncm91bmRpbmcpOworI2lmIEVOQUJMRShQUk9YSU1JVFlf
TkVUV09SS0lORykKKyAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFz
b246OlByb2Nlc3NGb3JlZ3JvdW5kaW5nKTsKICNlbmRpZgogfQogCi19Cit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
V2lGaUFzc2VydGlvbkhvbGRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9XaUZpQXNzZXJ0aW9uSG9sZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIx
OTM1YzMyZmYzYzZlOTg2NjNkNjMzZDI5ZWE3ODRlZDNjMmVhZTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XaUZpQXNzZXJ0aW9uSG9sZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBIQVZFKE1PQklMRV9XSUZJKQot
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1j
bGFzcyBXaUZpQXNzZXJ0aW9uSG9sZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaUZp
QXNzZXJ0aW9uSG9sZGVyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXaUZpQXNzZXJ0aW9uSG9s
ZGVyKGJvb2wgc2hvdWxkSG9sZFdpRmlBc3NlcnRpb24pOwotICAgIH5XaUZpQXNzZXJ0aW9uSG9s
ZGVyKCk7Ci0KLSAgICBib29sIHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRIb2xkV2lGaUFzc2VydGlvbjsgfQotCi1wcml2YXRlOgotICAgIGJvb2wgbV9z
aG91bGRIb2xkV2lGaUFzc2VydGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gSEFWRShNT0JJTEVfV0lGSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTZiMzM3OWNmODdiMDJlZjI3NTU3ZDQ1YWQ4NzA1OWVhMzM3ODIz
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dpRmlBc3NlcnRpb25Ib2xkZXIubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJXaUZpQXNzZXJ0aW9uSG9sZGVyLmgiCi0KLSNpZiBIQVZFKE1PQklMRV9XSUZJ
KQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9u
cy9XaUZpQXNzZXJ0aW9uSG9sZGVyQWRkaXRpb25zLm1tPgotI2Vsc2UKLXN0YXRpYyB2b2lkIGhv
bGRXaUZpQXNzZXJ0aW9uKGNvbnN0IFdpRmlBc3NlcnRpb25Ib2xkZXImKQotewotfQotCi1zdGF0
aWMgdm9pZCByZWxlYXNlV2lGaUFzc2VydGlvbihjb25zdCBXaUZpQXNzZXJ0aW9uSG9sZGVyJikK
LXsKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2lGaUFzc2VydGlvbkhvbGRl
cjo6V2lGaUFzc2VydGlvbkhvbGRlcihib29sIHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uKQotICAg
IDogbV9zaG91bGRIb2xkV2lGaUFzc2VydGlvbiB7IHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uIH0K
LXsKLSAgICBob2xkV2lGaUFzc2VydGlvbigqdGhpcyk7Ci19Ci0KLVdpRmlBc3NlcnRpb25Ib2xk
ZXI6On5XaUZpQXNzZXJ0aW9uSG9sZGVyKCkKLXsKLSAgICByZWxlYXNlV2lGaUFzc2VydGlvbigq
dGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gSEFWRShNT0JJ
TEVfV0lGSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hv
cy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxMTA3
MTI0ZjUwNmFhNzk1MDU0MGJhMWU5Y2U5NzAyMTM4MTZmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2Vy
dGlvbi5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisKKyNpbmNsdWRlICJNb2JpbGVXaUZpU1BJ
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBJRFNTZXJ2aWNl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBSZXN1bXB0aW9uUmVhc29uIDog
dWludDhfdDsKK2VudW0gY2xhc3MgU3VzcGVuc2lvblJlYXNvbiA6IHVpbnQ4X3Q7CisKK2NsYXNz
IE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb24pOworcHVibGljOgorICAgIGNsYXNzIFRva2VuIHsKKyAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW4pOworICAgIHB1YmxpYzoKKyAgICAgICAg
ZXhwbGljaXQgVG9rZW4oTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiYgYXNzZXJ0aW9uKQorICAg
ICAgICAgICAgOiBtX2Fzc2VydGlvbiB7IGFzc2VydGlvbiB9CisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fYXNzZXJ0aW9uLmhvbGQoKTsKKyAgICAgICAgfQorCisgICAgICAgIH5Ub2tlbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fYXNzZXJ0aW9uLnJlbGVhc2UoKTsKKyAgICAgICAgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiYgbV9hc3Nl
cnRpb247CisgICAgfTsKKworICAgIHZvaWQgcmVzdW1lKFJlc3VtcHRpb25SZWFzb24pOworICAg
IHZvaWQgc3VzcGVuZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworCitwcm90ZWN0ZWQ6CisgICAgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbigpOworICAg
IHZpcnR1YWwgfk5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBi
b29sIG1faXNIb2xkaW5nQXNzZXJ0aW9uIHsgZmFsc2UgfTsKKworcHJpdmF0ZToKKyAgICBlbnVt
IGNsYXNzIFN0YXRlIHsKKyAgICAgICAgQmFja2dyb3VuZGVkLCAvLyBDYW4gaG9sZCBhc3NlcnRp
b25zIHVudGlsIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyIGZpcmVzLgorICAgICAg
ICBSZXN1bWVkLCAvLyBDYW4gaG9sZCBhc3NlcnRpb25zIGF0IGFueSB0aW1lLgorICAgICAgICBT
dXNwZW5kZWQsIC8vIENhbiBub3QgaG9sZCBhc3NlcnRpb25zLgorICAgIH07CisKKyAgICB2aXJ0
dWFsIHZvaWQgaG9sZE5vdygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU5vdygpID0g
MDsKKworICAgIHZvaWQgaG9sZCgpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHZvaWQgcmVs
ZWFzZVRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHN1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1l
ckZpcmVkKCk7CisgICAgdm9pZCBzdXNwZW5kTm93KCk7CisKKyAgICB1aW50NjRfdCBtX2Fzc2Vy
dGlvbkNvdW50IHsgMCB9OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3VzcGVuZGVkIH07
CisgICAgV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3JlbGVhc2VUaW1lcjsKKyAg
ICBXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyIG1fc3VzcGVuZEFmdGVyQmFja2dyb3Vu
ZGluZ1RpbWVyOworfTsKKworY2xhc3MgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIGZpbmFs
IDogcHVibGljIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24geworcHVibGljOgorICAgIGV4cGxp
Y2l0IEJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbihJRFNTZXJ2aWNlICopOworCisgICAgdm9p
ZCBzdXNwZW5kKFN1c3BlbnNpb25SZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBob2xkTm93KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxl
YXNlTm93KCkgb3ZlcnJpZGU7CisKKyAgICBSZXRhaW5QdHI8SURTU2VydmljZT4gbV9pZHNTZXJ2
aWNlOworfTsKKworY2xhc3MgV2lGaVByb3hpbWl0eUFzc2VydGlvbiBmaW5hbCA6IHB1YmxpYyBO
ZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uIHsKK3B1YmxpYzoKKyAgICBXaUZpUHJveGltaXR5QXNz
ZXJ0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBob2xkTm93KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCByZWxlYXNlTm93KCkgb3ZlcnJpZGU7CisKKyAgICBSZXRhaW5QdHI8V2lGaU1hbmFnZXJD
bGllbnRSZWY+IG1fd2lGaU1hbmFnZXJDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNz
ZXJ0aW9uLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQ
cm94aW1pdHlBc3NlcnRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU3MWM2Y2RlMjdjMTFkNjNjMmJkMTgz
NDg5ODdmZjdkODA3MWRlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCkBAIC0wLDAgKzEs
MjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3b3Jr
UHJveGltaXR5QXNzZXJ0aW9uLmgiCisKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcp
CisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW1w
b3J0ICJOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oIgorI2ltcG9ydCA8SURTL0lEU19Qcml2YXRl
Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyBhdXRvIGFzc2VydGlvblJlbGVhc2VEZWxheUFmdGVyQmFja2dyb3VuZGluZyA9IDEwX3M7
CitzdGF0aWMgYXV0byBhc3NlcnRpb25SZWxlYXNlRGVsYXlGb3JIeXN0ZXJlc2lzID0gMTBfczsK
KworTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbigp
CisgICAgOiBtX3JlbGVhc2VUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bjo6cmVsZWFzZVRpbWVyRmlyZWQsIGFzc2VydGlvblJlbGVhc2VEZWxheUZvckh5c3RlcmVzaXMg
fQorICAgICwgbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIgeyAqdGhpcywgJk5ldHdv
cmtQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lckZpcmVk
LCBhc3NlcnRpb25SZWxlYXNlRGVsYXlBZnRlckJhY2tncm91bmRpbmcgfQoreworfQorCit2b2lk
IE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb246OmhvbGQoKQoreworICAgICsrbV9hc3NlcnRpb25D
b3VudDsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAg
QVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7CisgICAgICAgIEFTU0VSVCghbV9yZWxlYXNl
VGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3Jv
dW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX3JlbGVhc2VUaW1lci5z
dG9wKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9hc3NlcnRpb25Db3Vu
dCA9PSAxKQorICAgICAgICBob2xkTm93KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFz
c2VydGlvbjo6cmVsZWFzZSgpCit7CisgICAgQVNTRVJUKG1fYXNzZXJ0aW9uQ291bnQpOworICAg
IGlmICghbV9hc3NlcnRpb25Db3VudCB8fCAtLW1fYXNzZXJ0aW9uQ291bnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAg
QVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7CisgICAgICAgIEFTU0VSVCghbV9yZWxlYXNl
VGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3Jv
dW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X3JlbGVhc2VUaW1lci5yZXN0YXJ0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2Vy
dGlvbjo6cmVzdW1lKFJlc3VtcHRpb25SZWFzb24pCit7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7
CisgICAgY2FzZSBTdGF0ZTo6QmFja2dyb3VuZGVkOgorICAgICAgICBtX3N1c3BlbmRBZnRlckJh
Y2tncm91bmRpbmdUaW1lci5zdG9wKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6
OlJlc3VtZWQ6CisgICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGlt
ZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlN1c3BlbmRl
ZDoKKyAgICAgICAgQVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7CisgICAgICAgIEFTU0VS
VCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIEFTU0VSVCghbV9zdXNwZW5k
QWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIGhvbGROb3coKTsK
KyAgICAgICAgaWYgKCFtX2Fzc2VydGlvbkNvdW50KQorICAgICAgICAgICAgbV9yZWxlYXNlVGlt
ZXIucmVzdGFydCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3Rh
dGU6OlJlc3VtZWQ7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVu
ZChTdXNwZW5zaW9uUmVhc29uIHJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIHN3aXRjaCAocmVhc29uKSB7CisgICAgY2FzZSBTdXNw
ZW5zaW9uUmVhc29uOjpQcm9jZXNzQmFja2dyb3VuZGluZzoKKyAgICAgICAgLy8gVGhlIE5ldHdv
cmtpbmcgcHJvY2VzcyBpcyBiZWluZyBiYWNrZ3JvdW5kZWQuIFdlIHNob3VsZCBkcm9wIG91ciBh
c3NlcnRpb25zCisgICAgICAgIC8vIHNvb24sIGluIGNhc2UgdGhlIHN5c3RlbSBzdXNwZW5kcyB0
aGUgcHJvY2VzcyBiZWZvcmUgd2UgcmVjZWl2ZSBQcm9jZXNzU3VzcGVuZGluZy4KKyAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpCYWNrZ3JvdW5kZWQ7CisgICAgICAgIG1fc3VzcGVuZEFmdGVyQmFj
a2dyb3VuZGluZ1RpbWVyLnJlc3RhcnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdXNw
ZW5zaW9uUmVhc29uOjpQcm9jZXNzU3VzcGVuZGluZzoKKyAgICAgICAgLy8gVGhlIE5ldHdvcmtp
bmcgcHJvY2VzcyBpcyBiZWluZyBzdXNwZW5kZWQsIHNvIHdlIG5lZWQgdG8gZHJvcCBvdXIgYXNz
ZXJ0aW9ucworICAgICAgICAvLyBpbW1lZGlhdGVseSBiZWZvcmUgdGhhdCBoYXBwZW5zLgorICAg
ICAgICBzdXNwZW5kTm93KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVu
ZE5vdygpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7CisgICAgbV9yZWxlYXNl
VGltZXIuc3RvcCgpOworICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyLnN0b3Ao
KTsKKyAgICByZWxlYXNlTm93KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlv
bjo6cmVsZWFzZVRpbWVyRmlyZWQoKQoreworICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNB
Y3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX2Fzc2VydGlvbkNvdW50KTsKKyAgICBBU1NFUlQobV9z
dGF0ZSAhPSBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICByZWxlYXNlTm93KCk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVy
RmlyZWQoKQoreworICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIu
aXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7Cisg
ICAgc3VzcGVuZE5vdygpOworfQorCitCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OkJsdWV0
b290aFByb3hpbWl0eUFzc2VydGlvbihJRFNTZXJ2aWNlICppZHNTZXJ2aWNlKQorICAgIDogbV9p
ZHNTZXJ2aWNlIHsgaWRzU2VydmljZSB9Cit7Cit9CisKK3ZvaWQgQmx1ZXRvb3RoUHJveGltaXR5
QXNzZXJ0aW9uOjpzdXNwZW5kKFN1c3BlbnNpb25SZWFzb24gcmVhc29uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byB3YXNIb2xkaW5n
QXNzZXJ0aW9uID0gbV9pc0hvbGRpbmdBc3NlcnRpb247CisgICAgTmV0d29ya1Byb3hpbWl0eUFz
c2VydGlvbjo6c3VzcGVuZChyZWFzb24sIFtdIHsgfSk7CisKKyAgICBzd2l0Y2ggKHJlYXNvbikg
eworICAgIGNhc2UgU3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc0JhY2tncm91bmRpbmc6CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VzcGVu
c2lvblJlYXNvbjo6UHJvY2Vzc1N1c3BlbmRpbmc6CisgICAgICAgIEFTU0VSVCghbV9pc0hvbGRp
bmdBc3NlcnRpb24pOworICAgICAgICBpZiAoIXdhc0hvbGRpbmdBc3NlcnRpb24pIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIElEUyBwcm9jZXNzZXMgLXNldExpbmtQcmVmZXJlbmNlczogb24gYSBi
YWNrZ3JvdW5kIGRpc3BhdGNoIHF1ZXVlIGFuZCBwcm92aWRlcyBubworICAgICAgICAvLyBjb21w
bGV0aW9uIGhhbmRsZXIuIElmIHdlIHN1c3BlbmQgYmVmb3JlIElEUyBmaW5pc2hlcyBzZXR0aW5n
IGxpbmsgcHJlZmVyZW5jZXMsIHRoZQorICAgICAgICAvLyBCbHVldG9vdGggcmFkaW8gbWlnaHQg
c3RheSBpbiBhIGhpZ2ggcG93ZXIgbW9kZSwgaGFybWluZyBiYXR0ZXJ5IGxpZmUuIERlbGF5IHN1
c3BlbnNpb24KKyAgICAgICAgLy8gYnkgMzAgc2Vjb25kcyB0byBlbnN1cmUgLXNldExpbmtQcmVm
ZXJlbmNlczogYWx3YXlzIGZpbmlzaGVzIGl0cyB3b3JrLgorICAgICAgICBkaXNwYXRjaF9hZnRl
cihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAzMCAqIE5TRUNfUEVSX1NFQyksIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK3ZvaWQgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpob2xkTm93KCkKK3sKKyAg
ICBpZiAobV9pc0hvbGRpbmdBc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVB
U0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJIb2xkaW5nIEJsdWV0b290aCBDbGFzc2ljIGFz
c2VydGlvbi4iKTsKKyAgICBbbV9pZHNTZXJ2aWNlIHNldExpbmtQcmVmZXJlbmNlczpAeyBJRFNM
aW5rUHJlZmVyZW5jZU9wdGlvblBhY2tldHNQZXJTZWNvbmRLZXkgOiBAKDIwMCkgfV07CisgICAg
bV9pc0hvbGRpbmdBc3NlcnRpb24gPSB0cnVlOworfQorCit2b2lkIEJsdWV0b290aFByb3hpbWl0
eUFzc2VydGlvbjo6cmVsZWFzZU5vdygpCit7CisgICAgaWYgKCFtX2lzSG9sZGluZ0Fzc2VydGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2lu
ZywgIlJlbGVhc2luZyBCbHVldG9vdGggQ2xhc3NpYyBhc3NlcnRpb24uIik7CisgICAgW21faWRz
U2VydmljZSBzZXRMaW5rUHJlZmVyZW5jZXM6QHsgSURTTGlua1ByZWZlcmVuY2VPcHRpb25QYWNr
ZXRzUGVyU2Vjb25kS2V5IDogQCgwKSB9XTsKKyAgICBtX2lzSG9sZGluZ0Fzc2VydGlvbiA9IGZh
bHNlOworfQorCitXaUZpUHJveGltaXR5QXNzZXJ0aW9uOjpXaUZpUHJveGltaXR5QXNzZXJ0aW9u
KCkKKyAgICA6IG1fd2lGaU1hbmFnZXJDbGllbnQgeyBhZG9wdENGKFdpRmlNYW5hZ2VyQ2xpZW50
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtXaUZpQ2xpZW50VHlwZU5vcm1hbCkpIH0KK3sK
K30KKwordm9pZCBXaUZpUHJveGltaXR5QXNzZXJ0aW9uOjpob2xkTm93KCkKK3sKKyAgICBpZiAo
bV9pc0hvbGRpbmdBc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9H
KFByb3hpbWl0eU5ldHdvcmtpbmcsICJIb2xkaW5nIFdpLUZpIGFzc2VydGlvbi4iKTsKKyAgICBB
U1NFUlQoV2lGaU1hbmFnZXJDbGllbnRHZXRUeXBlKG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0KCkp
ID09IGtXaUZpQ2xpZW50VHlwZU5vcm1hbCk7CisgICAgV2lGaU1hbmFnZXJDbGllbnRTZXRUeXBl
KG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0KCksIGtXaUZpQ2xpZW50VHlwZURpcmVjdFRvQ2xvdWQp
OworICAgIG1faXNIb2xkaW5nQXNzZXJ0aW9uID0gdHJ1ZTsKK30KKwordm9pZCBXaUZpUHJveGlt
aXR5QXNzZXJ0aW9uOjpyZWxlYXNlTm93KCkKK3sKKyAgICBpZiAoIW1faXNIb2xkaW5nQXNzZXJ0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3Jr
aW5nLCAiUmVsZWFzaW5nIFdpLUZpIGFzc2VydGlvbi4iKTsKKyAgICBBU1NFUlQoV2lGaU1hbmFn
ZXJDbGllbnRHZXRUeXBlKG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0KCkpID09IGtXaUZpQ2xpZW50
VHlwZURpcmVjdFRvQ2xvdWQpOworICAgIFdpRmlNYW5hZ2VyQ2xpZW50U2V0VHlwZShtX3dpRmlN
YW5hZ2VyQ2xpZW50LmdldCgpLCBrV2lGaUNsaWVudFR5cGVOb3JtYWwpOworICAgIG1faXNIb2xk
aW5nQXNzZXJ0aW9uID0gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFn
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYTcwM2E0NmUwZWRjMWVmOTA1NWM1YmMwMWFkMDY1MzA1MmZjMTM4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9z
L05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKworI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBJRFNTZXJ2aWNlOworT0JKQ19DTEFTUyBO
U0FycmF5OworT0JKQ19DTEFTUyBOU1VSTFJlcXVlc3Q7CitPQkpDX0NMQVNTIFdLUHJveGltaXR5
U2VydmljZURlbGVnYXRlOworT0JKQ19DTEFTUyBXUk1faVJBVEludGVyZmFjZTsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgQ2hpbGRQcm9jZXNzOworY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2E7
CitlbnVtIGNsYXNzIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiA6IHVpbnQ4X3Q7CisK
K2VudW0gY2xhc3MgUmVzdW1wdGlvblJlYXNvbiA6IHVpbnQ4X3QgeworICAgIFByb2Nlc3NGb3Jl
Z3JvdW5kaW5nLAorICAgIFByb2Nlc3NSZXN1bWluZywKK307CisKK2VudW0gY2xhc3MgU3VzcGVu
c2lvblJlYXNvbiA6IHVpbnQ4X3QgeworICAgIFByb2Nlc3NCYWNrZ3JvdW5kaW5nLAorICAgIFBy
b2Nlc3NTdXNwZW5kaW5nCit9OworCitjbGFzcyBOZXR3b3JrUHJveGltaXR5U2VydmljZUNsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB2b2lkIGRldmljZXNDaGFuZ2VkKE5TQXJyYXkgKmRl
dmljZXMpID0gMDsKK307CisKK2NsYXNzIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyIGZpbmFsIDog
cHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHJpdmF0ZSBOZXR3b3JrUHJveGltaXR5
U2VydmljZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
KENoaWxkUHJvY2VzcyYpOworICAgIH5OZXR3b3JrUHJveGltaXR5TWFuYWdlcigpOworCisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKKyAgICB2b2lkIGFwcGx5UHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBOZXR3b3JrRGF0YVRhc2tD
b2NvYSYsIE5TVVJMUmVxdWVzdCAqJik7CisgICAgdm9pZCByZXN1bWUoUmVzdW1wdGlvblJlYXNv
bik7CisgICAgdm9pZCBzdXNwZW5kKFN1c3BlbnNpb25SZWFzb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CisKK3ByaXZhdGU6CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7CisgICAgICAg
IEJhY2tncm91bmRlZCwKKyAgICAgICAgRm9yZWdyb3VuZGVkLAorICAgICAgICBJbml0aWFsaXpl
ZCwKKyAgICAgICAgUmVzdW1lZCwKKyAgICAgICAgU3VzcGVuZGVkLAorICAgIH07CisKKyAgICBi
b29sIGlzQ29tcGFuaW9uSW5Qcm94aW1pdHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ29tcGFuaW9u
SW5Qcm94aW1pdHk7IH0KKyAgICBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb24gcmVjb21t
ZW5kYXRpb24oKSBjb25zdDsKKyAgICBib29sIHNob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5OyB9CisK
KyAgICB2b2lkIHByb2Nlc3NSZWNvbW1lbmRhdGlvbnMoTlNBcnJheSAqcmVjb21tZW5kYXRpb25z
KTsKKyAgICB2b2lkIHJlc3VtZVJlY29tbWVuZGF0aW9ucygpOworICAgIHZvaWQgc3VzcGVuZFJl
Y29tbWVuZGF0aW9ucyhTdGF0ZSBvbGRTdGF0ZSk7CisgICAgdm9pZCB1cGRhdGVDb21wYW5pb25Q
cm94aW1pdHkoKTsKKyAgICB2b2lkIHVwZGF0ZVJlY29tbWVuZGF0aW9uKCk7CisKKyAgICAvLyBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKKworICAgIC8vIE5ldHdvcmtQ
cm94aW1pdHlTZXJ2aWNlQ2xpZW50CisgICAgdm9pZCBkZXZpY2VzQ2hhbmdlZChOU0FycmF5ICpk
ZXZpY2VzKSBvdmVycmlkZTsKKworICAgIHVuc2lnbmVkIG1fY29udGV4dElkZW50aWZpZXIgeyAw
IH07CisgICAgYm9vbCBtX2lzQ29tcGFuaW9uSW5Qcm94aW1pdHkgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9zaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHkgeyBmYWxzZSB9OworICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6SW5pdGlhbGl6ZWQgfTsKKyAgICBSZXRhaW5QdHI8V1JNX2lSQVRJ
bnRlcmZhY2U+IG1faVJBVEludGVyZmFjZTsKKyAgICBSZXRhaW5QdHI8SURTU2VydmljZT4gbV9p
ZHNTZXJ2aWNlOworICAgIFJldGFpblB0cjxXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZT4gbV9p
ZHNTZXJ2aWNlRGVsZWdhdGU7CisgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9y
ZWNvbW1lbmRhdGlvblF1ZXVlOworICAgIEJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbiBtX2Js
dWV0b290aFByb3hpbWl0eUFzc2VydGlvbjsKKyAgICBXaUZpUHJveGltaXR5QXNzZXJ0aW9uIG1f
d2lGaVByb3hpbWl0eUFzc2VydGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlN
YW5hZ2VyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNmQyMWFiOWRhYzYxZjljNzA2ZTkzMDc3NWVhNDFiZWVh
MmI1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dh
dGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0KQEAgLTAsMCArMSwzMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyLmgiCisKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisKKyNpbXBvcnQgIkxv
Z2dpbmcuaCIKKyNpbXBvcnQgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCisjaW1wb3J0ICJOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCA8SURTL0lEUy5oPgorI2lt
cG9ydCA8V2lyZWxlc3NDb2V4TWFuYWdlci9XUk1faVJBVEludGVyZmFjZS5oPgorI2ltcG9ydCA8
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2lt
cG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3Rz
Q0YuaD4KKworV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChTQ05ldHdvcmtJbnRlcmZhY2UpOwor
CitAaW50ZXJmYWNlIFdLUHJveGltaXR5U2VydmljZURlbGVnYXRlIDogTlNPYmplY3QgPElEU1Nl
cnZpY2VEZWxlZ2F0ZT4KKy0gKHZvaWQpc2V0Q2xpZW50OihXZWJLaXQ6Ok5ldHdvcmtQcm94aW1p
dHlTZXJ2aWNlQ2xpZW50KiljbGllbnQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1Byb3hp
bWl0eVNlcnZpY2VEZWxlZ2F0ZSB7CisgICAgV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5U2Vydmlj
ZUNsaWVudCogX2NsaWVudDsKK30KKworLSAodm9pZClzZXRDbGllbnQ6KFdlYktpdDo6TmV0d29y
a1Byb3hpbWl0eVNlcnZpY2VDbGllbnQqKWNsaWVudAoreworICAgIF9jbGllbnQgPSBjbGllbnQ7
Cit9CisKKy0gKHZvaWQpc2VydmljZTooSURTU2VydmljZSAqKXNlcnZpY2UgZGV2aWNlc0NoYW5n
ZWQ6KE5TQXJyYXkgKilkZXZpY2VzCit7CisgICAgaWYgKF9jbGllbnQpCisgICAgICAgIF9jbGll
bnQtPmRldmljZXNDaGFuZ2VkKGRldmljZXMpOworfQorCistICh2b2lkKXNlcnZpY2U6KElEU1Nl
cnZpY2UgKilzZXJ2aWNlIG5lYXJieURldmljZXNDaGFuZ2VkOihOU0FycmF5ICopZGV2aWNlcwor
eworICAgIGlmIChfY2xpZW50KQorICAgICAgICBfY2xpZW50LT5kZXZpY2VzQ2hhbmdlZChkZXZp
Y2VzKTsKK30KKworQGVuZAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBOZXR3
b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb24gOiB1aW50OF90IHsKKyAgICBCbHVldG9vdGgsCisg
ICAgTm9uZSwKKyAgICBXaUZpLAorfTsKKworTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6Ok5ldHdv
cmtQcm94aW1pdHlNYW5hZ2VyKENoaWxkUHJvY2VzcyYpCisgICAgOiBtX2lkc1NlcnZpY2UgeyBh
ZG9wdE5TKFtbSURTU2VydmljZSBhbGxvY10gaW5pdFdpdGhTZXJ2aWNlOkAiY29tLmFwcGxlLnBy
aXZhdGUuYWxsb3kud2Via2l0bmV0d29ya2luZyJdKSB9CisgICAgLCBtX2lkc1NlcnZpY2VEZWxl
Z2F0ZSB7IGFkb3B0TlMoW1tXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
IH0KKyAgICAsIG1fcmVjb21tZW5kYXRpb25RdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hf
cXVldWVfY3JlYXRlKCJXZWJLaXQgTmV0d29yayBQcm94aW1pdHkgUmVjb21tZW5kYXRpb24gUXVl
dWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CisgICAgLCBtX2JsdWV0b290aFByb3hpbWl0
eUFzc2VydGlvbiB7IG1faWRzU2VydmljZS5nZXQoKSB9Cit7CisgICAgW21faWRzU2VydmljZURl
bGVnYXRlIHNldENsaWVudDp0aGlzXTsKKyAgICBbbV9pZHNTZXJ2aWNlIGFkZERlbGVnYXRlOm1f
aWRzU2VydmljZURlbGVnYXRlLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCld
OworfQorCitOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6fk5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
KCkKK3sKKyAgICBbbV9pZHNTZXJ2aWNlRGVsZWdhdGUgc2V0Q2xpZW50Om51bGxwdHJdOworfQor
Citjb25zdCBjaGFyKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQor
eworICAgIHJldHVybiAiTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIiOworfQorCitzdGF0aWMgdm9p
ZCBiaW5kUmVxdWVzdFRvV2lGaShOU1VSTFJlcXVlc3QgKiYgcmVxdWVzdCkKK3sKKyAgICBzdGF0
aWMgTlNTdHJpbmcgKndpRmlJbnRlcmZhY2VJZGVudGlmaWVyID0gW10oKSAtPiBOU1N0cmluZyAq
IHsKKyAgICAgICAgYXV0byBpbnRlcmZhY2VzID0gYWRvcHRDRihTQ05ldHdvcmtJbnRlcmZhY2VD
b3B5QWxsKCkpOworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdl
dENvdW50KGludGVyZmFjZXMuZ2V0KCkpOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAg
YXV0byBpbnRlcmZhY2UgPSBjaGVja2VkX2NmX2Nhc3Q8U0NOZXR3b3JrSW50ZXJmYWNlUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGludGVyZmFjZXMuZ2V0KCksIGkpKTsKKyAgICAgICAgICAg
IGlmICghQ0ZFcXVhbChTQ05ldHdvcmtJbnRlcmZhY2VHZXRJbnRlcmZhY2VUeXBlKGludGVyZmFj
ZSksIGtTQ05ldHdvcmtJbnRlcmZhY2VUeXBlSUVFRTgwMjExKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gcmV0YWluUHRyKFNDTmV0
d29ya0ludGVyZmFjZUdldEJTRE5hbWUoaW50ZXJmYWNlKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiRGV0ZXJtaW5lZCBXaS1GaSBpbnRlcmZhY2UgaWRl
bnRpZmllciBpcyAlQC4iLCBpZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiAo
TlNTdHJpbmcgKilpZGVudGlmaWVyLmxlYWtSZWYoKTsKKyAgICAgICAgfQorCisgICAgICAgIFJF
TEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJGYWlsZWQgdG8gZGV0ZXJtaW5lIFdpLUZp
IGludGVyZmFjZSBpZGVudGlmaWVyLiIpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0oKTsK
KworICAgIGlmICghd2lGaUludGVyZmFjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdE5TKFtyZXF1ZXN0IG11dGFibGVDb3B5XSk7
CisgICAgW211dGFibGVSZXF1ZXN0IHNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjp3aUZpSW50
ZXJmYWNlSWRlbnRpZmllcl07CisgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmF1dG9yZWxl
YXNlKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OmFwcGx5UHJvcGVydGll
cyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrQ29jb2EmIGRhdGFUYXNrLCBOU1VSTFJlcXVlc3QgKiYgbnNSZXF1ZXN0KQorewor
ICAgIC8vIElmIHRoZSBjbGllbnQgaGFzIGFscmVhZHkgYm91bmQgdGhlIHJlcXVlc3QgdG8gYW4g
aWRlbnRpZmllciwgZG9uJ3Qgb3ZlcnJpZGUgaXQuCisgICAgaWYgKG5zUmVxdWVzdC5ib3VuZElu
dGVyZmFjZUlkZW50aWZpZXIubGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZGF0
YVRhc2suaXNUb3BMZXZlbE5hdmlnYXRpb24oKSkKKyAgICAgICAgdXBkYXRlUmVjb21tZW5kYXRp
b24oKTsKKworICAgIHN3aXRjaCAocmVjb21tZW5kYXRpb24oKSkgeworICAgIGNhc2UgTmV0d29y
a1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpCbHVldG9vdGg6CisgICAgICAgIGRhdGFUYXNrLmhv
bGRQcm94aW1pdHlBc3NlcnRpb24obV9ibHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24pOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Tm9u
ZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRp
b246OldpRmk6CisgICAgICAgIGRhdGFUYXNrLmhvbGRQcm94aW1pdHlBc3NlcnRpb24obV93aUZp
UHJveGltaXR5QXNzZXJ0aW9uKTsKKyAgICAgICAgYmluZFJlcXVlc3RUb1dpRmkobnNSZXF1ZXN0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyOjpyZXN1bWUoUmVzdW1wdGlvblJlYXNvbiByZWFzb24pCit7CisgICAgc3dpdGNoIChyZWFz
b24pIHsKKyAgICBjYXNlIFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NGb3JlZ3JvdW5kaW5nOgor
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkZvcmVncm91bmRlZDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBSZXN1bXB0aW9uUmVhc29uOjpQcm9jZXNzUmVzdW1pbmc6CisgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6UmVzdW1lZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmVzdW1l
UmVjb21tZW5kYXRpb25zKCk7CisKKyAgICBzd2l0Y2ggKHJlY29tbWVuZGF0aW9uKCkpIHsKKyAg
ICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Qmx1ZXRvb3RoOgorICAgICAg
ICBtX2JsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbi5yZXN1bWUocmVhc29uKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246Ok5vbmU6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpX
aUZpOgorICAgICAgICBtX3dpRmlQcm94aW1pdHlBc3NlcnRpb24ucmVzdW1lKHJlYXNvbik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6
c3VzcGVuZChTdXNwZW5zaW9uUmVhc29uIHJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gb2xkU3RhdGUgPSBtX3N0YXRlOwor
ICAgIHN3aXRjaCAocmVhc29uKSB7CisgICAgY2FzZSBTdXNwZW5zaW9uUmVhc29uOjpQcm9jZXNz
QmFja2dyb3VuZGluZzoKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpCYWNrZ3JvdW5kZWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc1N1c3BlbmRp
bmc6CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3VzcGVuZGVkOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBzdXNwZW5kUmVjb21tZW5kYXRpb25zKG9sZFN0YXRlKTsKKworICAgIGF1
dG8gd3JhcHBlZENvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJG
aW5pc2hlZCBzdXNwZW5kaW5nIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyIChzdGF0ZTogJXUpLiIs
IG1fc3RhdGUpOworICAgIH07CisKKyAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5n
LCAiU3VzcGVuZGluZyBOZXR3b3JrUHJveGltaXR5TWFuYWdlciAoc3RhdGU6ICV1KS4iLCBtX3N0
YXRlKTsKKyAgICBtX2JsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbi5zdXNwZW5kKHJlYXNvbiwg
V1RGTW92ZSh3cmFwcGVkQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3dpRmlQcm94aW1pdHlB
c3NlcnRpb24uc3VzcGVuZChyZWFzb24sIFtdIHsgfSk7Cit9CisKK05ldHdvcmtQcm94aW1pdHlS
ZWNvbW1lbmRhdGlvbiBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cmVjb21tZW5kYXRpb24oKSBj
b25zdAoreworICAgIGlmICghaXNDb21wYW5pb25JblByb3hpbWl0eSgpKQorICAgICAgICByZXR1
cm4gTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25lOworCisgICAgaWYgKHNob3Vs
ZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSgpKQorICAgICAgICByZXR1cm4gTmV0d29ya1Byb3hp
bWl0eVJlY29tbWVuZGF0aW9uOjpXaUZpOworCisgICAgcmV0dXJuIE5ldHdvcmtQcm94aW1pdHlS
ZWNvbW1lbmRhdGlvbjo6Qmx1ZXRvb3RoOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyOjpwcm9jZXNzUmVjb21tZW5kYXRpb25zKE5TQXJyYXkgKnJlY29tbWVuZGF0aW9ucykKK3sK
KyAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9IGZhbHNlOworICAgIGJvb2wg
ZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uID0gZmFsc2U7CisgICAgZm9yIChXUk1faVJB
VFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICpyZWNvbW1lbmRhdGlvbiBpbiByZWNvbW1lbmRhdGlv
bnMpIHsKKyAgICAgICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbi5SZWNvbW1lbmRhdGlvblR5cGUp
IHsKKyAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtUeXBlQlQ6CisgICAgICAgIGNh
c2UgV1JNUmVjb21tZW5kYXRpb25MaW5rVHlwZUNvbXBhbmlvbldpZmk6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtUeXBlRGlyZWN0V2lmaToK
KyAgICAgICAgICAgIEFTU0VSVCghZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uKTsKKyAg
ICAgICAgICAgIGRpZFNlZURpcmVjdFdpRmlSZWNvbW1lbmRhdGlvbiA9IHRydWU7CisgICAgICAg
ICAgICBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eSA9IHJlY29tbWVuZGF0aW9uLmxp
bmtSZWNvbW1lbmRhdGlvbklzVmFsaWQgJiYgcmVjb21tZW5kYXRpb24ubGlua0lzUmVjb21tZW5k
ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFJFTEVBU0Vf
TE9HKFByb3hpbWl0eU5ldHdvcmtpbmcsICJQcm9jZXNzZWQgaVJBVE1hbmFnZXIgcmVjb21tZW5k
YXRpb25zIChzaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHk6ICVkKS5cbiIsIG1fc2hvdWxk
VXNlRGlyZWN0V2lGaUluUHJveGltaXR5KTsKK30KKworc3RhdGljIFdDTVByb2Nlc3NJZCB0b1By
b2Nlc3NJRCh1bnNpZ25lZCBjb250ZXh0SWRlbnRpZmllcikKK3sKKyAgICBzd2l0Y2ggKGNvbnRl
eHRJZGVudGlmaWVyKSB7CisgICAgY2FzZSBXUk1XZWJraXQ6CisgICAgICAgIHJldHVybiBXUk1X
ZWJraXQ7CisgICAgY2FzZSBXUk1XZWJraXRNYWlsOgorICAgICAgICByZXR1cm4gV1JNV2Via2l0
TWFpbDsKKyAgICBjYXNlIFdSTVdlYmtpdE5vdGlmaWNhdGlvbjoKKyAgICAgICAgcmV0dXJuIFdS
TVdlYmtpdE5vdGlmaWNhdGlvbjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV0NNVW5r
bm93bjsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZVJl
Y29tbWVuZGF0aW9ucygpCit7CisgICAgaWYgKG1faVJBVEludGVyZmFjZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgdXBkYXRlQ29tcGFuaW9uUHJveGltaXR5KCk7CisKKyAgICBhdXRvIHByb2Nl
c3NJRCA9IHRvUHJvY2Vzc0lEKG1fY29udGV4dElkZW50aWZpZXIpOworICAgIGlmIChwcm9jZXNz
SUQgPT0gV0NNVW5rbm93bikgeworICAgICAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3Jr
aW5nLCAiSW52YWxpZCBXQ00gcHJvY2VzcyBJRCAoJWQpLiIsIG1fY29udGV4dElkZW50aWZpZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0
d29ya2luZywgIlJlZ2lzdGVyaW5nIHdpdGggaVJBVE1hbmFnZXIgKFdDTSBwcm9jZXNzIElEOiAl
ZCwgc3RhdGU6ICV1KS4iLCBwcm9jZXNzSUQsIG1fc3RhdGUpOworICAgIG1faVJBVEludGVyZmFj
ZSA9IGFkb3B0TlMoW1tXUk1faVJBVEludGVyZmFjZSBhbGxvY10gaW5pdF0pOworICAgIFttX2lS
QVRJbnRlcmZhY2UgcmVnaXN0ZXJDbGllbnQ6cHJvY2Vzc0lEIHF1ZXVlOm1fcmVjb21tZW5kYXRp
b25RdWV1ZS5nZXQoKV07CisgICAgdXBkYXRlUmVjb21tZW5kYXRpb24oKTsKK30KKwordm9pZCBO
ZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6c3VzcGVuZFJlY29tbWVuZGF0aW9ucyhTdGF0ZSBvbGRT
dGF0ZSkKK3sKKyAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIGZvcmVncm91bmQtdG8tYmFja2dyb3Vu
ZCB0cmFuc2l0aW9uLCBhdm9pZCB1bnJlZ2lzdGVyaW5nLiBQYWdlIGxvYWRzIGNhbgorICAgIC8v
IG9mdGVuIGNhdXNlIHRoZSBuZXR3b3JrIHByb2Nlc3MgdG8gcmVzdW1lLCB0cmFuc2l0aW9uIHRv
IHRoZSBiYWNrZ3JvdW5kLCB0aGVuIHRyYW5zaXRpb24gdG8KKyAgICAvLyB0aGUgZm9yZWdyb3Vu
ZCBpbiByYXBpZCBzdWNjZXNzaW9uLCBjYXVzaW5nIHVubmVjZXNzYXJ5IGlSQVRNYW5hZ2VyIHJl
Z2lzdHJhdGlvbiBjaHVybiBhbmQKKyAgICAvLyBleHBvc2luZyBidWdzIHN1Y2ggYXMgPHJkYXI6
Ly9wcm9ibGVtLzQyNTYwMzIwPi4KKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QmFja2dyb3Vu
ZGVkICYmIG9sZFN0YXRlICE9IFN0YXRlOjpGb3JlZ3JvdW5kZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghbV9pUkFUSW50ZXJmYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxF
QVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiVW5yZWdpc3RlcmluZyB3aXRoIGlSQVRNYW5h
Z2VyIChXQ00gcHJvY2VzcyBJRDogJWQsIHN0YXRlOiAldSkuIiwgbV9jb250ZXh0SWRlbnRpZmll
ciwgbV9zdGF0ZSk7CisgICAgW21faVJBVEludGVyZmFjZSB1bnJlZ2lzdGVyQ2xpZW50XTsKKyAg
ICBtX2lSQVRJbnRlcmZhY2UgPSBuaWw7CisgICAgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5ID0g
ZmFsc2U7CisgICAgbV9zaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHkgPSBmYWxzZTsKK30K
Kwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6dXBkYXRlQ29tcGFuaW9uUHJveGltaXR5
KCkKK3sKKyAgICBtX2lzQ29tcGFuaW9uSW5Qcm94aW1pdHkgPSBmYWxzZTsKKyAgICBmb3IgKElE
U0RldmljZSAqZGV2aWNlIGluIFttX2lkc1NlcnZpY2UgZGV2aWNlc10pIHsKKyAgICAgICAgaWYg
KGRldmljZS5pc0RlZmF1bHRQYWlyZWREZXZpY2UgJiYgZGV2aWNlLmlzTmVhcmJ5KSB7CisgICAg
ICAgICAgICBtX2lzQ29tcGFuaW9uSW5Qcm94aW1pdHkgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3Jr
aW5nLCAiRGV0ZXJtaW5lZCBjb21wYW5pb24gcHJveGltaXR5IChpc0NvbXBhbmlvbkluUHJveGlt
aXR5OiAlZCkuIiwgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5KTsKK30KKwordm9pZCBOZXR3b3Jr
UHJveGltaXR5TWFuYWdlcjo6dXBkYXRlUmVjb21tZW5kYXRpb24oKQoreworICAgIGlmICghaXND
b21wYW5pb25JblByb3hpbWl0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faVJB
VEludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJveGltaXR5
TmV0d29ya2luZywgIlJlcXVlc3RpbmcgYW4gaW1tZWRpYXRlIHJlY29tbWVuZGF0aW9uIGZyb20g
aVJBVE1hbmFnZXIuIik7CisKKyAgICBhdXRvIHNlbWFwaG9yZSA9IGFkb3B0T1NPYmplY3QoZGlz
cGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgwKSk7CisgICAgW21faVJBVEludGVyZmFjZSBnZXRQcm94
aW1pdHlMaW5rUmVjb21tZW5kYXRpb246Tk8gcmVjb21tZW5kYXRpb246W3RoaXMsIHNlbWFwaG9y
ZV0oTlNBcnJheTxXUk1faVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICo+ICpyZWNvbW1lbmRh
dGlvbnMpIHsKKyAgICAgICAgcHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhyZWNvbW1lbmRhdGlvbnMp
OworICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKHNlbWFwaG9yZS5nZXQoKSk7Cisg
ICAgfV07CisKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChzZW1hcGhvcmUuZ2V0KCksIGRp
c3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDEgKiBOU0VDX1BFUl9TRUMpKTsKK30KKwor
dm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBtX2NvbnRleHRJZGVu
dGlmaWVyID0gcGFyYW1ldGVycy53aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOworICAgIHJlc3Vt
ZShSZXN1bXB0aW9uUmVhc29uOjpQcm9jZXNzUmVzdW1pbmcpOworfQorCit2b2lkIE5ldHdvcmtQ
cm94aW1pdHlNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChOU0FycmF5ICopCit7CisgICAgdXBkYXRl
Q29tcGFuaW9uUHJveGltaXR5KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCBkYTdjYTU4YjEyNGUzMjAxNzk5MTc3OWQ0Zjg3ZjJhZDQ3OGExYWQxLi45YmMzZTRm
M2QxMWExNzAxNmYyZjgwODgyODJiZmU0MTNlYjljZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dp
bmcuaApAQCAtNjcsNiArNjcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFByb2Nlc3MpIFwKICAg
ICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCiAgICAgTShQcm9jZXNzU3dhcHBpbmcpIFwKKyAgICBN
KFByb3hpbWl0eU5ldHdvcmtpbmcpIFwKICAgICBNKFJlbW90ZUxheWVyVHJlZSkgXAogICAgIE0o
UmVzaXplKSBcCiAgICAgTShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSBcCkBAIC04MSw3ICs4Miw2
IEBAIGV4dGVybiAiQyIgewogICAgIE0oVmlydHVhbE1lbW9yeSkgXAogICAgIE0oVmlzaWJsZVJl
Y3RzKSBcCiAgICAgTShXZWJSVEMpIFwKLSAgICBNKFdpRmlBc3NlcnRpb25zKSBcCiAKIFdFQktJ
VDJfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9Nb2JpbGVXaUZpU1BJLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9pb3MvTW9iaWxlV2lGaVNQSS5oCmluZGV4IGRiY2U5ZDA1OGIxOWJhMGJk
MDdlNWE3Y2Y5M2JjZjkwMWNjOGVjNWMuLjYxYjMwMTZmZTM3Njk4MDkyYThmMWJkNDRmMjk1OTRi
ZWIxOTJlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9Nb2Jp
bGVXaUZpU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL01vYmlsZVdp
RmlTUEkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
IAotI2luY2x1ZGUgPE1vYmlsZVdpRmkvV2lGaU1hbmFnZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxN
b2JpbGVXaUZpL01vYmlsZVdpRmkuaD4KIAogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApp
bmRleCBjYmFlOWI5ZDdlZjk4NTdjYTBlMDMxYWMxYzYyZjFlZjZkMTA2ZDYyLi5hZjE2N2RlNGY5
YTYyYjM3YWIwNjk1OWE3OGY3NDk5MDcxNTY4YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApA
QCAtMTMyLDcgKzEzMiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAgICAgY29weS0+bV9wcm9jZXNzU3dhcHNPbk5hdmln
YXRpb24gPSB0aGlzLT5tX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjsKICAgICBjb3B5LT5tX2Fs
d2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMgPSB0aGlzLT5tX2Fsd2F5c0tlZXBBbmRS
ZXVzZVN3YXBwZWRQcm9jZXNzZXM7CiAgICAgY29weS0+bV9wcm9jZXNzU3dhcHNPbldpbmRvd09w
ZW5XaXRoT3BlbmVyID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVy
OwotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRX
T1JLSU5HKQogICAgIGNvcHktPm1fd2lyZWxlc3NDb250ZXh0SWRlbnRpZmllciA9IHRoaXMtPm1f
d2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCmluZGV4IDA0OWMyMTQ1NjI5YmUzN2YwOTQyZTE1MWVmMmM5MjAwN2U0
MzE0YmQuLjU1ODcyMmVlMGYyMTkxOTc2ZDY2NGQyY2FkYzZjY2IxMGEzZWI2M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpT
dHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fY3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyOyB9CiAgICAg
dm9pZCBzZXRDdXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgV1RG
OjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcikgeyBtX2N1
c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllciA9IGN1c3RvbVdlYkNvbnRlbnRT
ZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsgfQogCi0jaWYgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykK
KyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCiAgICAgdW5zaWduZWQgd2lyZWxlc3ND
b250ZXh0SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2lyZWxlc3NDb250ZXh0SWRlbnRp
ZmllcjsgfQogICAgIHZvaWQgc2V0V2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcih1bnNpZ25lZCB3
aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyKSB7IG1fd2lyZWxlc3NDb250ZXh0SWRlbnRpZmllciA9
IHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7IH0KICNlbmRpZgpAQCAtMjA1LDcgKzIwNSw3IEBA
IHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCisjaWYgRU5BQkxFKFBST1hJ
TUlUWV9ORVRXT1JLSU5HKQogICAgIHVuc2lnbmVkIG1fd2lyZWxlc3NDb250ZXh0SWRlbnRpZmll
ciB7IDAgfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQppbmRleCA1
MWIyMDQ5NzAzNzY5YjVhYTA1YzliODc2NmYwNjNmOGZlZWZiZjNlLi44M2ZkZmYxYzM2M2VhY2E1
NGFiNGIxNzliZTYyNWQxODc4OTVhODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bW0KQEAgLTEzOSw3ICsxMzksNyBAQCAtICh2b2lkKXNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFVSTHM6KE5TQXJyYXk8TlNVUkwgKj4gKilhZGRpdGlvbmFsUmVhZEFjYwogICAgIF9wcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhz
KFdURk1vdmUocGF0aHMpKTsKIH0KIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCisjaWYg
RU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQogLSAoTlNVSW50ZWdlcil3aXJlbGVzc0NvbnRl
eHRJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPndp
cmVsZXNzQ29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGNlNTg2ZGMxMzU1ZDZhNDI2
YjRhYTEyZDU5YjIxZjcwYmY3MGUwODYuLmI0NzlmMzhkNmVmZGM4YzRkYzAzMzY2YjU1NWJiM2Q0
NTZhMzBlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhCiAgICAgICAgIHBhcmFtZXRlcnMucmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiA9IHBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lGSV9B
U1NFUlRJT05TKQorI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKICAgICBwYXJhbWV0
ZXJzLndpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPndpcmVsZXNz
Q29udGV4dElkZW50aWZpZXIoKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODY1YWRhOTM1NTZjZjM0M2ZlYTc1MTFi
ZDg4NzU3YjdlYzBlMzc3NC4uMGE3MWQ1Mzk4NzRjYjc2OTNhZGZjZmNiMmE3MTE1NTNiYmRiZTE4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNTkzLDYgKzE1OTMsMTAgQEAKIAkJQTEwMkE3MDgxRUMwRUVFOTAwRDgxRDgyIC8qIGNv
bS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBT
YW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNUUz
OTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIgRVNSLnBs
dWdpbi5zYiAqLzsgfTsKIAkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwNDZFOUYy
MDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovOyB9OwogCQlBMTA0NkVBMjIwNzkyNjMx
MDBGMEM1RDggLyogV0tQREZWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5tbSAq
LzsgfTsKKwkJQTExNDU1QUMyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3Nl
cnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
MTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi87
IH07CisJCUExMTQ1NUFEMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0
aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEx
NDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0gKi87
IH07CisJCUExMTQ1NUIwMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNDU1
QUUyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggKi87IH07CisJ
CUExMTQ1NUIxMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ1NUFGMjEx
RkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSAqLzsgfTsKIAkJQTEx
NURDNzExOTFEODJENzAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZEMTkxRDgy
QUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi87IH07CiAJCUExMTVE
QzcyMTkxRDgyREEwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZFMTkxRDgyQUIw
MERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTE4QTlFRTE5MDdBRDZGMDBGN0M5MkIg
LyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tE
b2N1bWVudERhdGEuY3BwICovOyB9OwpAQCAtMTYxNCw4ICsxNjE4LDYgQEAKIAkJQTFDNTEyQzgx
OTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNTEyQzYxOTA2NTZFNTAwNDQ4
OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwICovOyB9OwogCQlBMUM1MTJDOTE5MDY1
NkU1MDA0NDg5MTQgLyogV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNTEyQzcxOTA2NTZFNTAwNDQ4OTE0IC8q
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaCAqLzsgfTsKIAkJQTFENDIwNDcxREI1NTc4NTAwQkI2
QjBEIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVBMDIzNTFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250
ZXh0TWVudUxpc3RlbmVyLmNwcCAqLzsgfTsKLQkJQTFEQUZEREYyMDdFOUIxNjAwNUU4QTUyIC8q
IFdpRmlBc3NlcnRpb25Ib2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExREFGREREMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0aW9uSG9s
ZGVyLmggKi87IH07Ci0JCUExREFGREUwMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0aW9u
SG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFEQUZEREUyMDdFOUIxNjAwNUU4QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIubW0gKi87IH07
CiAJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzEwMThFMEI3Qzgw
MDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLzsgfTsKIAkJQTFERjYzMTMxOEUwQjdDODAw
M0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGll
bnQuaCAqLzsgfTsKIAkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTY4ODZG
MUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi87IH07CkBAIC00MTk3LDYgKzQx
OTksMTAgQEAKIAkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1h
Yy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXS1BERlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BERlZpZXcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmll
dy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUERGVmlldy5tbTsgcGF0aCA9IGlvcy9XS1BE
RlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMTQ1NUFBMjExRkNGQ0Ew
MENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE0NTVBRTIxMUZEMjUyMDBDQTkzNUIgLyogTmV0
d29ya1Byb3hpbWl0eU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExNDU1QUYyMTFGRDI1MjAw
Q0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExMTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVEQzZFMTkx
RDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xv
b2tEb2N1bWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIxNyw4ICs0MjIzLDYgQEAK
IAkJQTFBNEZFNjAxOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWREZWxlZ2F0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUM1MTJDNjE5MDY1NkU1MDA0NDg5MTQgLyogV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDsgcGF0aCA9IGlvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNTEyQzcxOTA2
NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJldmlld0xvYWRlckNsaWVudC5oOyBwYXRoID0gaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTFE
QUZEREQyMDdFOUIxNjAwNUU4QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2lGaUFzc2VydGlvbkhvbGRlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvY29jb2Ev
V2lGaUFzc2VydGlvbkhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBMURB
RkRERTIwN0U5QjE2MDA1RThBNTIgLyogV2lGaUFzc2VydGlvbkhvbGRlci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdpRmlBc3NlcnRpb25Ib2xkZXIubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9XaUZpQXNzZXJ0aW9uSG9sZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZENsaWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIERv
d25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2Fk
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRTY4ODZGMUY2RTJCQUIw
MDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YXJhbnRpbmVTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1NTMsNiArNjU1Nyw3IEBACiAJCQkJ
RTE3OThDNzYxNkU2ODE1NTAwMjQwMTM5IC8qIEZpbGVBUEkgKi8sCiAJCQkJMkRBOTQ0QkIxODg1
MTFERDAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJCQk1MTBDQzdEQzE2MTM4RTI5MDBEMDNFRDMgLyog
bWFjICovLAorCQkJCUExMTQ1NUExMjExRkNFN0YwMENBOTM1QiAvKiB3YXRjaG9zICovLAogCQkJ
CTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3ZWJydGMgKi8sCiAJCQkJNTNGM0NBQTUyMDZD
NDQzRTAwODY0OTBFIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwICovLAogCQkJCTUzNUJD
QjkwMjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmggKi8sCkBAIC03
MTE3LDggKzcxMjIsNiBAQAogCQkJCTdFQzRGMEY5MThFNEE5NDUwMDgwNTZBRiAvKiBOZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tICovLAogCQkJCTUzMjE1OTUwMURCQUU2RDcwMDU0QUEzQyAvKiBOZXR3
b3JrU2Vzc2lvbkNvY29hLmggKi8sCiAJCQkJNUMyMENCOUIxQkIwRENEMjAwODk1QkIxIC8qIE5l
dHdvcmtTZXNzaW9uQ29jb2EubW0gKi8sCi0JCQkJQTFEQUZEREQyMDdFOUIxNjAwNUU4QTUyIC8q
IFdpRmlBc3NlcnRpb25Ib2xkZXIuaCAqLywKLQkJCQlBMURBRkRERTIwN0U5QjE2MDA1RThBNTIg
LyogV2lGaUFzc2VydGlvbkhvbGRlci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gY29jb2E7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzE4OSw2ICs3MTkyLDE4IEBACiAJCQlwYXRo
ID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMTE0NTVBMTIx
MUZDRTdGMDBDQTkzNUIgLyogd2F0Y2hvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQTExNDU1QUEyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24uaCAqLywKKwkJCQlBMTE0NTVBQjIxMUZDRkNBMDBDQTkzNUIgLyogTmV0
d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbSAqLywKKwkJCQlBMTE0NTVBRTIxMUZEMjUyMDBDQTkz
NUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCAqLywKKwkJCQlBMTE0NTVBRjIxMUZEMjUy
MDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gKi8sCisJCQkpOworCQkJbmFt
ZSA9IHdhdGNob3M7CisJCQlwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvczsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUExODJENUIxMUJFNkJDRjQwMDg3QTdDQyAvKiBp
b3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTI1Niw2
ICs5MjcxLDggQEAKIAkJCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzQTE2M0QxNjMwODhGNjAwNUQ3RDIyIC8q
IE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI2
RUUxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQTExNDU1QUMyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlB
c3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUExMTQ1NUIwMjExRkQyNTIwMENBOTM1QiAv
KiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGRDE4QjYx
NjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTE1MjU1MUIxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZGMDFDMjNGODA5MDBENDExODMgLyog
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTY0NCw3
ICs5NjYxLDYgQEAKIAkJCQkxNTczOUJCRDFCNDIwNDJEMDBEMjU4QzEgLyogV2ViVXNlck1lZGlh
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0VFNTc1QzFEQjdENjExMDBDNzRDNTAgLyog
V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERkM3REJC
MUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFE
QUZEREYyMDdFOUIxNjAwNUU4QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkyMzJERjQxOEIyOUQ2ODAwRDA1
OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCBp
biBIZWFkZXJzICovLApAQCAtMTExMDAsNiArMTExMTYsOCBAQAogCQkJCUUxNEE5NTQ5MTZFMDE2
QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTNBMTYzQzE2MzA4OEY2MDA1RDdEMjIgLyog
TmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBMTE0NTVBRDIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUExMTQ1NUIxMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3Jr
UHJveGltaXR5TWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRkQxOEI1MTY1MUZCQUQw
MERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTE1MjU1MUExNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjZFRjFDMjNGODA5MDBENDExODMg
LyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0x
MTU4OCw3ICsxMTYwNiw2IEBACiAJCQkJODNFRTU3NUIxREI3RDYxMTAwQzc0QzUwIC8qIFdlYlZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERkM3REJDMUJD
Q0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMwMzM3
REQxMTI3QTI5ODAwMDhGRjRGNCAvKiBXZWJXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUExREFGREUwMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0aW9uSG9sZGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY4MTYwRDAxODc2NDU1NzAwMjFFNzlEIC8qIFdpbmRvd1NlcnZl
ckNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUNENTVBQjEyOEUyOTRGMDAxMzND
ODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyOTIzMkRGODE4QjJBOUFFMDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdElPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jb25m
aWcuaCBiL1NvdXJjZS9XZWJLaXQvY29uZmlnLmgKaW5kZXggNjM3OTgyNzhjYzllMWIyMDA4Y2Zl
ZmJiZDU5YThjOWYzOGI3ODI4Zi4uMTRjYWM4NDE4YmVmOTkwNzYwYzBlNjJkYzA3OGZlODZiMDFl
MTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jb25maWcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2NvbmZpZy5oCkBAIC0xMTksMTQgKzExOSw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWZu
ZGVmIEhBVkVfTU9CSUxFX1dJRkkKLSNpZiBQTEFURk9STShJT1MpICYmICFUQVJHRVRfT1NfU0lN
VUxBVE9SICYmICFQTEFURk9STShJT1NNQUMpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0j
ZGVmaW5lIEhBVkVfTU9CSUxFX1dJRkkgMQotI2Vsc2UKLSNkZWZpbmUgSEFWRV9NT0JJTEVfV0lG
SSAwCi0jZW5kaWYKLSNlbmRpZgotCiAjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKSAmJiAhZGVmaW5lZChfX2kz
ODZfXykgJiYgIVBMQVRGT1JNKElPU01BQykKICNkZWZpbmUgSEFWRV9TQUZFX0JST1dTSU5HIDEK
ICNlbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347310</attachid>
            <date>2018-08-16 14:55:24 -0700</date>
            <delta_ts>2018-08-16 16:21:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188664-20180816145522.patch</filename>
            <type>text/plain</type>
            <size>73201</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwOGQ4MDRkYTk1YmUzZmYxODViOWJk
MTJhZTkxN2U3MTQ2OWY1ODAuLjdkNTcyODNiOGJkZGM1OTEyOWY1YzE1ZWViOWNiYTBiZTI5OTE3
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMDgtMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBVcHN0cmVhbSBQcm94aW1pdHkgTmV0d29y
a2luZyAobmVlIFdpLUZpIEFzc2VydGlvbnMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODg2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6IERlZmluZWQgRU5BQkxFX1BS
T1hJTUlUWV9ORVRXT1JLSU5HIHRvIDEgb24gd2F0Y2hPUy4KKwogMjAxOC0wOC0xMCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbWFjT1NdIE11bHRpcGxlIHRo
aXJkIHBhcnR5IGFwcHMgY3Jhc2ggZHVlIHRvIHRoZSB0aHJlYWQgc2FmZXR5IGNoZWNrIGluIFRp
bWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlOTZhZjNkNTEwMmNkZjM5YzNk
YTM2Njk4ZDk3NWVkM2UxZDAxODMuLmNjZWRkYzUxNTY5MDUxMjU3NGM2NWQ4Y2NmMDI5OTlhZWNl
M2Q3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDE4LTA4LTE2ICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbd2F0Y2hPU10gVXBzdHJlYW0gUHJveGlt
aXR5IE5ldHdvcmtpbmcgKG5lZSBXaS1GaSBBc3NlcnRpb25zKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NjY0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBQcm94aW1pdHkgTmV0d29ya2luZyBwcm92aWRlcyB0
d28gZmVhdHVyZXMgZm9yIHNwZWVkaW5nIHVwIHBhZ2UgbG9hZHMgb24gd2F0Y2hPUzoKKworICAg
ICAgICAxLiBCaW5kaW5nIHJlcXVlc3RzIHRvIHRoZSBBcHBsZSBXYXRjaCdzIFdpLUZpIGludGVy
ZmFjZSBldmVuIHdoZW4gdGhlIGlQaG9uZSBpcyBpbiBwcm94aW1pdHkuCisgICAgICAgIDIuIFdo
ZW4gV2ktRmkgaXNuJ3QgYXZhaWxhYmxlLCBwcmVlbXB0aXZlbHkgdXBncmFkaW5nIHRoZSBCbHVl
dG9vdGggbGluayB0byBpdHMgZmFzdGVzdCBkYXRhCisgICAgICAgIHJhdGUgcHJpb3IgdG8gc3Rh
cnRpbmcgcGFnZSBsb2Fkcy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2Nv
bmZpZzoKKworICAgICAgICBBZGRlZCBMREZMQUdTIGZvciBQcm94aW1pdHkgTmV0d29ya2luZy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnByb3hpbWl0eU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisKKyAgICAgICAgQWRkZWQgTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXIgYXMgYSBzdXBwbGVtZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKwor
ICAgICAgICBSZW5hbWVkIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpIHRvIEVOQUJMRShQUk9YSU1J
VFlfTkVUV09SS0lORykuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oOgorCisgICAgICAgIFJlbmFtZWQgbV93aUZpQXNzZXJ0aW9uSG9sZGVy
IHRvIG1fcHJveGltaXR5QXNzZXJ0aW9uVG9rZW4gYW5kIGNoYW5nZWQgaXRzIHR5cGUgZnJvbSBh
bgorICAgICAgICBvcHRpb25hbCBXaUZpQXNzZXJ0aW9uSG9sZGVyIHRvIGFuIG9wdGlvbmFsIE5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb246OlRva2VuLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1QcmVwYXJlVG9TdXNwZW5k
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFJl
c3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NE
aWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQpOgorCisgICAgICAg
IENoYW5nZWQgdG8gdXNlIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dpRmlBc3NlcnRpb25Ib2xkZXIubW06IFJlbW92ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
OjpUb2tlbjo6VG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5QXNzZXJ0
aW9uOjpUb2tlbjo6flRva2VuKToKKworICAgICAgICBBZGRlZC4gTmV0d29ya0RhdGFUYXNrcyBo
b2xkIHRoZXNlIHRva2VucyB0byBrZWVwIEJsdWV0b290aCBvciBXaS1GaSBhc3NlcnRpb25zIGFj
dGl2ZQorICAgICAgICBkdXJpbmcgbG9hZGluZy4gV2hlbiB0aGUgbGFzdCB0b2tlbiBpcyBkZXN0
cm95ZWQsIGl0cyBhc3NvY2lhdGVkIGFzc2VydGlvbiB3aWxsIGJlCisgICAgICAgIGRlYWN0aXZh
dGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5
QXNzZXJ0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eUFz
c2VydGlvbjo6TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb246OmhvbGQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJveGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbjo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb3hp
bWl0eUFzc2VydGlvbjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb246OnN1c3BlbmROb3cpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uOjpyZWxlYXNlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm94aW1pdHlBc3NlcnRpb246OnN1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lckZpcmVk
KToKKworICAgICAgICBBZGRlZC4gTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiBpcyB0aGUgYmFz
ZSBjbGFzcyBmb3IgQmx1ZXRvb3RoIGFuZCBXaS1GaSBhc3NlcnRpb25zLiBJdAorICAgICAgICBt
YW5hZ2VzIHRoZSBsb2dpYyBmb3IgaG9sZGluZyBhbmQgcmVsZWFzaW5nIGFzc2VydGlvbnMgYXMg
d2VsbCBhcyByZXNwb25kaW5nIHRvIG5ldHdvcmsKKyAgICAgICAgcHJvY2VzcyBiYWNrZ3JvdW5k
aW5nIGFuZCBzdXNwZW5zaW9uLgorCisgICAgICAgIChXZWJLaXQ6OkJsdWV0b290aFByb3hpbWl0
eUFzc2VydGlvbjo6Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktp
dDo6Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpob2xkTm93KToKKyAgICAgICAgKFdlYktp
dDo6Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpyZWxlYXNlTm93KToKKworICAgICAgICBB
ZGRlZC4gSG9sZHMgYSBCbHVldG9vdGggYXNzZXJ0aW9uIGJ5IGNhbGxpbmcgLVtJRFNTZXJ2aWNl
IHNldExpbmtQcmVmZXJlbmNlczpdLgorCisgICAgICAgIChXZWJLaXQ6OldpRmlQcm94aW1pdHlB
c3NlcnRpb246OldpRmlQcm94aW1pdHlBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpXaUZp
UHJveGltaXR5QXNzZXJ0aW9uOjpob2xkTm93KToKKyAgICAgICAgKFdlYktpdDo6V2lGaVByb3hp
bWl0eUFzc2VydGlvbjo6cmVsZWFzZU5vdyk6CisKKyAgICAgICAgQWRkZWQuIEhvbGRzIGEgV2kt
RmkgYXNzZXJ0aW9uIGJ5IHVzaW5nIFdpRmlNYW5hZ2VyQ2xpZW50LgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bV0tQcm94aW1pdHlTZXJ2aWNlRGVsZWdhdGUgc2V0Q2xpZW50
Ol0pOgorICAgICAgICAoLVtXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSBzZXJ2aWNlOmRldmlj
ZXNDaGFuZ2VkOl0pOgorICAgICAgICAoLVtXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSBzZXJ2
aWNlOm5lYXJieURldmljZXNDaGFuZ2VkOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
eGltaXR5TWFuYWdlcjo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6fk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKToK
KyAgICAgICAgKFdlYktpdDo6YmluZFJlcXVlc3RUb1dpRmkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6YXBwbHlQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb3hpbWl0eU1hbmFnZXI6OnJlY29tbWVuZGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnByb2Nlc3NSZWNvbW1lbmRhdGlvbnMpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1Byb2Nlc3NJRCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94
aW1pdHlNYW5hZ2VyOjpyZXN1bWVSZWNvbW1lbmRhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6c3VzcGVuZFJlY29tbWVuZGF0aW9ucyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjp1cGRhdGVDb21wYW5pb25Qcm94aW1p
dHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6dXBkYXRlUmVj
b21tZW5kYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpk
ZXZpY2VzQ2hhbmdlZCk6CisKKyAgICAgICAgQWRkZWQuIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2Vy
IGlzIGEgbmV0d29yayBwcm9jZXNzIHN1cHBsZW1lbnQgdGhhdCBjYW4gYmluZAorICAgICAgICBO
ZXR3b3JrRGF0YVRhc2tzIHRvIFdpLUZpLCBhc3NvY2lhdGUgYXNzZXJ0aW9ucyB3aXRoIE5ldHdv
cmtEYXRhVGFza3MsIGNoZWNrIGZvciBjb21wYW5pb24KKyAgICAgICAgcHJveGltaXR5LCBhc2sg
Zm9yIHByb3hpbWl0eSBuZXR3b3JrIHJlY29tbWVuZGF0aW9ucywgYW5kIHJlc3BvbmQgdG8gbmV0
d29yayBwcm9jZXNzCisgICAgICAgIGJhY2tncm91bmRpbmcgYW5kIHN1c3BlbmRpbmcuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisKKyAgICAgICAgUmVuYW1lZCB0aGUgV2lGaUFz
c2VydGlvbnMgbG9nIGNoYW5uZWwgdG8gUHJveGltaXR5TmV0d29ya2luZy4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS9pb3MvTW9iaWxlV2lGaVNQSS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorCisgICAgICAgIFJlbmFtZWQg
RU5BQkxFKFdJRklfQVNTRVJUSU9OUykgdG8gRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKS4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNvbmZpZy5oOgorCisgICAgICAgIFJlbW92ZWQgdW51c2VkIGRlZmluaXRpb24gb2YgSEFWRV9N
T0JJTEVfV0lGSS4KKwogMjAxOC0wOC0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEgc2hv
dWxkIHVzZSBtZW1iZXIgaW5pdGlhbGl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCmluZGV4
IGMzMDcwZmY5MmM3M2NiZThlMmEyOWVlY2NiZWEwZTIwZGY4MGUzMzEuLjBkM2U3Zjc0NWQ4NzFh
MjQ2MjI1ZDQ2ZGRiNTY4NjkxYmYwZDJjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zl
YXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaApAQCAt
MTgwLDYgKzE4MCwxNyBAQCB0aGUgcHVibGljIGlPUyBTREsuIFNlZSA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTc5MTY3Pi4gKi8KIAogI2VuZGlmIC8qIFBMQVRGT1JNKElPUykgKi8KIAorLyogLS0t
LS0tLS0tIEFwcGxlIFdBVENIT1MgcG9ydCAtLS0tLS0tLS0gKi8KKyNpZiBQTEFURk9STShXQVRD
SE9TKQorCisjaWYgIWRlZmluZWQoRU5BQkxFX1BST1hJTUlUWV9ORVRXT1JLSU5HKQorI2lmICFU
QVJHRVRfT1NfU0lNVUxBVE9SCisjZGVmaW5lIEVOQUJMRV9QUk9YSU1JVFlfTkVUV09SS0lORyAx
CisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYgLyogUExBVEZPUk0oV0FUQ0hPUykgKi8KKwogLyog
LS0tLS0tLS0tIEFwcGxlIE1BQyBwb3J0IChub3QgSU9TKSAtLS0tLS0tLS0gKi8KICNpZiBQTEFU
Rk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDZhYjI0ZTJjNDgyZTQyMGNmZDdjNWJm
MmU3NmYzNzBjMWY1Mjg1MGQuLmNjNzZkYzM1NjI0YTYzNDFmYWM0YTI4ZjJhOTQyODZhOThjNzQ3
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTEsNiArMTEsNyBAQCBzZXQoV2ViS2l0X0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJ
IgogICAgICIke1dFQktJVF9ESVJ9L05ldHdvcmtQcm9jZXNzL2NhY2hlIgogICAgICIke1dFQktJ
VF9ESVJ9L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUiCisgICAgIiR7V0VCS0lUX0RJUn0vTmV0d29y
a1Byb2Nlc3Mvd2F0Y2hvcyIKICAgICAiJHtXRUJLSVRfRElSfS9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMiCiAgICAgIiR7V0VCS0lUX0RJUn0vUGxhdGZvcm0iCiAgICAgIiR7V0VCS0lUX0RJUn0vUGxh
dGZvcm0vSVBDIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJL
aXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZp
ZwppbmRleCBhNjY3MDlmNGRhMDhkODFlZWM3MzQ4ODM4OGVkYWJkYTMxMTgxZTY0Li5lMWFlMTE1
ZTYwOGJmNmM3NGMwZTU1ZWI0ZjViMmJmNTkyYTcyYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0Nv
bmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtMTAxLDYgKzEwMSw5IEBAIFdLX1BERktJ
VF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9ICQoV0tfUERGS0lUX0xERkxBR1NfaXBob25lb3Mp
OwogV0tfUERGS0lUX0xERkxBR1NfaXBob25lb3Nbc2RrPWlwaG9uZSoxMS4qXSA9IDsKIFdLX1BE
RktJVF9MREZMQUdTX2lwaG9uZXNpbXVsYXRvcltzZGs9aXBob25lKjExLipdID0gOwogCitXS19Q
Uk9YSU1JVFlfTkVUV09SS0lOR19MREZMQUdTID0gJChXS19QUk9YSU1JVFlfTkVUV09SS0lOR19M
REZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tfUFJPWElNSVRZX05FVFdPUktJTkdfTERG
TEFHU193YXRjaG9zID0gLWZyYW1ld29yayBJRFMgLWZyYW1ld29yayBNb2JpbGVXaUZpIC1mcmFt
ZXdvcmsgU3lzdGVtQ29uZmlndXJhdGlvbiAtZnJhbWV3b3JrIFdpcmVsZXNzQ29leE1hbmFnZXI7
CisKIFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUyA9ICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdT
XyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTX2lwaG9uZW9z
ID0gLWZyYW1ld29yayBTYWZhcmlTYWZlQnJvd3Npbmc7CiBXS19TQUZFX0JST1dTSU5HX0xERkxB
R1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBTYWZhcmlTYWZlQnJvd3Npbmc7CkBAIC0x
MTUsNyArMTE4LDcgQEAgV0tfVUlLSVRfTERGTEFHU19jb2NvYXRvdWNoID0gLWZyYW1ld29yayBV
SUtpdDsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MgPSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xE
RkxBR1NfJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HKSk7CiBXS19VUkxfRk9STUFUVElOR19MREZM
QUdTX1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGluZzsKIAotRlJBTUVXT1JLX0FORF9MSUJS
QVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3Jl
QXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAt
ZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdl
SU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChX
S19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJU
SU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QREZf
TERGTEFHUykgJChXS19DT1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VT
X0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0Vf
TERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1Mp
ICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9M
REZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NB
RkVfQlJPV1NJTkdfTERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRU
SU5HX0xERkxBR1MpOworRlJBTUVXT1JLX0FORF9MSUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZy
YW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91
bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFt
ZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJh
bWV3b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChXS19BQ0NFU1NJQklMSVRZX0xERkxBR1Mp
ICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VTX0xERkxBR1MpICQo
V0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9QREZfTERGTEFHUykgJChXS19DT1JFX1BSRURJ
Q1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfR1JBUEhJQ1Nf
U0VSVklDRVNfTERGTEFHUykgJChXS19JT1NVUkZBQ0VfTERGTEFHUykgJChXS19MSUJTQU5EQk9Y
X0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklD
RVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZM
QUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1BST1hJTUlUWV9ORVRXT1JLSU5HX0xERkxB
R1MpICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tf
VVJMX0ZPUk1BVFRJTkdfTERGTEFHUyk7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJh
cnkgYmFzaWNfc3RyaW5nc3RyZWFtLCBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhlaXIgcmVs
YXRlZCBleGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5bWJvbHMu
CiBVTkVYUE9SVEVEX1NZTUJPTF9MREZMQUdTID0gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVElTdDlleGNl
cHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDliYWRfYWxsb2MgLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCAtV2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53bVB2IC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53bSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1X
bCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMkVPUzRf
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNv
cmUxMlBvbGljeUFjdGlvbkVFRUMxRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19a
TlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFYVNFRG4gLVdsLC11
bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBv
bGljeUFjdGlvbkVFRWNsRVMyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18x
OGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUU0c3dhcEVSUzRfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGlj
eUFjdGlvbkVFRUMxRVJLUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4
ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMyRVJLUzRfIC1XbCwtdW5leHBv
cnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFj
dGlvbkVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlv
bklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVhU0VS
S1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5TdDNfXzExN2JhZF9mdW5jdGlv
bl9jYWxsRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0
cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18x
M2Jhc2ljX2lzdHJlYW1JY1MyX0VFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0
M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0
b3JJY0VFRUUwX05TXzE0YmFzaWNfaW9zdHJlYW1JY1MyX0VFIC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRz
SWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUxNl9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRUTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNO
U18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9ydGVkX3N5
bWJvbCAtV2wsX19aVFZOU3QzX18xMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90cmFpdHNJ
Y0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5T
dDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2Nh
dG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNf
c3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUU4X05T
XzEzYmFzaWNfb3N0cmVhbUljUzJfRUU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDdkZTgwMGU3MThhNjFkYzI3ZjQ3Nzc0OTE2YjU1
OGE5NzdjNTcwNWYuLmFkNGYzNjk4MDg0YTk2MDlmZTNlYWY3ZWNiMzFkZDMxZTE0ZWNmZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm94aW1pdHlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgpA
QCAtMTIxLDYgKzEyMiw5IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcygpCiAjaWYg
RU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBhZGRTdXBwbGVtZW50
PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKTsKICNlbmRpZgorI2lmIEVOQUJMRShQUk9Y
SU1JVFlfTkVUV09SS0lORykKKyAgICBhZGRTdXBwbGVtZW50PE5ldHdvcmtQcm94aW1pdHlNYW5h
Z2VyPigpOworI2VuZGlmCiAKICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2luZ2xldG9uKCku
YWRkTGlzdGVuZXIoW3RoaXNdKGJvb2wgaXNPbkxpbmUpIHsKICAgICAgICAgYXV0byB3ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMgPSBtX3dlYlByb2Nlc3NDb25uZWN0aW9uczsKQEAgLTE0OCw2ICsxNTIs
MTMgQEAgRG93bmxvYWRNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRNYW5hZ2VyKCkK
ICAgICByZXR1cm4gZG93bmxvYWRNYW5hZ2VyOwogfQogCisjaWYgRU5BQkxFKFBST1hJTUlUWV9O
RVRXT1JLSU5HKQorTmV0d29ya1Byb3hpbWl0eU1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpwcm94
aW1pdHlNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gKnN1cHBsZW1lbnQ8TmV0d29ya1Byb3hpbWl0
eU1hbmFnZXI+KCk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGNvbm5lY3Rpb24pCiB7CiAgICAgc2l6ZV90IHZlY3RvckluZGV4ID0gbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbnMuZmluZChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2ZWQxZWVkODdlZmVhMzgwMGRlY2U5NTgyZmI5YmM1
MTUwZTNkYjc2Li4zYWNkMzlhYTEzZjRjMTVlMTU0NzhmM2NmY2E3YWFiODZlZWNhODE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00Niwy
NSArNDYsMjUgQEAgY2xhc3MgU2Vzc2lvbklEOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBEb3dubG9hZElEOwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOworY2xhc3MgRG93bmxvYWRJ
RDsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgVVJMOworZW51bSBjbGFzcyBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBzdHJ1Y3QgU291cE5l
dHdvcmtQcm94eVNldHRpbmdzOwotZW51bSBjbGFzcyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTsK
LWNsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIGNsYXNzIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjsKLSNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCi1jbGFzcyBQcmVjb25u
ZWN0VGFzazsKLSNlbmRpZgogY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBj
bGFzcyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQ7CitjbGFzcyBOZXR3b3JrUHJveGltaXR5TWFu
YWdlcjsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFByZWNvbm5lY3RUYXNr
OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRl
RGF0YVR5cGU7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC05
OCw2ICs5OCw5IEBAIHB1YmxpYzoKIAogICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgYXV0aGVu
dGljYXRpb25NYW5hZ2VyKCk7CiAgICAgRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIo
KTsKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisgICAgTmV0d29ya1Byb3hpbWl0
eU1hbmFnZXImIHByb3hpbWl0eU1hbmFnZXIoKTsKKyNlbmRpZgogCiAgICAgTmV0d29ya0NhY2hl
OjpDYWNoZSogY2FjaGUoKSB7IHJldHVybiBtX2NhY2hlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYjdhYjE4NjAwNzE3OTMwMzU1NjcwZTljM2M0MDc5
NzlhNzY2NTM4ZS4uMmVmNzAwNjgyYmVmM2Q3YzhlODFkZmUyNDliZDkwNWQzNjY5NGNmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNF
bmFibGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlP
bmx5SWZDYW5SZXF1ZXN0OwogCi0jaWYgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykKKyNpZiBFTkFC
TEUoUFJPWElNSVRZX05FVFdPUktJTkcpCiAgICAgZW5jb2RlciA8PCB3aXJlbGVzc0NvbnRleHRJ
ZGVudGlmaWVyOwogI2VuZGlmCiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgYm9vbCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0
d29ya1Byb2MKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hlbWVzUmVnaXN0
ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQorI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVU
V09SS0lORykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53aXJlbGVzc0NvbnRleHRJ
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggMGU5MTI5YjM5NTAwZDQwMDA1Y2Y4OTcyM2Y2NTIwNmMxZmNj
MWI3Mi4uZGZiZWM0N2NjNTQxMDZhNjYwODZhMGZkZjQzZTZiYzUzNzA5ZmI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0cnVjdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OwogICAgIFZlY3RvcjxTdHJp
bmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKIAotI2lmIEVOQUJMRShXSUZJ
X0FTU0VSVElPTlMpCisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQogICAgIHVuc2ln
bmVkIHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgeyAwIH07CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKaW5kZXggMzZhYWY3M2QxOWM4MjQzMmRjNWZhNDFiNWI0NzZmZTI3ZGEyZDNiOS4u
NWU2N2E3ODBhZWY2MTQ3M2NiM2ZhNTQ4NTNlZTQ0ZTE3ZmRkM2RkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRyYWNrZXIu
aCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBh
cmFtZXRlcnMuaCIKLSNpbmNsdWRlICJXaUZpQXNzZXJ0aW9uSG9sZGVyLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xv
YWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC03MywxMSArNzMs
MTEgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lSUQ7IH07CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH07CiAKLSNpZiBFTkFCTEUoV0lGSV9BU1NFUlRJT05TKQotICAgIHZvaWQgbWF5YmVIb2xkV2lG
aUFzc2VydGlvbihib29sIHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uKQorI2lmIEVOQUJMRShQUk9Y
SU1JVFlfTkVUV09SS0lORykKKyAgICB2b2lkIGhvbGRQcm94aW1pdHlBc3NlcnRpb24oTmV0d29y
a1Byb3hpbWl0eUFzc2VydGlvbiYgYXNzZXJ0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFt
X3dpRmlBc3NlcnRpb25Ib2xkZXIpOwotICAgICAgICBtX3dpRmlBc3NlcnRpb25Ib2xkZXIuZW1w
bGFjZShzaG91bGRIb2xkV2lGaUFzc2VydGlvbik7CisgICAgICAgIEFTU0VSVCghbV9wcm94aW1p
dHlBc3NlcnRpb25Ub2tlbik7CisgICAgICAgIG1fcHJveGltaXR5QXNzZXJ0aW9uVG9rZW4uZW1w
bGFjZShhc3NlcnRpb24pOwogICAgIH0KICNlbmRpZgogCkBAIC0xMDYsOCArMTA2LDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFnZSB7
IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCi0gICAgc3Rk
OjpvcHRpb25hbDxXaUZpQXNzZXJ0aW9uSG9sZGVyPiBtX3dpRmlBc3NlcnRpb25Ib2xkZXI7Cisj
aWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29y
a1Byb3hpbWl0eUFzc2VydGlvbjo6VG9rZW4+IG1fcHJveGltaXR5QXNzZXJ0aW9uVG9rZW47CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDgyMmI0MGQyNDEyODkyMmI1ZjM2
MzFlZmI5MDY3OTgyMTA2YjY0ZmQuLjIwNGIzZmE1ZTllN2VlODNiNmNhZjUzNTc2MTFhOTRiNzQ0
ZGMxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAi
RG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJO
ZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCIKICNp
bXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKICNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgi
CiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTQ0LDEwICs0NSw2IEBACiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8V2ViS2l0QWRkaXRp
b25zL05ldHdvcmtEYXRhVGFza0NvY29hQWRkaXRpb25zLm1tPgotI2VuZGlmCi0KICNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTIwMDAwKQogQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrIChTdGFnaW5nKQogQHByb3BlcnR5
IChudWxsYWJsZSwgcmVhZHdyaXRlLCByZXRhaW4pIE5TVVJMICpfc2l0ZUZvckNvb2tpZXM7CkBA
IC0yMTMsOCArMjEwLDggQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0Nv
Y29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKIAogICAgIE5TVVJMUmVx
dWVzdCAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlV
cGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKICAgICBhcHBseVNuaWZmaW5nUG9saWNpZXNB
bmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50
U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYg
IXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJDb3Jl
OjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwotI2lmIEVOQUJMRShXSUZJ
X0FTU0VSVElPTlMpCi0gICAgYXBwbHlBZGRpdGlvbmFsUHJvcGVydGllcyhyZXF1ZXN0LCAqdGhp
cywgbnNSZXF1ZXN0KTsKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisgICAgTmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLnByb3hpbWl0eU1hbmFnZXIoKS5hcHBseVByb3BlcnRp
ZXMocmVxdWVzdCwgKnRoaXMsIG5zUmVxdWVzdCk7CiAjZW5kaWYKIAogICAgIGF1dG8mIGNvY29h
U2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihtX3Nlc3Npb24uZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDEyY2YzYWYwYjEwMjZhZDBiNTFjNTliNGUxNjBl
YThiMjM2MjhlY2YuLmM5MzQ4ZTc0MThiNzc5ZDc0YWI3ZWM4NzVkZDhiMTRhNzk0ODNjZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIk5ldHdvcmtDYWNoZS5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmgiCiAjaW1w
b3J0ICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29j
b2EuaCIKICNpbXBvcnQgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTQ1LDEwICs0Niw2IEBACiAj
aW1wb3J0IDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1By
aXZpbGVnZS5oPgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9OZXR3b3JrUHJvY2Vzc0NvY29hQWRkaXRpb25zLm1tPgotI2VuZGlmCi0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTmV0d29ya1NldHRpbmdz
KCkKQEAgLTExMCwxMCArMTA3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKIAogICAgIEFT
U0VSVCghbV9kaXNrQ2FjaGVJc0Rpc2FibGVkRm9yVGVzdGluZyk7CiAKLSNpZiBFTkFCTEUoV0lG
SV9BU1NFUlRJT05TKQotICAgIGluaXRpYWxpemVXaUZpQXNzZXJ0aW9ucyhwYXJhbWV0ZXJzKTsK
LSNlbmRpZgotCiAgICAgaWYgKG1fZGlza0NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTI0NSw4ICsyMzgsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybVN5bmNBbGxDb29raWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByZXBhcmVUb1N1c3BlbmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotI2lmIEVOQUJMRShXSUZJ
X0FTU0VSVElPTlMpCi0gICAgc3VzcGVuZFdpRmlBc3NlcnRpb25zKFN1c3BlbnNpb25SZWFzb246
OlByb2Nlc3NTdXNwZW5kaW5nLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisjaWYgRU5B
QkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorICAgIHByb3hpbWl0eU1hbmFnZXIoKS5zdXNwZW5k
KFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NTdXNwZW5kaW5nLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAjZW5kaWYKQEAgLTI1
NCwyMyArMjQ3LDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJlcGFyZVRvU3Vz
cGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxlCiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFJlc3VtZSgpCiB7Ci0jaWYgRU5BQkxFKFdJRklfQVNT
RVJUSU9OUykKLSAgICByZXN1bWVXaUZpQXNzZXJ0aW9ucyhSZXN1bXB0aW9uUmVhc29uOjpQcm9j
ZXNzUmVzdW1pbmcpOworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKyAgICBwcm94
aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NSZXN1bWluZyk7
CiAjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJh
bnNpdGlvblRvQmFja2dyb3VuZCgpCiB7Ci0jaWYgRU5BQkxFKFdJRklfQVNTRVJUSU9OUykKLSAg
ICBzdXNwZW5kV2lGaUFzc2VydGlvbnMoU3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc0JhY2tncm91
bmRpbmcsIFtdIHsgfSk7CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorICAgIHBy
b3hpbWl0eU1hbmFnZXIoKS5zdXNwZW5kKFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NCYWNrZ3Jv
dW5kaW5nLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogewotI2lmIEVOQUJMRShXSUZJ
X0FTU0VSVElPTlMpCi0gICAgcmVzdW1lV2lGaUFzc2VydGlvbnMoUmVzdW1wdGlvblJlYXNvbjo6
UHJvY2Vzc0ZvcmVncm91bmRpbmcpOworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykK
KyAgICBwcm94aW1pdHlNYW5hZ2VyKCkucmVzdW1lKFJlc3VtcHRpb25SZWFzb246OlByb2Nlc3NG
b3JlZ3JvdW5kaW5nKTsKICNlbmRpZgogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2lGaUFzc2VydGlv
bkhvbGRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XaUZpQXNzZXJ0
aW9uSG9sZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxOTM1YzMyZmYzYzZl
OTg2NjNkNjMzZDI5ZWE3ODRlZDNjMmVhZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XaUZp
QXNzZXJ0aW9uSG9sZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBIQVZFKE1PQklMRV9XSUZJKQotCi0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXaUZpQXNz
ZXJ0aW9uSG9sZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaUZpQXNzZXJ0aW9uSG9s
ZGVyKTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXaUZpQXNzZXJ0aW9uSG9sZGVyKGJvb2wgc2hv
dWxkSG9sZFdpRmlBc3NlcnRpb24pOwotICAgIH5XaUZpQXNzZXJ0aW9uSG9sZGVyKCk7Ci0KLSAg
ICBib29sIHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRI
b2xkV2lGaUFzc2VydGlvbjsgfQotCi1wcml2YXRlOgotICAgIGJvb2wgbV9zaG91bGRIb2xkV2lG
aUFzc2VydGlvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gSEFW
RShNT0JJTEVfV0lGSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTZiMzM3OWNmODdiMDJlZjI3NTU3ZDQ1YWQ4NzA1OWVhMzM3ODIzZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL1dpRmlBc3NlcnRpb25Ib2xkZXIubW0KKysrIC9kZXYvbnVsbApAQCAt
MSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJX
aUZpQXNzZXJ0aW9uSG9sZGVyLmgiCi0KLSNpZiBIQVZFKE1PQklMRV9XSUZJKQotCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKLSNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XaUZpQXNzZXJ0
aW9uSG9sZGVyQWRkaXRpb25zLm1tPgotI2Vsc2UKLXN0YXRpYyB2b2lkIGhvbGRXaUZpQXNzZXJ0
aW9uKGNvbnN0IFdpRmlBc3NlcnRpb25Ib2xkZXImKQotewotfQotCi1zdGF0aWMgdm9pZCByZWxl
YXNlV2lGaUFzc2VydGlvbihjb25zdCBXaUZpQXNzZXJ0aW9uSG9sZGVyJikKLXsKLX0KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2lGaUFzc2VydGlvbkhvbGRlcjo6V2lGaUFzc2Vy
dGlvbkhvbGRlcihib29sIHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uKQotICAgIDogbV9zaG91bGRI
b2xkV2lGaUFzc2VydGlvbiB7IHNob3VsZEhvbGRXaUZpQXNzZXJ0aW9uIH0KLXsKLSAgICBob2xk
V2lGaUFzc2VydGlvbigqdGhpcyk7Ci19Ci0KLVdpRmlBc3NlcnRpb25Ib2xkZXI6On5XaUZpQXNz
ZXJ0aW9uSG9sZGVyKCkKLXsKLSAgICByZWxlYXNlV2lGaUFzc2VydGlvbigqdGhpcyk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gSEFWRShNT0JJTEVfV0lGSSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJv
eGltaXR5QXNzZXJ0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dhdGNob3Mv
TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxMTA3MTI0ZjUwNmFhNzk1
MDU0MGJhMWU5Y2U5NzAyMTM4MTZmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5oCkBAIC0w
LDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUFJP
WElNSVRZX05FVFdPUktJTkcpCisKKyNpbmNsdWRlICJNb2JpbGVXaUZpU1BJLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBJRFNTZXJ2aWNlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBSZXN1bXB0aW9uUmVhc29uIDogdWludDhfdDsKK2Vu
dW0gY2xhc3MgU3VzcGVuc2lvblJlYXNvbiA6IHVpbnQ4X3Q7CisKK2NsYXNzIE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb24pOworcHVibGljOgorICAgIGNsYXNzIFRva2VuIHsKKyAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVG9rZW4pOworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgVG9r
ZW4oTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiYgYXNzZXJ0aW9uKQorICAgICAgICAgICAgOiBt
X2Fzc2VydGlvbiB7IGFzc2VydGlvbiB9CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fYXNzZXJ0
aW9uLmhvbGQoKTsKKyAgICAgICAgfQorCisgICAgICAgIH5Ub2tlbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fYXNzZXJ0aW9uLnJlbGVhc2UoKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbiYgbV9hc3NlcnRpb247CisgICAg
fTsKKworICAgIHZvaWQgcmVzdW1lKFJlc3VtcHRpb25SZWFzb24pOworICAgIHZvaWQgc3VzcGVu
ZChTdXNwZW5zaW9uUmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCitwcm90
ZWN0ZWQ6CisgICAgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbigpOworICAgIHZpcnR1YWwgfk5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIG1faXNIb2xk
aW5nQXNzZXJ0aW9uIHsgZmFsc2UgfTsKKworcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFN0YXRl
IHsKKyAgICAgICAgQmFja2dyb3VuZGVkLCAvLyBDYW4gaG9sZCBhc3NlcnRpb25zIHVudGlsIG1f
c3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyIGZpcmVzLgorICAgICAgICBSZXN1bWVkLCAv
LyBDYW4gaG9sZCBhc3NlcnRpb25zIGF0IGFueSB0aW1lLgorICAgICAgICBTdXNwZW5kZWQsIC8v
IENhbiBub3QgaG9sZCBhc3NlcnRpb25zLgorICAgIH07CisKKyAgICB2aXJ0dWFsIHZvaWQgaG9s
ZE5vdygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU5vdygpID0gMDsKKworICAgIHZv
aWQgaG9sZCgpOworICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHZvaWQgcmVsZWFzZVRpbWVyRmly
ZWQoKTsKKyAgICB2b2lkIHN1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lckZpcmVkKCk7Cisg
ICAgdm9pZCBzdXNwZW5kTm93KCk7CisKKyAgICB1aW50NjRfdCBtX2Fzc2VydGlvbkNvdW50IHsg
MCB9OworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3VzcGVuZGVkIH07CisgICAgV2ViQ29y
ZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX3JlbGVhc2VUaW1lcjsKKyAgICBXZWJDb3JlOjpE
ZWZlcnJhYmxlT25lU2hvdFRpbWVyIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyOwor
fTsKKworY2xhc3MgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uIGZpbmFsIDogcHVibGljIE5l
dHdvcmtQcm94aW1pdHlBc3NlcnRpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IEJsdWV0b290
aFByb3hpbWl0eUFzc2VydGlvbihJRFNTZXJ2aWNlICopOworCisgICAgdm9pZCBzdXNwZW5kKFN1
c3BlbnNpb25SZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisKK3ByaXZhdGU6
CisgICAgdm9pZCBob2xkTm93KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxlYXNlTm93KCkgb3Zl
cnJpZGU7CisKKyAgICBSZXRhaW5QdHI8SURTU2VydmljZT4gbV9pZHNTZXJ2aWNlOworfTsKKwor
Y2xhc3MgV2lGaVByb3hpbWl0eUFzc2VydGlvbiBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrUHJveGlt
aXR5QXNzZXJ0aW9uIHsKK3B1YmxpYzoKKyAgICBXaUZpUHJveGltaXR5QXNzZXJ0aW9uKCk7CisK
K3ByaXZhdGU6CisgICAgdm9pZCBob2xkTm93KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxlYXNl
Tm93KCkgb3ZlcnJpZGU7CisKKyAgICBSZXRhaW5QdHI8V2lGaU1hbmFnZXJDbGllbnRSZWY+IG1f
d2lGaU1hbmFnZXJDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlBc3Nl
cnRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU3MWM2Y2RlMjdjMTFkNjNjMmJkMTgzNDg5ODdmZjdkODA3
MWRlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0
Y2hvcy9OZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1tCkBAIC0wLDAgKzEsMjMwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJveGltaXR5QXNz
ZXJ0aW9uLmgiCisKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCisKKyNpbXBvcnQg
IkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW1wb3J0ICJOZXR3b3Jr
UHJveGltaXR5TWFuYWdlci5oIgorI2ltcG9ydCA8SURTL0lEU19Qcml2YXRlLmg+CisjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBhdXRvIGFz
c2VydGlvblJlbGVhc2VEZWxheUFmdGVyQmFja2dyb3VuZGluZyA9IDEwX3M7CitzdGF0aWMgYXV0
byBhc3NlcnRpb25SZWxlYXNlRGVsYXlGb3JIeXN0ZXJlc2lzID0gMTBfczsKKworTmV0d29ya1By
b3hpbWl0eUFzc2VydGlvbjo6TmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbigpCisgICAgOiBtX3Jl
bGVhc2VUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVsZWFzZVRp
bWVyRmlyZWQsIGFzc2VydGlvblJlbGVhc2VEZWxheUZvckh5c3RlcmVzaXMgfQorICAgICwgbV9z
dXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtQcm94aW1pdHlB
c3NlcnRpb246OnN1c3BlbmRBZnRlckJhY2tncm91bmRpbmdUaW1lckZpcmVkLCBhc3NlcnRpb25S
ZWxlYXNlRGVsYXlBZnRlckJhY2tncm91bmRpbmcgfQoreworfQorCit2b2lkIE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb246OmhvbGQoKQoreworICAgICsrbV9hc3NlcnRpb25Db3VudDsKKworICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX2lz
SG9sZGluZ0Fzc2VydGlvbik7CisgICAgICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3Rp
dmUoKSk7CisgICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIu
aXNBY3RpdmUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9yZWxlYXNl
VGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX3JlbGVhc2VUaW1lci5zdG9wKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9hc3NlcnRpb25Db3VudCA9PSAxKQorICAg
ICAgICBob2xkTm93KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVs
ZWFzZSgpCit7CisgICAgQVNTRVJUKG1fYXNzZXJ0aW9uQ291bnQpOworICAgIGlmICghbV9hc3Nl
cnRpb25Db3VudCB8fCAtLW1fYXNzZXJ0aW9uQ291bnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX2lz
SG9sZGluZ0Fzc2VydGlvbik7CisgICAgICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3Rp
dmUoKSk7CisgICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIu
aXNBY3RpdmUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbGVhc2VUaW1l
ci5yZXN0YXJ0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVzdW1l
KFJlc3VtcHRpb25SZWFzb24pCit7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBT
dGF0ZTo6QmFja2dyb3VuZGVkOgorICAgICAgICBtX3N1c3BlbmRBZnRlckJhY2tncm91bmRpbmdU
aW1lci5zdG9wKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlJlc3VtZWQ6Cisg
ICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhdGU6OlN1c3BlbmRlZDoKKyAgICAgICAg
QVNTRVJUKCFtX2lzSG9sZGluZ0Fzc2VydGlvbik7CisgICAgICAgIEFTU0VSVCghbV9yZWxlYXNl
VGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3Jv
dW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIGhvbGROb3coKTsKKyAgICAgICAgaWYg
KCFtX2Fzc2VydGlvbkNvdW50KQorICAgICAgICAgICAgbV9yZWxlYXNlVGltZXIucmVzdGFydCgp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OlJlc3VtZWQ7
Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZChTdXNwZW5zaW9u
UmVhc29uIHJlYXNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHN3aXRjaCAocmVhc29uKSB7CisgICAgY2FzZSBTdXNwZW5zaW9uUmVhc29u
OjpQcm9jZXNzQmFja2dyb3VuZGluZzoKKyAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2Vz
cyBpcyBiZWluZyBiYWNrZ3JvdW5kZWQuIFdlIHNob3VsZCBkcm9wIG91ciBhc3NlcnRpb25zCisg
ICAgICAgIC8vIHNvb24sIGluIGNhc2UgdGhlIHN5c3RlbSBzdXNwZW5kcyB0aGUgcHJvY2VzcyBi
ZWZvcmUgd2UgcmVjZWl2ZSBQcm9jZXNzU3VzcGVuZGluZy4KKyAgICAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpCYWNrZ3JvdW5kZWQ7CisgICAgICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1Rp
bWVyLnJlc3RhcnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdXNwZW5zaW9uUmVhc29u
OjpQcm9jZXNzU3VzcGVuZGluZzoKKyAgICAgICAgLy8gVGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBp
cyBiZWluZyBzdXNwZW5kZWQsIHNvIHdlIG5lZWQgdG8gZHJvcCBvdXIgYXNzZXJ0aW9ucworICAg
ICAgICAvLyBpbW1lZGlhdGVseSBiZWZvcmUgdGhhdCBoYXBwZW5zLgorICAgICAgICBzdXNwZW5k
Tm93KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3VzcGVuZE5vdygpCit7Cisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpTdXNwZW5kZWQ7CisgICAgbV9yZWxlYXNlVGltZXIuc3RvcCgp
OworICAgIG1fc3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyLnN0b3AoKTsKKyAgICByZWxl
YXNlTm93KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6cmVsZWFzZVRp
bWVyRmlyZWQoKQoreworICAgIEFTU0VSVCghbV9yZWxlYXNlVGltZXIuaXNBY3RpdmUoKSk7Cisg
ICAgQVNTRVJUKCFtX2Fzc2VydGlvbkNvdW50KTsKKyAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0
ZTo6U3VzcGVuZGVkKTsKKyAgICByZWxlYXNlTm93KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hp
bWl0eUFzc2VydGlvbjo6c3VzcGVuZEFmdGVyQmFja2dyb3VuZGluZ1RpbWVyRmlyZWQoKQorewor
ICAgIEFTU0VSVCghbV9zdXNwZW5kQWZ0ZXJCYWNrZ3JvdW5kaW5nVGltZXIuaXNBY3RpdmUoKSk7
CisgICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgc3VzcGVuZE5v
dygpOworfQorCitCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb246OkJsdWV0b290aFByb3hpbWl0
eUFzc2VydGlvbihJRFNTZXJ2aWNlICppZHNTZXJ2aWNlKQorICAgIDogbV9pZHNTZXJ2aWNlIHsg
aWRzU2VydmljZSB9Cit7Cit9CisKK3ZvaWQgQmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpz
dXNwZW5kKFN1c3BlbnNpb25SZWFzb24gcmVhc29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byB3YXNIb2xkaW5nQXNzZXJ0aW9uID0g
bV9pc0hvbGRpbmdBc3NlcnRpb247CisgICAgTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbjo6c3Vz
cGVuZChyZWFzb24sIFtdIHsgfSk7CisKKyAgICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2Ug
U3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc0JhY2tncm91bmRpbmc6CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3VzcGVuc2lvblJlYXNvbjo6
UHJvY2Vzc1N1c3BlbmRpbmc6CisgICAgICAgIEFTU0VSVCghbV9pc0hvbGRpbmdBc3NlcnRpb24p
OworICAgICAgICBpZiAoIXdhc0hvbGRpbmdBc3NlcnRpb24pIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIElEUyBwcm9jZXNzZXMgLXNldExpbmtQcmVmZXJlbmNlczogb24gYSBiYWNrZ3JvdW5kIGRp
c3BhdGNoIHF1ZXVlIGFuZCBwcm92aWRlcyBubworICAgICAgICAvLyBjb21wbGV0aW9uIGhhbmRs
ZXIuIElmIHdlIHN1c3BlbmQgYmVmb3JlIElEUyBmaW5pc2hlcyBzZXR0aW5nIGxpbmsgcHJlZmVy
ZW5jZXMsIHRoZQorICAgICAgICAvLyBCbHVldG9vdGggcmFkaW8gbWlnaHQgc3RheSBpbiBhIGhp
Z2ggcG93ZXIgbW9kZSwgaGFybWluZyBiYXR0ZXJ5IGxpZmUuIERlbGF5IHN1c3BlbnNpb24KKyAg
ICAgICAgLy8gYnkgMzAgc2Vjb25kcyB0byBlbnN1cmUgLXNldExpbmtQcmVmZXJlbmNlczogYWx3
YXlzIGZpbmlzaGVzIGl0cyB3b3JrLgorICAgICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90
aW1lKERJU1BBVENIX1RJTUVfTk9XLCAzMCAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQg
Qmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uOjpob2xkTm93KCkKK3sKKyAgICBpZiAobV9pc0hv
bGRpbmdBc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFByb3hp
bWl0eU5ldHdvcmtpbmcsICJIb2xkaW5nIEJsdWV0b290aCBDbGFzc2ljIGFzc2VydGlvbi4iKTsK
KyAgICBbbV9pZHNTZXJ2aWNlIHNldExpbmtQcmVmZXJlbmNlczpAeyBJRFNMaW5rUHJlZmVyZW5j
ZU9wdGlvblBhY2tldHNQZXJTZWNvbmRLZXkgOiBAKDIwMCkgfV07CisgICAgbV9pc0hvbGRpbmdB
c3NlcnRpb24gPSB0cnVlOworfQorCit2b2lkIEJsdWV0b290aFByb3hpbWl0eUFzc2VydGlvbjo6
cmVsZWFzZU5vdygpCit7CisgICAgaWYgKCFtX2lzSG9sZGluZ0Fzc2VydGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlJlbGVhc2lu
ZyBCbHVldG9vdGggQ2xhc3NpYyBhc3NlcnRpb24uIik7CisgICAgW21faWRzU2VydmljZSBzZXRM
aW5rUHJlZmVyZW5jZXM6QHsgSURTTGlua1ByZWZlcmVuY2VPcHRpb25QYWNrZXRzUGVyU2Vjb25k
S2V5IDogQCgwKSB9XTsKKyAgICBtX2lzSG9sZGluZ0Fzc2VydGlvbiA9IGZhbHNlOworfQorCitX
aUZpUHJveGltaXR5QXNzZXJ0aW9uOjpXaUZpUHJveGltaXR5QXNzZXJ0aW9uKCkKKyAgICA6IG1f
d2lGaU1hbmFnZXJDbGllbnQgeyBhZG9wdENGKFdpRmlNYW5hZ2VyQ2xpZW50Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGtXaUZpQ2xpZW50VHlwZU5vcm1hbCkpIH0KK3sKK30KKwordm9pZCBX
aUZpUHJveGltaXR5QXNzZXJ0aW9uOjpob2xkTm93KCkKK3sKKyAgICBpZiAobV9pc0hvbGRpbmdB
c3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5l
dHdvcmtpbmcsICJIb2xkaW5nIFdpLUZpIGFzc2VydGlvbi4iKTsKKyAgICBBU1NFUlQoV2lGaU1h
bmFnZXJDbGllbnRHZXRUeXBlKG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0KCkpID09IGtXaUZpQ2xp
ZW50VHlwZU5vcm1hbCk7CisgICAgV2lGaU1hbmFnZXJDbGllbnRTZXRUeXBlKG1fd2lGaU1hbmFn
ZXJDbGllbnQuZ2V0KCksIGtXaUZpQ2xpZW50VHlwZURpcmVjdFRvQ2xvdWQpOworICAgIG1faXNI
b2xkaW5nQXNzZXJ0aW9uID0gdHJ1ZTsKK30KKwordm9pZCBXaUZpUHJveGltaXR5QXNzZXJ0aW9u
OjpyZWxlYXNlTm93KCkKK3sKKyAgICBpZiAoIW1faXNIb2xkaW5nQXNzZXJ0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiUmVsZWFz
aW5nIFdpLUZpIGFzc2VydGlvbi4iKTsKKyAgICBBU1NFUlQoV2lGaU1hbmFnZXJDbGllbnRHZXRU
eXBlKG1fd2lGaU1hbmFnZXJDbGllbnQuZ2V0KCkpID09IGtXaUZpQ2xpZW50VHlwZURpcmVjdFRv
Q2xvdWQpOworICAgIFdpRmlNYW5hZ2VyQ2xpZW50U2V0VHlwZShtX3dpRmlNYW5hZ2VyQ2xpZW50
LmdldCgpLCBrV2lGaUNsaWVudFR5cGVOb3JtYWwpOworICAgIG1faXNIb2xkaW5nQXNzZXJ0aW9u
ID0gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFBST1hJTUlUWV9ORVRXT1JLSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dhdGNob3MvTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZDJjNWIyNTE2MGIzOWE3MWU0OTlhNmFhYWE1YzkxZWQwZDY5YzkwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRjaG9zL05ldHdvcmtQcm94
aW1pdHlNYW5hZ2VyLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKKworI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworT0JKQ19DTEFTUyBJRFNTZXJ2aWNlOworT0JKQ19DTEFTUyBOU0FycmF5OworT0JK
Q19DTEFTUyBOU1VSTFJlcXVlc3Q7CitPQkpDX0NMQVNTIFdLUHJveGltaXR5U2VydmljZURlbGVn
YXRlOworT0JKQ19DTEFTUyBXUk1faVJBVEludGVyZmFjZTsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQ2hpbGRQcm9jZXNzOworY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2E7CitlbnVtIGNsYXNz
IE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbiA6IHVpbnQ4X3Q7CisKK2VudW0gY2xhc3Mg
UmVzdW1wdGlvblJlYXNvbiA6IHVpbnQ4X3QgeworICAgIFByb2Nlc3NGb3JlZ3JvdW5kaW5nLAor
ICAgIFByb2Nlc3NSZXN1bWluZywKK307CisKK2VudW0gY2xhc3MgU3VzcGVuc2lvblJlYXNvbiA6
IHVpbnQ4X3QgeworICAgIFByb2Nlc3NCYWNrZ3JvdW5kaW5nLAorICAgIFByb2Nlc3NTdXNwZW5k
aW5nCit9OworCitjbGFzcyBOZXR3b3JrUHJveGltaXR5U2VydmljZUNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+TmV0d29ya1Byb3hpbWl0eVNlcnZpY2VDbGllbnQoKSA9IGRlZmF1bHQ7
CisgICAgdmlydHVhbCB2b2lkIGRldmljZXNDaGFuZ2VkKE5TQXJyYXkgKmRldmljZXMpID0gMDsK
K307CisKK2NsYXNzIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyIGZpbmFsIDogcHVibGljIE5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudCwgcHJpdmF0ZSBOZXR3b3JrUHJveGltaXR5U2VydmljZUNsaWVu
dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIpOwor
cHVibGljOgorICAgIGV4cGxpY2l0IE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyKENoaWxkUHJvY2Vz
cyYpOworICAgIH5OZXR3b3JrUHJveGltaXR5TWFuYWdlcigpOworCisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisKKyAgICB2b2lkIGFwcGx5UHJvcGVydGllcyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSYsIE5TVVJM
UmVxdWVzdCAqJik7CisgICAgdm9pZCByZXN1bWUoUmVzdW1wdGlvblJlYXNvbik7CisgICAgdm9p
ZCBzdXNwZW5kKFN1c3BlbnNpb25SZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisKK3ByaXZhdGU6CisgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICBC
YWNrZ3JvdW5kZWQsCisgICAgICAgIEZvcmVncm91bmRlZCwKKyAgICAgICAgSW5pdGlhbGl6ZWQs
CisgICAgICAgIFJlc3VtZWQsCisgICAgICAgIFN1c3BlbmRlZCwKKyAgICB9OworCisgICAgYm9v
bCBpc0NvbXBhbmlvbkluUHJveGltaXR5KCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBhbmlvbklu
UHJveGltaXR5OyB9CisgICAgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uIHJlY29tbWVu
ZGF0aW9uKCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHko
KSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eTsgfQorCisg
ICAgdm9pZCBwcm9jZXNzUmVjb21tZW5kYXRpb25zKE5TQXJyYXkgKnJlY29tbWVuZGF0aW9ucyk7
CisgICAgdm9pZCByZXN1bWVSZWNvbW1lbmRhdGlvbnMoKTsKKyAgICB2b2lkIHN1c3BlbmRSZWNv
bW1lbmRhdGlvbnMoU3RhdGUgb2xkU3RhdGUpOworICAgIHZvaWQgdXBkYXRlQ29tcGFuaW9uUHJv
eGltaXR5KCk7CisgICAgdm9pZCB1cGRhdGVSZWNvbW1lbmRhdGlvbigpOworCisgICAgLy8gTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50CisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CisKKyAgICAvLyBOZXR3b3JrUHJv
eGltaXR5U2VydmljZUNsaWVudAorICAgIHZvaWQgZGV2aWNlc0NoYW5nZWQoTlNBcnJheSAqZGV2
aWNlcykgb3ZlcnJpZGU7CisKKyAgICB1bnNpZ25lZCBtX2NvbnRleHRJZGVudGlmaWVyIHsgMCB9
OworICAgIGJvb2wgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5IHsgZmFsc2UgfTsKKyAgICBib29s
IG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5IHsgZmFsc2UgfTsKKyAgICBTdGF0ZSBt
X3N0YXRlIHsgU3RhdGU6OkluaXRpYWxpemVkIH07CisgICAgUmV0YWluUHRyPFdSTV9pUkFUSW50
ZXJmYWNlPiBtX2lSQVRJbnRlcmZhY2U7CisgICAgUmV0YWluUHRyPElEU1NlcnZpY2U+IG1faWRz
U2VydmljZTsKKyAgICBSZXRhaW5QdHI8V0tQcm94aW1pdHlTZXJ2aWNlRGVsZWdhdGU+IG1faWRz
U2VydmljZURlbGVnYXRlOworICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fcmVj
b21tZW5kYXRpb25RdWV1ZTsKKyAgICBCbHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24gbV9ibHVl
dG9vdGhQcm94aW1pdHlBc3NlcnRpb247CisgICAgV2lGaVByb3hpbWl0eUFzc2VydGlvbiBtX3dp
RmlQcm94aW1pdHlBc3NlcnRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvcy9OZXR3b3JrUHJveGltaXR5TWFu
YWdlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zM2M5ZTJjN2NhNmMyN2MxODFmOTA1ZGVhYWJiM2U1NjMwYmI3
ZWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93YXRj
aG9zL05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tCkBAIC0wLDAgKzEsMzIzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3b3JrUHJveGltaXR5TWFuYWdl
ci5oIgorCisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQorCisjaW1wb3J0ICJMb2dn
aW5nLmgiCisjaW1wb3J0ICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgorI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgPElEUy9JRFMuaD4KKyNpbXBv
cnQgPFdpcmVsZXNzQ29leE1hbmFnZXIvV1JNX2lSQVRJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPHBh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CisKK1dURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQoU0NOZXR3b3JrSW50ZXJmYWNlKTsKKwor
QGludGVyZmFjZSBXS1Byb3hpbWl0eVNlcnZpY2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxJRFNTZXJ2
aWNlRGVsZWdhdGU+CistICh2b2lkKXNldENsaWVudDooV2ViS2l0OjpOZXR3b3JrUHJveGltaXR5
U2VydmljZUNsaWVudCopY2xpZW50OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tQcm94aW1p
dHlTZXJ2aWNlRGVsZWdhdGUgeworICAgIFdlYktpdDo6TmV0d29ya1Byb3hpbWl0eVNlcnZpY2VD
bGllbnQqIF9jbGllbnQ7Cit9CisKKy0gKHZvaWQpc2V0Q2xpZW50OihXZWJLaXQ6Ok5ldHdvcmtQ
cm94aW1pdHlTZXJ2aWNlQ2xpZW50KiljbGllbnQKK3sKKyAgICBfY2xpZW50ID0gY2xpZW50Owor
fQorCistICh2b2lkKXNlcnZpY2U6KElEU1NlcnZpY2UgKilzZXJ2aWNlIGRldmljZXNDaGFuZ2Vk
OihOU0FycmF5ICopZGV2aWNlcworeworICAgIGlmIChfY2xpZW50KQorICAgICAgICBfY2xpZW50
LT5kZXZpY2VzQ2hhbmdlZChkZXZpY2VzKTsKK30KKworLSAodm9pZClzZXJ2aWNlOihJRFNTZXJ2
aWNlICopc2VydmljZSBuZWFyYnlEZXZpY2VzQ2hhbmdlZDooTlNBcnJheSAqKWRldmljZXMKK3sK
KyAgICBpZiAoX2NsaWVudCkKKyAgICAgICAgX2NsaWVudC0+ZGV2aWNlc0NoYW5nZWQoZGV2aWNl
cyk7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTmV0d29y
a1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uIDogdWludDhfdCB7CisgICAgQmx1ZXRvb3RoLAorICAg
IE5vbmUsCisgICAgV2lGaSwKK307CisKK05ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpOZXR3b3Jr
UHJveGltaXR5TWFuYWdlcihDaGlsZFByb2Nlc3MmKQorICAgIDogbV9pZHNTZXJ2aWNlIHsgYWRv
cHROUyhbW0lEU1NlcnZpY2UgYWxsb2NdIGluaXRXaXRoU2VydmljZTpAImNvbS5hcHBsZS5wcml2
YXRlLmFsbG95LndlYmtpdG5ldHdvcmtpbmciXSkgfQorICAgICwgbV9pZHNTZXJ2aWNlRGVsZWdh
dGUgeyBhZG9wdE5TKFtbV0tQcm94aW1pdHlTZXJ2aWNlRGVsZWdhdGUgYWxsb2NdIGluaXRdKSB9
CisgICAgLCBtX3JlY29tbWVuZGF0aW9uUXVldWUgeyBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1
ZXVlX2NyZWF0ZSgiV2ViS2l0IE5ldHdvcmsgUHJveGltaXR5IFJlY29tbWVuZGF0aW9uIFF1ZXVl
IiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkgfQorICAgICwgbV9ibHVldG9vdGhQcm94aW1pdHlB
c3NlcnRpb24geyBtX2lkc1NlcnZpY2UuZ2V0KCkgfQoreworICAgIFttX2lkc1NlcnZpY2VEZWxl
Z2F0ZSBzZXRDbGllbnQ6dGhpc107CisgICAgW21faWRzU2VydmljZSBhZGREZWxlZ2F0ZTptX2lk
c1NlcnZpY2VEZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsK
K30KKworTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6On5OZXR3b3JrUHJveGltaXR5TWFuYWdlcigp
Cit7CisgICAgW21faWRzU2VydmljZURlbGVnYXRlIHNldENsaWVudDpudWxscHRyXTsKK30KKwor
Y29uc3QgY2hhciogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1cHBsZW1lbnROYW1lKCkKK3sK
KyAgICByZXR1cm4gIk5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyIjsKK30KKworc3RhdGljIHZvaWQg
YmluZFJlcXVlc3RUb1dpRmkoTlNVUkxSZXF1ZXN0IComIHJlcXVlc3QpCit7CisgICAgc3RhdGlj
IE5TU3RyaW5nICp3aUZpSW50ZXJmYWNlSWRlbnRpZmllciA9IFtdKCkgLT4gTlNTdHJpbmcgKiB7
CisgICAgICAgIGF1dG8gaW50ZXJmYWNlcyA9IGFkb3B0Q0YoU0NOZXR3b3JrSW50ZXJmYWNlQ29w
eUFsbCgpKTsKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRD
b3VudChpbnRlcmZhY2VzLmdldCgpKTsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGF1
dG8gaW50ZXJmYWNlID0gY2hlY2tlZF9jZl9jYXN0PFNDTmV0d29ya0ludGVyZmFjZVJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChpbnRlcmZhY2VzLmdldCgpLCBpKSk7CisgICAgICAgICAgICBp
ZiAoIUNGRXF1YWwoU0NOZXR3b3JrSW50ZXJmYWNlR2V0SW50ZXJmYWNlVHlwZShpbnRlcmZhY2Up
LCBrU0NOZXR3b3JrSW50ZXJmYWNlVHlwZUlFRUU4MDIxMSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHJldGFpblB0cihTQ05ldHdv
cmtJbnRlcmZhY2VHZXRCU0ROYW1lKGludGVyZmFjZSkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0coUHJveGltaXR5TmV0d29ya2luZywgIkRldGVybWluZWQgV2ktRmkgaW50ZXJmYWNlIGlkZW50
aWZpZXIgaXMgJUAuIiwgaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gKE5T
U3RyaW5nICopaWRlbnRpZmllci5sZWFrUmVmKCk7CisgICAgICAgIH0KKworICAgICAgICBSRUxF
QVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiRmFpbGVkIHRvIGRldGVybWluZSBXaS1GaSBp
bnRlcmZhY2UgaWRlbnRpZmllci4iKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9KCk7CisK
KyAgICBpZiAoIXdpRmlJbnRlcmZhY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIG11dGFibGVSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOwor
ICAgIFttdXRhYmxlUmVxdWVzdCBzZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6d2lGaUludGVy
ZmFjZUlkZW50aWZpZXJdOworICAgIHJlcXVlc3QgPSBtdXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFz
ZSgpOworfQorCit2b2lkIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjphcHBseVByb3BlcnRpZXMo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0NvY29hJiBkYXRhVGFzaywgTlNVUkxSZXF1ZXN0IComIG5zUmVxdWVzdCkKK3sKKyAg
ICAvLyBJZiB0aGUgY2xpZW50IGhhcyBhbHJlYWR5IGJvdW5kIHRoZSByZXF1ZXN0IHRvIGFuIGlk
ZW50aWZpZXIsIGRvbid0IG92ZXJyaWRlIGl0LgorICAgIGlmIChuc1JlcXVlc3QuYm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRhdGFU
YXNrLmlzVG9wTGV2ZWxOYXZpZ2F0aW9uKCkpCisgICAgICAgIHVwZGF0ZVJlY29tbWVuZGF0aW9u
KCk7CisKKyAgICBzd2l0Y2ggKHJlY29tbWVuZGF0aW9uKCkpIHsKKyAgICBjYXNlIE5ldHdvcmtQ
cm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6Qmx1ZXRvb3RoOgorICAgICAgICBkYXRhVGFzay5ob2xk
UHJveGltaXR5QXNzZXJ0aW9uKG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246Ok5vbmU6
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9u
OjpXaUZpOgorICAgICAgICBkYXRhVGFzay5ob2xkUHJveGltaXR5QXNzZXJ0aW9uKG1fd2lGaVBy
b3hpbWl0eUFzc2VydGlvbik7CisgICAgICAgIGJpbmRSZXF1ZXN0VG9XaUZpKG5zUmVxdWVzdCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdl
cjo6cmVzdW1lKFJlc3VtcHRpb25SZWFzb24gcmVhc29uKQoreworICAgIHN3aXRjaCAocmVhc29u
KSB7CisgICAgY2FzZSBSZXN1bXB0aW9uUmVhc29uOjpQcm9jZXNzRm9yZWdyb3VuZGluZzoKKyAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpGb3JlZ3JvdW5kZWQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUmVzdW1wdGlvblJlYXNvbjo6UHJvY2Vzc1Jlc3VtaW5nOgorICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlc3VtZWQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlc3VtZVJl
Y29tbWVuZGF0aW9ucygpOworCisgICAgc3dpdGNoIChyZWNvbW1lbmRhdGlvbigpKSB7CisgICAg
Y2FzZSBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246OkJsdWV0b290aDoKKyAgICAgICAg
bV9ibHVldG9vdGhQcm94aW1pdHlBc3NlcnRpb24ucmVzdW1lKHJlYXNvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTmV0d29ya1Byb3hpbWl0eVJlY29tbWVuZGF0aW9uOjpOb25lOgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE5ldHdvcmtQcm94aW1pdHlSZWNvbW1lbmRhdGlvbjo6V2lG
aToKKyAgICAgICAgbV93aUZpUHJveGltaXR5QXNzZXJ0aW9uLnJlc3VtZShyZWFzb24pOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1
c3BlbmQoU3VzcGVuc2lvblJlYXNvbiByZWFzb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIG9sZFN0YXRlID0gbV9zdGF0ZTsKKyAg
ICBzd2l0Y2ggKHJlYXNvbikgeworICAgIGNhc2UgU3VzcGVuc2lvblJlYXNvbjo6UHJvY2Vzc0Jh
Y2tncm91bmRpbmc6CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QmFja2dyb3VuZGVkOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFN1c3BlbnNpb25SZWFzb246OlByb2Nlc3NTdXNwZW5kaW5n
OgorICAgICAgICBtX3N0YXRlID0gU3RhdGU6OlN1c3BlbmRlZDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgc3VzcGVuZFJlY29tbWVuZGF0aW9ucyhvbGRTdGF0ZSk7CisKKyAgICBhdXRv
IHdyYXBwZWRDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5nLCAiRmlu
aXNoZWQgc3VzcGVuZGluZyBOZXR3b3JrUHJveGltaXR5TWFuYWdlciAoc3RhdGU6ICVoaHUpLiIs
IG1fc3RhdGUpOworICAgIH07CisKKyAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlOZXR3b3JraW5n
LCAiU3VzcGVuZGluZyBOZXR3b3JrUHJveGltaXR5TWFuYWdlciAoc3RhdGU6ICVoaHUpLiIsIG1f
c3RhdGUpOworICAgIG1fYmx1ZXRvb3RoUHJveGltaXR5QXNzZXJ0aW9uLnN1c3BlbmQocmVhc29u
LCBXVEZNb3ZlKHdyYXBwZWRDb21wbGV0aW9uSGFuZGxlcikpOworICAgIG1fd2lGaVByb3hpbWl0
eUFzc2VydGlvbi5zdXNwZW5kKHJlYXNvbiwgW10geyB9KTsKK30KKworTmV0d29ya1Byb3hpbWl0
eVJlY29tbWVuZGF0aW9uIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpyZWNvbW1lbmRhdGlvbigp
IGNvbnN0Cit7CisgICAgaWYgKCFpc0NvbXBhbmlvbkluUHJveGltaXR5KCkpCisgICAgICAgIHJl
dHVybiBOZXR3b3JrUHJveGltaXR5UmVjb21tZW5kYXRpb246Ok5vbmU7CisKKyAgICBpZiAoc2hv
dWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5KCkpCisgICAgICAgIHJldHVybiBOZXR3b3JrUHJv
eGltaXR5UmVjb21tZW5kYXRpb246OldpRmk7CisKKyAgICByZXR1cm4gTmV0d29ya1Byb3hpbWl0
eVJlY29tbWVuZGF0aW9uOjpCbHVldG9vdGg7Cit9CisKK3ZvaWQgTmV0d29ya1Byb3hpbWl0eU1h
bmFnZXI6OnByb2Nlc3NSZWNvbW1lbmRhdGlvbnMoTlNBcnJheSAqcmVjb21tZW5kYXRpb25zKQor
eworICAgIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5ID0gZmFsc2U7CisgICAgYm9v
bCBkaWRTZWVEaXJlY3RXaUZpUmVjb21tZW5kYXRpb24gPSBmYWxzZTsKKyAgICBmb3IgKFdSTV9p
UkFUUHJveGltaXR5UmVjb21tZW5kYXRpb24gKnJlY29tbWVuZGF0aW9uIGluIHJlY29tbWVuZGF0
aW9ucykgeworICAgICAgICBzd2l0Y2ggKHJlY29tbWVuZGF0aW9uLlJlY29tbWVuZGF0aW9uVHlw
ZSkgeworICAgICAgICBjYXNlIFdSTVJlY29tbWVuZGF0aW9uTGlua1R5cGVCVDoKKyAgICAgICAg
Y2FzZSBXUk1SZWNvbW1lbmRhdGlvbkxpbmtUeXBlQ29tcGFuaW9uV2lmaToKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdSTVJlY29tbWVuZGF0aW9uTGlua1R5cGVEaXJlY3RXaWZp
OgorICAgICAgICAgICAgQVNTRVJUKCFkaWRTZWVEaXJlY3RXaUZpUmVjb21tZW5kYXRpb24pOwor
ICAgICAgICAgICAgZGlkU2VlRGlyZWN0V2lGaVJlY29tbWVuZGF0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgICAgIG1fc2hvdWxkVXNlRGlyZWN0V2lGaUluUHJveGltaXR5ID0gcmVjb21tZW5kYXRpb24u
bGlua1JlY29tbWVuZGF0aW9uSXNWYWxpZCAmJiByZWNvbW1lbmRhdGlvbi5saW5rSXNSZWNvbW1l
bmRlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgUkVMRUFT
RV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlByb2Nlc3NlZCBpUkFUTWFuYWdlciByZWNvbW1l
bmRhdGlvbnMgKHNob3VsZFVzZURpcmVjdFdpRmlJblByb3hpbWl0eTogJWQpLlxuIiwgbV9zaG91
bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHkpOworfQorCitzdGF0aWMgV0NNUHJvY2Vzc0lkIHRv
UHJvY2Vzc0lEKHVuc2lnbmVkIGNvbnRleHRJZGVudGlmaWVyKQoreworICAgIHN3aXRjaCAoY29u
dGV4dElkZW50aWZpZXIpIHsKKyAgICBjYXNlIFdSTVdlYmtpdDoKKyAgICAgICAgcmV0dXJuIFdS
TVdlYmtpdDsKKyAgICBjYXNlIFdSTVdlYmtpdE1haWw6CisgICAgICAgIHJldHVybiBXUk1XZWJr
aXRNYWlsOworICAgIGNhc2UgV1JNV2Via2l0Tm90aWZpY2F0aW9uOgorICAgICAgICByZXR1cm4g
V1JNV2Via2l0Tm90aWZpY2F0aW9uOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXQ01V
bmtub3duOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6cmVzdW1l
UmVjb21tZW5kYXRpb25zKCkKK3sKKyAgICBpZiAobV9pUkFUSW50ZXJmYWNlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1cGRhdGVDb21wYW5pb25Qcm94aW1pdHkoKTsKKworICAgIGF1dG8gcHJv
Y2Vzc0lEID0gdG9Qcm9jZXNzSUQobV9jb250ZXh0SWRlbnRpZmllcik7CisgICAgaWYgKHByb2Nl
c3NJRCA9PSBXQ01Vbmtub3duKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb3hpbWl0eU5ldHdv
cmtpbmcsICJJbnZhbGlkIFdDTSBwcm9jZXNzIElEICglZCkuIiwgbV9jb250ZXh0SWRlbnRpZmll
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlO
ZXR3b3JraW5nLCAiUmVnaXN0ZXJpbmcgd2l0aCBpUkFUTWFuYWdlciAoV0NNIHByb2Nlc3MgSUQ6
ICVkLCBzdGF0ZTogJWhodSkuIiwgcHJvY2Vzc0lELCBtX3N0YXRlKTsKKyAgICBtX2lSQVRJbnRl
cmZhY2UgPSBhZG9wdE5TKFtbV1JNX2lSQVRJbnRlcmZhY2UgYWxsb2NdIGluaXRdKTsKKyAgICBb
bV9pUkFUSW50ZXJmYWNlIHJlZ2lzdGVyQ2xpZW50OnByb2Nlc3NJRCBxdWV1ZTptX3JlY29tbWVu
ZGF0aW9uUXVldWUuZ2V0KCldOworICAgIHVwZGF0ZVJlY29tbWVuZGF0aW9uKCk7Cit9CisKK3Zv
aWQgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI6OnN1c3BlbmRSZWNvbW1lbmRhdGlvbnMoU3RhdGUg
b2xkU3RhdGUpCit7CisgICAgLy8gSWYgdGhpcyBpcyBub3QgYSBmb3JlZ3JvdW5kLXRvLWJhY2tn
cm91bmQgdHJhbnNpdGlvbiwgYXZvaWQgdW5yZWdpc3RlcmluZy4gUGFnZSBsb2FkcyBjYW4KKyAg
ICAvLyBvZnRlbiBjYXVzZSB0aGUgbmV0d29yayBwcm9jZXNzIHRvIHJlc3VtZSwgdHJhbnNpdGlv
biB0byB0aGUgYmFja2dyb3VuZCwgdGhlbiB0cmFuc2l0aW9uIHRvCisgICAgLy8gdGhlIGZvcmVn
cm91bmQgaW4gcmFwaWQgc3VjY2Vzc2lvbiwgY2F1c2luZyB1bm5lY2Vzc2FyeSBpUkFUTWFuYWdl
ciByZWdpc3RyYXRpb24gY2h1cm4gYW5kCisgICAgLy8gZXhwb3NpbmcgYnVncyBzdWNoIGFzIDxy
ZGFyOi8vcHJvYmxlbS80MjU2MDMyMD4uCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkJhY2tn
cm91bmRlZCAmJiBvbGRTdGF0ZSAhPSBTdGF0ZTo6Rm9yZWdyb3VuZGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIW1faVJBVEludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UkVMRUFTRV9MT0coUHJveGltaXR5TmV0d29ya2luZywgIlVucmVnaXN0ZXJpbmcgd2l0aCBpUkFU
TWFuYWdlciAoV0NNIHByb2Nlc3MgSUQ6ICVkLCBzdGF0ZTogJWhodSkuIiwgbV9jb250ZXh0SWRl
bnRpZmllciwgbV9zdGF0ZSk7CisgICAgW21faVJBVEludGVyZmFjZSB1bnJlZ2lzdGVyQ2xpZW50
XTsKKyAgICBtX2lSQVRJbnRlcmZhY2UgPSBuaWw7CisgICAgbV9pc0NvbXBhbmlvbkluUHJveGlt
aXR5ID0gZmFsc2U7CisgICAgbV9zaG91bGRVc2VEaXJlY3RXaUZpSW5Qcm94aW1pdHkgPSBmYWxz
ZTsKK30KKwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6dXBkYXRlQ29tcGFuaW9uUHJv
eGltaXR5KCkKK3sKKyAgICBtX2lzQ29tcGFuaW9uSW5Qcm94aW1pdHkgPSBmYWxzZTsKKyAgICBm
b3IgKElEU0RldmljZSAqZGV2aWNlIGluIFttX2lkc1NlcnZpY2UgZGV2aWNlc10pIHsKKyAgICAg
ICAgaWYgKGRldmljZS5pc0RlZmF1bHRQYWlyZWREZXZpY2UgJiYgZGV2aWNlLmlzTmVhcmJ5KSB7
CisgICAgICAgICAgICBtX2lzQ29tcGFuaW9uSW5Qcm94aW1pdHkgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSRUxFQVNFX0xPRyhQcm94aW1pdHlO
ZXR3b3JraW5nLCAiRGV0ZXJtaW5lZCBjb21wYW5pb24gcHJveGltaXR5IChpc0NvbXBhbmlvbklu
UHJveGltaXR5OiAlZCkuIiwgbV9pc0NvbXBhbmlvbkluUHJveGltaXR5KTsKK30KKwordm9pZCBO
ZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6dXBkYXRlUmVjb21tZW5kYXRpb24oKQoreworICAgIGlm
ICghaXNDb21wYW5pb25JblByb3hpbWl0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1faVJBVEludGVyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0coUHJv
eGltaXR5TmV0d29ya2luZywgIlJlcXVlc3RpbmcgYW4gaW1tZWRpYXRlIHJlY29tbWVuZGF0aW9u
IGZyb20gaVJBVE1hbmFnZXIuIik7CisKKyAgICBhdXRvIHNlbWFwaG9yZSA9IGFkb3B0T1NPYmpl
Y3QoZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgwKSk7CisgICAgW21faVJBVEludGVyZmFjZSBn
ZXRQcm94aW1pdHlMaW5rUmVjb21tZW5kYXRpb246Tk8gcmVjb21tZW5kYXRpb246W3RoaXMsIHNl
bWFwaG9yZV0oTlNBcnJheTxXUk1faVJBVFByb3hpbWl0eVJlY29tbWVuZGF0aW9uICo+ICpyZWNv
bW1lbmRhdGlvbnMpIHsKKyAgICAgICAgcHJvY2Vzc1JlY29tbWVuZGF0aW9ucyhyZWNvbW1lbmRh
dGlvbnMpOworICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKHNlbWFwaG9yZS5nZXQo
KSk7CisgICAgfV07CisKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChzZW1hcGhvcmUuZ2V0
KCksIGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIDEgKiBOU0VDX1BFUl9TRUMpKTsK
K30KKwordm9pZCBOZXR3b3JrUHJveGltaXR5TWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBtX2NvbnRl
eHRJZGVudGlmaWVyID0gcGFyYW1ldGVycy53aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyOworICAg
IHJlc3VtZShSZXN1bXB0aW9uUmVhc29uOjpQcm9jZXNzUmVzdW1pbmcpOworfQorCit2b2lkIE5l
dHdvcmtQcm94aW1pdHlNYW5hZ2VyOjpkZXZpY2VzQ2hhbmdlZChOU0FycmF5ICopCit7CisgICAg
dXBkYXRlQ29tcGFuaW9uUHJveGltaXR5KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xv
Z2dpbmcuaAppbmRleCBkYTdjYTU4YjEyNGUzMjAxNzk5MTc3OWQ0Zjg3ZjJhZDQ3OGExYWQxLi45
YmMzZTRmM2QxMWExNzAxNmYyZjgwODgyODJiZmU0MTNlYjljZjkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0xvZ2dpbmcuaApAQCAtNjcsNiArNjcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFByb2Nlc3Mp
IFwKICAgICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCiAgICAgTShQcm9jZXNzU3dhcHBpbmcpIFwK
KyAgICBNKFByb3hpbWl0eU5ldHdvcmtpbmcpIFwKICAgICBNKFJlbW90ZUxheWVyVHJlZSkgXAog
ICAgIE0oUmVzaXplKSBcCiAgICAgTShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSBcCkBAIC04MSw3
ICs4Miw2IEBAIGV4dGVybiAiQyIgewogICAgIE0oVmlydHVhbE1lbW9yeSkgXAogICAgIE0oVmlz
aWJsZVJlY3RzKSBcCiAgICAgTShXZWJSVEMpIFwKLSAgICBNKFdpRmlBc3NlcnRpb25zKSBcCiAK
IFdFQktJVDJfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9Nb2JpbGVXaUZpU1BJLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvTW9iaWxlV2lGaVNQSS5oCmluZGV4IGRiY2U5ZDA1OGIx
OWJhMGJkMDdlNWE3Y2Y5M2JjZjkwMWNjOGVjNWMuLjYxYjMwMTZmZTM3Njk4MDkyYThmMWJkNDRm
Mjk1OTRiZWIxOTJlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9Nb2JpbGVXaUZpU1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL01v
YmlsZVdpRmlTUEkuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKIAotI2luY2x1ZGUgPE1vYmlsZVdpRmkvV2lGaU1hbmFnZXJDbGllbnQuaD4KKyNpbmNs
dWRlIDxNb2JpbGVXaUZpL01vYmlsZVdpRmkuaD4KIAogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcAppbmRleCBjYmFlOWI5ZDdlZjk4NTdjYTBlMDMxYWMxYzYyZjFlZjZkMTA2ZDYyLi5hZjE2
N2RlNGY5YTYyYjM3YWIwNjk1OWE3OGY3NDk5MDcxNTY4YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAgICAgY29weS0+bV9wcm9jZXNzU3dhcHNP
bk5hdmlnYXRpb24gPSB0aGlzLT5tX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbjsKICAgICBjb3B5
LT5tX2Fsd2F5c0tlZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXMgPSB0aGlzLT5tX2Fsd2F5c0tl
ZXBBbmRSZXVzZVN3YXBwZWRQcm9jZXNzZXM7CiAgICAgY29weS0+bV9wcm9jZXNzU3dhcHNPbldp
bmRvd09wZW5XaXRoT3BlbmVyID0gdGhpcy0+bV9wcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRo
T3BlbmVyOwotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCisjaWYgRU5BQkxFKFBST1hJTUlU
WV9ORVRXT1JLSU5HKQogICAgIGNvcHktPm1fd2lyZWxlc3NDb250ZXh0SWRlbnRpZmllciA9IHRo
aXMtPm1fd2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcjsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDA0OWMyMTQ1NjI5YmUzN2YwOTQyZTE1MWVmMmM5
MjAwN2U0MzE0YmQuLjU1ODcyMmVlMGYyMTkxOTc2ZDY2NGQyY2FkYzZjY2IxMGEzZWI2M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
V1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fY3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyOyB9
CiAgICAgdm9pZCBzZXRDdXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoY29u
c3QgV1RGOjpTdHJpbmcmIGN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcikg
eyBtX2N1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllciA9IGN1c3RvbVdlYkNv
bnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcjsgfQogCi0jaWYgRU5BQkxFKFdJRklfQVNTRVJU
SU9OUykKKyNpZiBFTkFCTEUoUFJPWElNSVRZX05FVFdPUktJTkcpCiAgICAgdW5zaWduZWQgd2ly
ZWxlc3NDb250ZXh0SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fd2lyZWxlc3NDb250ZXh0
SWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0V2lyZWxlc3NDb250ZXh0SWRlbnRpZmllcih1bnNp
Z25lZCB3aXJlbGVzc0NvbnRleHRJZGVudGlmaWVyKSB7IG1fd2lyZWxlc3NDb250ZXh0SWRlbnRp
ZmllciA9IHdpcmVsZXNzQ29udGV4dElkZW50aWZpZXI7IH0KICNlbmRpZgpAQCAtMjA1LDcgKzIw
NSw3IEBAIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9jdERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGU7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMpCisjaWYgRU5BQkxF
KFBST1hJTUlUWV9ORVRXT1JLSU5HKQogICAgIHVuc2lnbmVkIG1fd2lyZWxlc3NDb250ZXh0SWRl
bnRpZmllciB7IDAgfTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQpp
bmRleCA1MWIyMDQ5NzAzNzY5YjVhYTA1YzliODc2NmYwNjNmOGZlZWZiZjNlLi44M2ZkZmYxYzM2
M2VhY2E1NGFiNGIxNzliZTYyNWQxODc4OTVhODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW0KQEAgLTEzOSw3ICsxMzksNyBAQCAtICh2b2lkKXNldEFkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFVSTHM6KE5TQXJyYXk8TlNVUkwgKj4gKilhZGRpdGlvbmFsUmVhZEFjYwogICAg
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dl
ZFBhdGhzKFdURk1vdmUocGF0aHMpKTsKIH0KIAotI2lmIEVOQUJMRShXSUZJX0FTU0VSVElPTlMp
CisjaWYgRU5BQkxFKFBST1hJTUlUWV9ORVRXT1JLSU5HKQogLSAoTlNVSW50ZWdlcil3aXJlbGVz
c0NvbnRleHRJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24tPndpcmVsZXNzQ29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGNlNTg2ZGMxMzU1
ZDZhNDI2YjRhYTEyZDU5YjIxZjcwYmY3MGUwODYuLmI0NzlmMzhkNmVmZGM4YzRkYzAzMzY2YjU1
NWJiM2Q0NTZhMzBlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhCiAgICAgICAgIHBhcmFtZXRlcnMucmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlv
biA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUo
V0lGSV9BU1NFUlRJT05TKQorI2lmIEVOQUJMRShQUk9YSU1JVFlfTkVUV09SS0lORykKICAgICBw
YXJhbWV0ZXJzLndpcmVsZXNzQ29udGV4dElkZW50aWZpZXIgPSBtX2NvbmZpZ3VyYXRpb24tPndp
cmVsZXNzQ29udGV4dElkZW50aWZpZXIoKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODY1YWRhOTM1NTZjZjM0M2Zl
YTc1MTFiZDg4NzU3YjdlYzBlMzc3NC4uMGE3MWQ1Mzk4NzRjYjc2OTNhZGZjZmNiMmE3MTE1NTNi
YmRiZTE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNTkzLDYgKzE1OTMsMTAgQEAKIAkJQTEwMkE3MDgxRUMwRUVFOTAwRDgxRDgy
IC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiIGluIENvcHkgUGx1
Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBNUUzOTQ5MUQ1QkQ4QTcwMEI0QjdDRSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIg
RVNSLnBsdWdpbi5zYiAqLzsgfTsKIAkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERG
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEw
NDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oICovOyB9OwogCQlBMTA0NkVBMjIw
NzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmll
dy5tbSAqLzsgfTsKKwkJQTExNDU1QUMyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1p
dHlBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMTQ1NUFBMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9u
LmggKi87IH07CisJCUExMTQ1NUFEMjExRkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5
QXNzZXJ0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24u
bW0gKi87IH07CisJCUExMTQ1NUIwMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTExNDU1QUUyMTFGRDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLmggKi87
IH07CisJCUExMTQ1NUIxMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTQ1
NUFGMjExRkQyNTIwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSAqLzsgfTsK
IAkJQTExNURDNzExOTFEODJENzAwREE4MDcyIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZE
MTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi87IH07CiAJ
CUExMTVEQzcyMTkxRDgyREEwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZFMTkx
RDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTE4QTlFRTE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlj
a0xvb2tEb2N1bWVudERhdGEuY3BwICovOyB9OwpAQCAtMTYxNCw4ICsxNjE4LDYgQEAKIAkJQTFD
NTEyQzgxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNTEyQzYxOTA2NTZF
NTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwICovOyB9OwogCQlBMUM1MTJD
OTE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNTEyQzcxOTA2NTZFNTAwNDQ4
OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaCAqLzsgfTsKIAkJQTFENDIwNDcxREI1NTc4
NTAwQkI2QjBEIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVBMDIzNTFEQUJGRjdFMDA5NjAyMUYgLyog
V0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcCAqLzsgfTsKLQkJQTFEQUZEREYyMDdFOUIxNjAwNUU4
QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExREFGREREMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0
aW9uSG9sZGVyLmggKi87IH07Ci0JCUExREFGREUwMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNz
ZXJ0aW9uSG9sZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFEQUZEREUyMDdFOUIxNjAwNUU4QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIubW0g
Ki87IH07CiAJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzEwMThF
MEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLzsgfTsKIAkJQTFERjYzMTMxOEUw
QjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxv
YWRDbGllbnQuaCAqLzsgfTsKIAkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRp
bmVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
RTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi87IH07CkBAIC00MTk3
LDYgKzQxOTksMTAgQEAKIAkJOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFBy
aXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tDb250ZXh0UHJp
dmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFOUYyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS1BERlZpZXcuaDsgcGF0aCA9IGlvcy9XS1BERlZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTEwNDZFQTAyMDc5MjYzMTAwRjBDNUQ4IC8qIFdL
UERGVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUERGVmlldy5tbTsgcGF0aCA9IGlv
cy9XS1BERlZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMTQ1NUFBMjEx
RkNGQ0EwMENBOTM1QiAvKiBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtQcm94aW1pdHlBc3NlcnRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTExNDU1QUIyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlBc3NlcnRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJveGltaXR5QXNzZXJ0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE0NTVBRTIxMUZEMjUyMDBDQTkzNUIg
LyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb3hp
bWl0eU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExNDU1QUYyMTFG
RDI1MjAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94aW1pdHlNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExMTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJW
aWV3UHJpbnRGb3JtYXR0ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMTVE
QzZFMTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBR
dWlja0xvb2tEb2N1bWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1
bWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIxNyw4ICs0MjIz
LDYgQEAKIAkJQTFBNEZFNjAxOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWREZWxlZ2F0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUM1MTJDNjE5MDY1NkU1MDA0NDg5MTQg
LyogV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDsgcGF0aCA9IGlvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNTEy
QzcxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJldmlld0xvYWRlckNsaWVudC5oOyBwYXRoID0g
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQTFEQUZEREQyMDdFOUIxNjAwNUU4QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2lGaUFzc2VydGlvbkhvbGRlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvV2lGaUFzc2VydGlvbkhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBMURBRkRERTIwN0U5QjE2MDA1RThBNTIgLyogV2lGaUFzc2VydGlvbkhvbGRlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdpRmlBc3NlcnRpb25Ib2xkZXIubW07IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9XaUZpQXNzZXJ0aW9uSG9sZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZENsaWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJB
IC8qIERvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
d25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRTY4ODZGMUY2
RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YXJhbnRp
bmVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1NTMsNiArNjU1Nyw3IEBA
CiAJCQkJRTE3OThDNzYxNkU2ODE1NTAwMjQwMTM5IC8qIEZpbGVBUEkgKi8sCiAJCQkJMkRBOTQ0
QkIxODg1MTFERDAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJCQk1MTBDQzdEQzE2MTM4RTI5MDBEMDNF
RDMgLyogbWFjICovLAorCQkJCUExMTQ1NUExMjExRkNFN0YwMENBOTM1QiAvKiB3YXRjaG9zICov
LAogCQkJCTQxMzA3NTk3MURFODRFRDcwMDM5RUM2OSAvKiB3ZWJydGMgKi8sCiAJCQkJNTNGM0NB
QTUyMDZDNDQzRTAwODY0OTBFIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuY3BwICovLAogCQkJ
CTUzNUJDQjkwMjA2OUM0OUMwMENDQ0UwMiAvKiBOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmggKi8s
CkBAIC03MTE3LDggKzcxMjIsNiBAQAogCQkJCTdFQzRGMEY5MThFNEE5NDUwMDgwNTZBRiAvKiBO
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tICovLAogCQkJCTUzMjE1OTUwMURCQUU2RDcwMDU0QUEzQyAv
KiBOZXR3b3JrU2Vzc2lvbkNvY29hLmggKi8sCiAJCQkJNUMyMENCOUIxQkIwRENEMjAwODk1QkIx
IC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gKi8sCi0JCQkJQTFEQUZEREQyMDdFOUIxNjAwNUU4
QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIuaCAqLywKLQkJCQlBMURBRkRERTIwN0U5QjE2MDA1
RThBNTIgLyogV2lGaUFzc2VydGlvbkhvbGRlci5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gY29j
b2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzE4OSw2ICs3MTkyLDE4IEBACiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMTE0
NTVBMTIxMUZDRTdGMDBDQTkzNUIgLyogd2F0Y2hvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQTExNDU1QUEyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdv
cmtQcm94aW1pdHlBc3NlcnRpb24uaCAqLywKKwkJCQlBMTE0NTVBQjIxMUZDRkNBMDBDQTkzNUIg
LyogTmV0d29ya1Byb3hpbWl0eUFzc2VydGlvbi5tbSAqLywKKwkJCQlBMTE0NTVBRTIxMUZEMjUy
MDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIuaCAqLywKKwkJCQlBMTE0NTVBRjIx
MUZEMjUyMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eU1hbmFnZXIubW0gKi8sCisJCQkpOwor
CQkJbmFtZSA9IHdhdGNob3M7CisJCQlwYXRoID0gTmV0d29ya1Byb2Nlc3Mvd2F0Y2hvczsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUExODJENUIxMUJFNkJDRjQwMDg3QTdD
QyAvKiBpb3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
OTI1Niw2ICs5MjcxLDggQEAKIAkJCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29y
a1Byb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzQTE2M0QxNjMwODhGNjAwNUQ3
RDIyIC8qIE5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUMxNDI2RUUxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTExNDU1QUMyMTFGQ0ZDQTAwQ0E5MzVCIC8qIE5ldHdvcmtQcm94
aW1pdHlBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUExMTQ1NUIwMjExRkQyNTIwMENB
OTM1QiAvKiBOZXR3b3JrUHJveGltaXR5TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
RDE4QjYxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTE1MjU1MUIxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZGMDFDMjNGODA5MDBENDEx
ODMgLyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTY0NCw3ICs5NjYxLDYgQEAKIAkJCQkxNTczOUJCRDFCNDIwNDJEMDBEMjU4QzEgLyogV2ViVXNl
ck1lZGlhQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0VFNTc1QzFEQjdENjExMDBDNzRD
NTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
RkM3REJCMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTFEQUZEREYyMDdFOUIxNjAwNUU4QTUyIC8qIFdpRmlBc3NlcnRpb25Ib2xkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkyMzJERjQxOEIyOUQ2
ODAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlw
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTExMDAsNiArMTExMTYsOCBAQAogCQkJCUUxNEE5NTQ5
MTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTNBMTYzQzE2MzA4OEY2MDA1RDdE
MjIgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBMTE0NTVBRDIxMUZDRkNBMDBDQTkzNUIgLyogTmV0d29ya1Byb3hpbWl0eUFzc2Vy
dGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUExMTQ1NUIxMjExRkQyNTIwMENBOTM1QiAvKiBO
ZXR3b3JrUHJveGltaXR5TWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRkQxOEI1MTY1
MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE1MjU1MUExNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjZFRjFDMjNGODA5MDBE
NDExODMgLyogTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0xMTU4OCw3ICsxMTYwNiw2IEBACiAJCQkJODNFRTU3NUIxREI3RDYxMTAwQzc0QzUwIC8q
IFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERkM3
REJDMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUMwMzM3REQxMTI3QTI5ODAwMDhGRjRGNCAvKiBXZWJXaGVlbEV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUExREFGREUwMjA3RTlCMTYwMDVFOEE1MiAvKiBXaUZpQXNzZXJ0aW9uSG9sZGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4MTYwRDAxODc2NDU1NzAwMjFFNzlEIC8qIFdpbmRv
d1NlcnZlckNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUNENTVBQjEyOEUyOTRG
MDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gaW4gU291cmNl
cyAqLywKIAkJCQkyOTIzMkRGODE4QjJBOUFFMDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdElPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jb25maWcuaCBiL1NvdXJjZS9XZWJLaXQvY29uZmlnLmgKaW5kZXggNjM3OTgyNzhjYzllMWIy
MDA4Y2ZlZmJiZDU5YThjOWYzOGI3ODI4Zi4uMTRjYWM4NDE4YmVmOTkwNzYwYzBlNjJkYzA3OGZl
ODZiMDFlMTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jb25maWcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2NvbmZpZy5oCkBAIC0xMTksMTQgKzExOSw2IEBACiAjZW5kaWYKICNlbmRpZgog
Ci0jaWZuZGVmIEhBVkVfTU9CSUxFX1dJRkkKLSNpZiBQTEFURk9STShJT1MpICYmICFUQVJHRVRf
T1NfU0lNVUxBVE9SICYmICFQTEFURk9STShJT1NNQUMpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCi0jZGVmaW5lIEhBVkVfTU9CSUxFX1dJRkkgMQotI2Vsc2UKLSNkZWZpbmUgSEFWRV9NT0JJ
TEVfV0lGSSAwCi0jZW5kaWYKLSNlbmRpZgotCiAjaWYgKChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAm
JiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApKSAmJiAhZGVmaW5l
ZChfX2kzODZfXykgJiYgIVBMQVRGT1JNKElPU01BQykKICNkZWZpbmUgSEFWRV9TQUZFX0JST1dT
SU5HIDEKICNlbHNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>