<?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>223087</bug_id>
          
          <creation_ts>2021-03-11 13:53:38 -0800</creation_ts>
          <short_desc>Introduce WorkQueue::main() to get the main thread&apos;s work queue</short_desc>
          <delta_ts>2021-03-11 16:25:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1738605</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 13:53:38 -0800</bug_when>
    <thetext>Introduce WorkQueue::main() to get the main thread&apos;s work queue. This allows us to port some more code from dispatch_queue to WorkQueue. It also simplifies some code that has to deal that sometimes needs to run on the main thread and other times on a background queue. Having a single WorkQueue type to represent both the main thread and a background queue makes writing such code more convenient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738606</commentid>
    <comment_count>1</comment_count>
      <attachid>422962</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 13:59:27 -0800</bug_when>
    <thetext>Created attachment 422962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738615</commentid>
    <comment_count>2</comment_count>
      <attachid>422964</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 14:09:33 -0800</bug_when>
    <thetext>Created attachment 422964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738623</commentid>
    <comment_count>3</comment_count>
      <attachid>422967</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 14:18:44 -0800</bug_when>
    <thetext>Created attachment 422967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738631</commentid>
    <comment_count>4</comment_count>
      <attachid>422972</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 14:27:14 -0800</bug_when>
    <thetext>Created attachment 422972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738668</commentid>
    <comment_count>5</comment_count>
      <attachid>422972</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-11 15:41:32 -0800</bug_when>
    <thetext>Comment on attachment 422972
Patch

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

r=me

&gt; Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm:214
&gt; -    dispatch_async(dispatch_get_main_queue(), makeBlockPtr([this, strongThis = makeRef(*this), callbackID] {
&gt; +    WorkQueue::main().dispatch([this, strongThis = makeRef(*this), callbackID] {

I wonder about cases like this. Do they use WorkQueue rather than RunLoop for any specific purpose? Perhaps we should just make RunLoop::main() safe to call before main thread initialization, just like WorkQueue::main.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738675</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 15:52:23 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #5)
&gt; Comment on attachment 422972 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422972&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm:214
&gt; &gt; -    dispatch_async(dispatch_get_main_queue(), makeBlockPtr([this, strongThis = makeRef(*this), callbackID] {
&gt; &gt; +    WorkQueue::main().dispatch([this, strongThis = makeRef(*this), callbackID] {
&gt; 
&gt; I wonder about cases like this. Do they use WorkQueue rather than RunLoop
&gt; for any specific purpose? Perhaps we should just make RunLoop::main() safe
&gt; to call before main thread initialization, just like WorkQueue::main.

There is a CFRunLoopGetMain() so in theory, we should be able to get RunLoop::main() working before main thread initialization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738684</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-11 16:00:01 -0800</bug_when>
    <thetext>Right, I think so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738686</commentid>
    <comment_count>8</comment_count>
      <attachid>422972</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 16:01:29 -0800</bug_when>
    <thetext>Comment on attachment 422972
Patch

Clearing flags on attachment: 422972

Committed r274307 (235201@main): &lt;https://commits.webkit.org/235201@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738687</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 16:01:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738689</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-11 16:02:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/75337395&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422962</attachid>
            <date>2021-03-11 13:59:27 -0800</date>
            <delta_ts>2021-03-11 14:18:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223087-20210311135926.patch</filename>
            <type>text/plain</type>
            <size>56998</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk3M2Y1YjdkOTVkNGVhNjI0ZjEyZWZj
YjAxMDk0Mjk2ZjMzZWI2NmUuLjNiNWY1ZGRiNTRjZjRlM2M0MmNjODE1NzRhZDE5MDAyMzUwYjQ5
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0
IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQg
dGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxvd3MgdXMgdG8gcG9ydCBzb21l
IG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVlIHRvIFdvcmtRdWV1ZS4gSXQg
YWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBkZWFsIHRoYXQgc29tZXRpbWVz
IG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJlYWQgYW5kIG90aGVyIHRpbWVz
IG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xlIFdvcmtRdWV1ZSB0eXBlIHRv
IHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVhZCBhbmQgYSBiYWNrZ3JvdW5k
IHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29udmVuaWVudC4KKworICAgICAg
ICAqIHd0Zi9Xb3JrUXVldWUuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6Om1haW4pOgor
ICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVl
dWUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OldvcmtRdWV1ZSk6CisgICAgICAgICogd3Rm
L2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OmNvbnN0
cnVjdE1haW5Xb3JrUXVldWUpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrUXVldWUpOgorCiAy
MDIxLTAzLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
dGFnZ2VkIHBvaW50ZXJzIGluIG1vcmUgcGxhY2VzIGluIHRoZSBNZXRhQWxsb2NhdG9yIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMjdlZTFlNGY0MjUyOTQ4MTI2OTg2MzNkNjY2YTkzMDU1NTY0YTg0Ny4u
MDI2YjM4ZGVhYTY1YmIzOTAwMjU4NDI1NzkwZjIxN2FkZGU2NTZlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6On5WaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKToKKwogMjAyMS0wMy0xMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gY29udHJvbHMgc3Rh
eSBvbiBzY3JlZW4gaW5kZWZpbml0ZWx5IGFmdGVyIGludGVyYWN0aW5nIHdpdGggdGltZSBzY3J1
YmJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3ZDU5NGFjZTNjMjk3MjkyMDYwNDJmNGRlMTdhYmNlZjhkOWM0MGIx
Li41OGFiNjBiYWMyYjhjZGViNjQyNmE5M2YwOTgyYjQ5NDgxZjA4MjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYxIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6d3JpdGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6aW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6Om91dHB1dFN0cmVhbVdyaXRlUmVhZHlDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6
CisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcu
bW06CisgICAgICAgICgtW1dLUERGSFVEVmlldyBpbml0V2l0aEZyYW1lOnBsdWdpbklkZW50aWZp
ZXI6cGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1b
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF9zY2hlZHVsZVJlbGVhc2VU
YXNrXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVj
dGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxPcGVuQXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VzQ29udHJvbGxlcjo6cmVmcmVzaEV4
aXN0aW5nU2VydmljZXMpOgorCiAyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBzb21lIHVzYWdlIG9mIGRpc3BhdGNoX3F1ZXVlIHdp
dGggV29ya1F1ZXVlIG5vdyB0aGF0IGl0IHN1cHBvcnRzIHN5bmMgZGlzcGF0Y2hpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ODRlOWIyMzJmNDAwN2E0NmNhZjA5NTMwZTY2MTIx
MGY4NTE0ODViLi44OTQyNTk0MmQ2ZGI4ODYzNGUxZTg1OWMxNmU0ZDJlMTUzNzBmZWEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMTEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1
ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVl
dWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxv
d3MgdXMgdG8gcG9ydCBzb21lIG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVl
IHRvIFdvcmtRdWV1ZS4gSXQgYWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBk
ZWFsIHRoYXQgc29tZXRpbWVzIG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJl
YWQgYW5kIG90aGVyIHRpbWVzIG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xl
IFdvcmtRdWV1ZSB0eXBlIHRvIHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVh
ZCBhbmQgYSBiYWNrZ3JvdW5kIHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29u
dmVuaWVudC4KKworICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgIChjYWxs
T25EZWxlZ2F0ZVRocmVhZEFuZFdhaXQpOgorCiAyMDIxLTAzLTEwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFJldGFpblB0cjw+IC8gT1NPYmplY3RQdHI8
PiBtb3JlIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKaW5kZXggZDVkZWI5ZmMxMjYyZmQzZTE5
MTJhMDA5M2I3NWMzNjFlYjI5MTUyNy4uZGY3ZDM3YThlYzY0NTUyYWUwMWMyZDU5MGQzNWRlMDJm
NTUxMTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCkBAIC00MCw2ICs0MCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAorV29ya1F1ZXVlJiBXb3JrUXVldWU6Om1haW4oKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZWZQdHI8V29ya1F1ZXVlPj4gbWFpbldvcmtRdWV1ZTsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICBtYWluV29ya1F1ZXVlLmdldCgpID0gY29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpOworICAgIH0pOworICAgIHJldHVybiAqbWFpbldvcmtRdWV1ZS5nZXQoKTsKK30KKwogUmVm
PFdvcmtRdWV1ZT4gV29ya1F1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBl
LCBRT1MgcW9zKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShuYW1lLCB0
eXBlLCBxb3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggMjM2NTQzMjBjOWRmY2MwMzc2ZTFlNThiZDBj
NjNmYzlkMGM3MTM0NC4uY2RhMWQxODRhMWEzMTVkYTRjMzk0YjU3YzYwMzZlZGFjOWQ2OTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIH07CiAgICAgdXNp
bmcgUU9TID0gVGhyZWFkOjpRT1M7CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdv
cmtRdWV1ZSYgbWFpbigpOworCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29y
a1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9T
ID0gUU9TOjpEZWZhdWx0KTsKICAgICB+V29ya1F1ZXVlKCkgZmluYWw7CiAKQEAgLTY2LDcgKzY4
LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdvcmtRdWV1
ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOworICAgIFdvcmtRdWV1ZShjb25zdCBjaGFy
KiBuYW1lLCBUeXBlLCBRT1MpOworCisgICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNvbnN0cnVj
dE1haW5Xb3JrUXVldWUoKTsKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICBleHBsaWNp
dCBXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJik7CisjZWxzZQorICAg
IGV4cGxpY2l0IFdvcmtRdWV1ZShSdW5Mb29wJik7CisjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBwbGF0
Zm9ybUludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtR
dWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApp
bmRleCA1ODRmYTVjYjk0N2Y0N2Q1M2M4ZTAyMTY4MWYxZjAwZmExYjVkMTU4Li44MmIzYWNlODM4
OGRhYjlkMmM3MmNiNDYyOGY3ZmQ5Nzk3M2M2YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCkBAIC01MCw2ICs1MCwxNiBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hTeW5jKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBkaXNwYXRjaF9zeW5jKG1f
ZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQo
KSk7CiB9CiAKK1JlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya1F1ZXVlKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4mJiBkaXNwYXRjaFF1ZXVlKQorICAgIDogbV9kaXNwYXRjaFF1ZXVlKFdU
Rk1vdmUoZGlzcGF0Y2hRdWV1ZSkpCit7Cit9CisKIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUlu
aXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9zKQogewogICAgIGRp
c3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElT
UEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCmluZGV4IDI3MmVjN2Q4NTFmYjAz
NmYwMWU3YjQwMjZkZDg3M2M3NGI2ZDdjMjguLjJkMGM0ZmMyNzIxZGNjZDFjOTdlODIzZjZmNjZl
NjEyMjkyYjMwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVl
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmlj
LmNwcApAQCAtMzIsNiArMzIsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNl
bWFwaG9yZS5oPgogCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3Jr
UXVldWUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjpt
YWluKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoUnVuTG9vcCYgcnVuTG9vcCkKKyAg
ICA6IG1fcnVuTG9vcCgmcnVuTG9vcCkKK3sKK30KKwogdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCiB7CiAgICAgQmluYXJ5U2Vt
YXBob3JlIHNlbWFwaG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDA2
ZDUyMTc4ZmNhZTFmMTM2MjkyMmM4ZDI2MjMwNmMzZjJhMTJlNDMuLmU2NzFiNTJhZTFiNDc5ZDkz
YjE1MTVkMTUzNDlkNzNlY2VhMzNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQpAQCAtMjMzLDcgKzIzMyw3IEBAIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp+
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQoKQogICAgICAgICBtX3BsYXliYWNrTW9k
ZWwgPSBudWxscHRyOwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbCA9IG51bGxwdHI7CiAgICAg
fSBlbHNlCi0gICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
V1RGTW92ZShub3RpZnlDbGllbnRzTW9kZWxXYXNEZXN0cm95ZWQpKTsKKyAgICAgICAgV29ya1F1
ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKFdURk1vdmUobm90aWZ5Q2xpZW50c01vZGVsV2FzRGVz
dHJveWVkKSk7CiB9CiAKICNwcmFnbWEgbWFyayBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
CmluZGV4IGE2MDg4ZjdmNmU4MGRhZjFlZjhhOTFlMTdhYjE5MWNiNGYwZjVkODIuLjEwNTRjNjRj
YWYxMjFkODg2NjY0NmIwNmJhZjQ4NzIwM2ZjYmMzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTQ2LDEyICs0NiwxNCBAQAog
I2ltcG9ydCA8bGlia2Vybi9PU0F0b21pYy5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW1wb3J0IDx3dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY2YvQ0ZS
dW5Mb29wU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL29iamNTUEkuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTMwNiw5ICszMDgsNyBAQCB2b2lkIFdlYlRocmVh
ZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogICAgIEpTQzo6SlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFdlYkNvcmU6OmNvbW1vblZNKCkpOwogICAgIF9X
ZWJUaHJlYWRVbmxvY2soKTsKIAotICAgIHZvaWQgKF5kZWxlZ2F0ZUJsb2NrQ29weSkoKSA9IEJs
b2NrX2NvcHkoZGVsZWdhdGVCbG9jayk7Ci0gICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBkZWxlZ2F0ZUJsb2NrQ29weSk7Ci0gICAgQmxvY2tfcmVsZWFzZShkZWxl
Z2F0ZUJsb2NrQ29weSk7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKG1ha2VC
bG9ja1B0cihkZWxlZ2F0ZUJsb2NrKS5nZXQoKSk7CiAKICAgICBfV2ViVGhyZWFkTG9jaygpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDk5YTIyNjJiODQ0ZWNkMmIxMjhiNWFiZjcwMmEwZWJj
ZWUyMzg5ZGMuLmFiN2FiYzI1NzY1YWQ0MjhmMmExNTdjNjE3OTRkMjI1ODYxN2JiNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNv
cgogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBh
dGgpOwogCiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwg
SU9DaGFubmVsOjpUeXBlOjpDcmVhdGUsIFdvcmtRdWV1ZTo6UU9TOjpEZWZhdWx0KTsKLSAgICAg
ICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwgW3RoaXMsIHdlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
IGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIFdvcmtRdWV1ZTo6bWFpbigpLCBbdGhpcywgd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRpZmllcl0oaW50IGVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUwNSw3ICs1MDUsNyBAQCB2
b2lkIEVuZ2luZTo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBOZXR3bwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpLCBudWxscHRyLCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRp
Zmllcl0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2hh
bm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBXb3JrUXVl
dWU6Om1haW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZp
ZXJdKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgQ2FjaGVTdG9yYWdlLCAiQ2FjaGVTdG9yYWdlOjpF
bmdpbmU6OnJlYWRGaWxlIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgZXJyb3IpOwogCiAgICAgICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoZSBkZWNvZGluZyBpbiB0aGUgYmFja2dyb3Vu
ZCB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggOGYzMWM5ODU0Nzdm
NWJjZTVjMTNkMGUwZjdjMjUzZDJmMGMzNjE1MC4uZmNlZmJmNzEyMDM0ZjczZDc1NGI4OWIxOWEy
NDc3MTUxZjI3N2NiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtODQsNyAr
ODQsNyBAQCB2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdQogICAgICAgICB9CiAKICAgICAgICAgYXV0
byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJl
YWQpOwotICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCksIG51bGxwdHIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIFdv
cmtRdWV1ZTo6bWFpbigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeSBmYWlsZWQgcmVhZGluZyBjaGFubmVsIHdpdGgg
ZXJyb3IgJWQiLCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaAppbmRleCAwNTM1ZjI5OTlkNmNh
ZmE5OTBjM2Q3NzFlY2EwYjcxNWE1ZTVlM2FkLi4xZDFlYWRhM2MzNTk0MGU2NmU3NWE0ZWY0YWQ2
YzhjODY2YzQxNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKQEAgLTUwLDggKzUwLDggQEAgcHVi
bGljOgogCiAgICAgLy8gVXNpbmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQg
dG8gdGhlIG1haW4gcXVldWUuCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgV29ya1F1ZXVl
OjptYWluKCkgaW5zdGVhZC4KLSAgICB2b2lkIHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBX
b3JrUXVldWUqLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJik7Ci0gICAgdm9p
ZCB3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiwgV29ya1F1ZXVlKiwgRnVuY3Rpb248
dm9pZCAoaW50IGVycm9yKT4mJik7CisgICAgdm9pZCByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCwgV29ya1F1ZXVlJiwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYpOworICAg
IHZvaWQgd3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYsIFdvcmtRdWV1ZSYsIEZ1bmN0
aW9uPHZvaWQgKGludCBlcnJvcik+JiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9wYXRoOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgSU9DaGFubmVsKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIElPQ2hhbm5lbDo6VHlwZSwgT3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+
KTsKIAogI2lmIFVTRShHTElCKQotICAgIHZvaWQgcmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3QsIFdvcmtRdWV1ZSosIEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBX
b3JrUXVldWUmLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJik7CiAjZW5kaWYK
IAogICAgIFN0cmluZyBtX3BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRl
eCA5OTMwMzlkMTUyYTAyNmU4NWVkZmJlYTRjYjI2ZGE0NDI4YzJjMTYyLi41YTNkOTI5NGIxNGQ5
ZGYxZmE2OTU3MmRhZjNiMmY0YzZjNjU4OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29j
b2EubW0KQEAgLTk2LDEyICs5NiwxMSBAQCBJT0NoYW5uZWw6On5JT0NoYW5uZWwoKQogICAgIFJF
TEVBU0VfQVNTRVJUKCFtX3dhc0RlbGV0ZWQuZXhjaGFuZ2UodHJ1ZSkpOwogfQogCi12b2lkIElP
Q2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1
ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1
ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKICAgICBi
b29sIGRpZENhbGxDb21wbGV0aW9uSGFuZGxlciA9IGZhbHNlOwotICAgIGF1dG8gZGlzcGF0Y2hR
dWV1ZSA9IHF1ZXVlID8gcXVldWUtPmRpc3BhdGNoUXVldWUoKSA6IGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCk7Ci0gICAgZGlzcGF0Y2hfaW9fcmVhZChtX2Rpc3BhdGNoSU8uZ2V0KCksIG9mZnNl
dCwgc2l6ZSwgZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFtjaGFubmVsLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkaWRDYWxsQ29tcGxldGlvbkhh
bmRsZXJdKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90IGZpbGVEYXRhLCBpbnQgZXJyb3IpIG11
dGFibGUgeworICAgIGRpc3BhdGNoX2lvX3JlYWQobV9kaXNwYXRjaElPLmdldCgpLCBvZmZzZXQs
IHNpemUsIHF1ZXVlLmRpc3BhdGNoUXVldWUoKSwgbWFrZUJsb2NrUHRyKFtjaGFubmVsLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXJdKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90IGZpbGVEYXRhLCBpbnQgZXJy
b3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGRvbmUsIGRvbmUgfHwgIWRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIGlmIChkaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTIsMTIgKzExMSwxMSBAQCB2b2lkIElPQ2hh
bm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwg
RnVuY3Rpb248dm9pZAogICAgIH0pLmdldCgpKTsKIH0KIAotdm9pZCBJT0NoYW5uZWw6OndyaXRl
KHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0
aW9uPHZvaWQgKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIElPQ2hhbm5l
bDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlJiBxdWV1
ZSwgRnVuY3Rpb248dm9pZCAoaW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsKHRoaXMpOwogICAgIGF1dG8gZGlzcGF0Y2hEYXRh
ID0gZGF0YS5kaXNwYXRjaERhdGEoKTsKLSAgICBhdXRvIGRpc3BhdGNoUXVldWUgPSBxdWV1ZSA/
IHF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkgOiBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpOwotICAg
IGRpc3BhdGNoX2lvX3dyaXRlKG1fZGlzcGF0Y2hJTy5nZXQoKSwgb2Zmc2V0LCBkaXNwYXRjaERh
dGEsIGRpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbY2hhbm5lbCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBkb25lLCBkaXNwYXRjaF9kYXRh
X3QgZmlsZURhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hfaW9fd3JpdGUo
bV9kaXNwYXRjaElPLmdldCgpLCBvZmZzZXQsIGRpc3BhdGNoRGF0YSwgcXVldWUuZGlzcGF0Y2hR
dWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NoYW5uZWwsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90IGZpbGVEYXRh
LCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGRvbmUsIGRvbmUp
OwogICAgICAgICBhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgICAgIGNhbGxiYWNrKGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCmlu
ZGV4IDJmYjNlNzFlMjI1MWU2OTY1YTU1OGUyMjYyN2JhMDc4YWFhZjc4MDAuLmI2NzRkZjQwNTRh
YTlkYTdiMDY4NzEzZGM5OTYwYzQ2OWU2NDFkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxD
dXJsLmNwcApAQCAtNTUsMjAgKzU1LDkgQEAgSU9DaGFubmVsOjp+SU9DaGFubmVsKCkKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxlRGVzY3JpcHRvcik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBydW5UYXNrSW5RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaywgV29ya1F1ZXVl
KiBxdWV1ZSkKK3ZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXpl
LCBXb3JrUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChxdWV1ZSkgewotICAgICAgICBxdWV1ZS0+ZGlz
cGF0Y2goV1RGTW92ZSh0YXNrKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBV
c2luZyBudWxscHRyIGFzIHF1ZXVlIHN1Ym1pdHMgdGhlIHJlc3VsdCB0byB0aGUgbWFpbiBjb250
ZXh0LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHRhc2spKTsKLX0KLQot
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgcnVuVGFza0luUXVldWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgb2Zmc2V0LCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSB7CisgICAgcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgb2Zmc2V0LCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsK
ICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2ZpbGVEZXNjcmlwdG9yLCBm
aWxlU2l6ZSkgfHwgZmlsZVNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KSB7CiAgICAgICAgICAgICBEYXRhIGRhdGE7CkBAIC04MywxNyArNzIsMTcgQEAgdm9pZCBJT0No
YW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUs
IEZ1bmN0aW9uPHZvaWQKICAgICAgICAgZXJyID0gZXJyIDwgMCA/IGVyciA6IDA7CiAgICAgICAg
IGF1dG8gZGF0YSA9IERhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZGF0YSwgZXJyKTsKLSAgICB9LCBxdWV1ZSk7CisgICAgfSk7CiB9CiAKLXZvaWQgSU9D
aGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUq
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIElPQ2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29y
a1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIHJ1blRhc2tJblF1ZXVlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0geworICAgIHF1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBGaWxlU3lzdGVtOjpzZWVrRmlsZSht
X2ZpbGVEZXNjcmlwdG9yLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICBpbnQgZXJyID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxl
RGVzY3JpcHRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSk7CiAgICAgICAgIGVyciA9IGVyciA8IDAgPyBlcnIgOiAwOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihlcnIpOwotICAgIH0sIHF1ZXVlKTsKKyAgICB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcApp
bmRleCA1Y2RhNzVkNzVjNDI5NzhlMDYwMGUyMmE0Y2I1OWE0ZTQzYmYzNWQwLi5mYTI3NWFkNzhk
OWZkYTBhM2JhODQzOWExYTVmNTcxYzVkYmUxNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
R0xpYi5jcHAKQEAgLTY4LDE3ICs2OCw2IEBAIElPQ2hhbm5lbDo6fklPQ2hhbm5lbCgpCiAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fd2FzRGVsZXRlZC5leGNoYW5nZSh0cnVlKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBydW5UYXNrSW5RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaywgV29y
a1F1ZXVlKiBxdWV1ZSkKLXsKLSAgICBpZiAocXVldWUpIHsKLSAgICAgICAgcXVldWUtPmRpc3Bh
dGNoKFdURk1vdmUodGFzaykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVXNp
bmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQgdG8gdGhlIG1haW4gY29udGV4
dC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZSh0YXNrKSk7Ci19Ci0KIHN0
YXRpYyB2b2lkIGZpbGxEYXRhRnJvbVJlYWRCdWZmZXIoR0J5dGVzKiByZWFkQnVmZmVyLCBzaXpl
X3Qgc2l6ZSwgRGF0YSYgZGF0YSkKIHsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnVmZmVyOwpAQCAt
MTE0LDE4ICsxMDMsMTYgQEAgc3RhdGljIHZvaWQgaW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFj
ayhHSW5wdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXMKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVhZEFzeW5jRGF0YT4gYXN5bmNEYXRhKHN0YXRpY19jYXN0PFJlYWRBc3luY0RhdGEq
Pih1c2VyRGF0YSkpOwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFk
X2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgbnVsbHB0cik7CiAgICAgaWYgKGJ5dGVzUmVhZCA9PSAt
MSkgewotICAgICAgICBXb3JrUXVldWUqIHF1ZXVlID0gYXN5bmNEYXRhLT5xdWV1ZS5nZXQoKTsK
LSAgICAgICAgcnVuVGFza0luUXVldWUoW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0g
eworICAgICAgICBhc3luY0RhdGEtPnF1ZXVlLT5kaXNwYXRjaChbYXN5bmNEYXRhID0gV1RGTW92
ZShhc3luY0RhdGEpXSB7CiAgICAgICAgICAgICBhc3luY0RhdGEtPmNvbXBsZXRpb25IYW5kbGVy
KGFzeW5jRGF0YS0+ZGF0YSwgLTEpOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFieXRlc1JlYWQpIHsKLSAgICAgICAg
V29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0YS0+cXVldWUuZ2V0KCk7Ci0gICAgICAgIHJ1blRh
c2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsKKyAgICAgICAgYXN5
bmNEYXRhLT5xdWV1ZS0+ZGlzcGF0Y2goW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0g
ewogICAgICAgICAgICAgYXN5bmNEYXRhLT5jb21wbGV0aW9uSGFuZGxlcihhc3luY0RhdGEtPmRh
dGEsIDApOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMzQsMTAgKzEyMSw5IEBAIHN0YXRpYyB2b2lkIGlucHV0U3RyZWFtUmVh
ZFJlYWR5Q2FsbGJhY2soR0lucHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzCiAK
ICAgICBzaXplX3QgcGVuZGluZ0J5dGVzVG9SZWFkID0gYXN5bmNEYXRhLT5ieXRlc1RvUmVhZCAt
IGFzeW5jRGF0YS0+ZGF0YS5zaXplKCk7CiAgICAgaWYgKCFwZW5kaW5nQnl0ZXNUb1JlYWQpIHsK
LSAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0YS0+cXVldWUuZ2V0KCk7Ci0gICAg
ICAgIHJ1blRhc2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsKKyAg
ICAgICAgYXN5bmNEYXRhLT5xdWV1ZS0+ZGlzcGF0Y2goW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5
bmNEYXRhKV0gewogICAgICAgICAgICAgYXN5bmNEYXRhLT5jb21wbGV0aW9uSGFuZGxlcihhc3lu
Y0RhdGEtPmRhdGEsIDApOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xNDgsMTQgKzEzNCwxNCBAQCBzdGF0aWMgdm9pZCBpbnB1
dFN0cmVhbVJlYWRSZWFkeUNhbGxiYWNrKEdJbnB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1
bHQqIHJlcwogICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGlu
cHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVsZWFzZSgpKTsKIH0KIAot
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChEYXRhJiwgaW50IGVycm9yKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8SU9DaGFubmVsPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogICAgIGlmICghbV9pbnB1dFN0cmVhbSkgewotICAgICAgICBydW5UYXNrSW5RdWV1ZShb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgcXVldWUuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICBEYXRhIGRhdGE7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhLCAtMSk7Ci0gICAgICAgIH0sIHF1
ZXVlKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3NCwxMSAr
MTYwLDExIEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXpl
LCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oaW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayksIGFz
eW5jRGF0YSk7CiB9CiAKLXZvaWQgSU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEm
LCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJT0NoYW5uZWw6OnJlYWRT
eW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSYgcXVldWUs
IEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBUaHJlYWQ6OmNyZWF0ZSgi
SU9DaGFubmVsOjpyZWFkU3luYyIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHNpemUsIHF1ZXVlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBUaHJlYWQ6OmNyZWF0ZSgiSU9DaGFubmVsOjpyZWFk
U3luYyIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNpemUsIHF1ZXVl
ID0gbWFrZVJlZihxdWV1ZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHN0ZDo6
bWluKHNpemUsIGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpOwogICAgICAgICB1aW50OF90KiBidWZm
ZXJEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MoYnVmZmVyU2l6ZSkpOwog
ICAgICAgICBHUmVmUHRyPEdCeXRlcz4gcmVhZEJ1ZmZlciA9IGFkb3B0R1JlZihnX2J5dGVzX25l
d193aXRoX2ZyZWVfZnVuYyhidWZmZXJEYXRhLCBidWZmZXJTaXplLCBmYXN0RnJlZSwgYnVmZmVy
RGF0YSkpOwpAQCAtMTg5LDEwICsxNzUsMTAgQEAgdm9pZCBJT0NoYW5uZWw6OnJlYWRTeW5jSW5U
aHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEYKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgb2Zmc2V0LgogICAgICAgICAgICAgZ3NzaXpl
IGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQobV9pbnB1dFN0cmVhbS5nZXQoKSwgY29u
c3RfY2FzdDx2b2lkKj4oZ19ieXRlc19nZXRfZGF0YShyZWFkQnVmZmVyLmdldCgpLCBudWxscHRy
KSksIGJ5dGVzVG9SZWFkLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChieXRl
c1JlYWQgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBydW5UYXNrSW5RdWV1ZShbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgICAgICBxdWV1ZS0+ZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgICAgIERh
dGEgZGF0YTsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgLTEp
OwotICAgICAgICAgICAgICAgIH0sIHF1ZXVlKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIwNiwxMCArMTkyLDEwIEBA
IHZvaWQgSU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBz
aXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGCiAgICAgICAgICAgICBieXRlc1RvUmVhZCA9IHN0ZDo6
bWluKHBlbmRpbmdCeXRlc1RvUmVhZCwgZ19ieXRlc19nZXRfc2l6ZShyZWFkQnVmZmVyLmdldCgp
KSk7CiAgICAgICAgIH0gd2hpbGUgKHBlbmRpbmdCeXRlc1RvUmVhZCk7CiAKLSAgICAgICAgcnVu
VGFza0luUXVldWUoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBidWZm
ZXIgPSBHUmVmUHRyPEdCeXRlcz4oZGF0YS5ieXRlcygpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgYnVmZmVyID0g
R1JlZlB0cjxHQnl0ZXM+KGRhdGEuYnl0ZXMoKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBEYXRhIGRhdGEg
PSB7IFdURk1vdmUoYnVmZmVyKSB9OwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0
YSwgMCk7Ci0gICAgICAgIH0sIHF1ZXVlKTsKKyAgICAgICAgfSk7CiAgICAgfSktPmRldGFjaCgp
OwogfQogCkBAIC0yMTgsNyArMjA0LDcgQEAgc3RydWN0IFdyaXRlQXN5bmNEYXRhIHsKIAogICAg
IFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWw7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsK
LSAgICBSZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBxdWV1ZTsK
ICAgICBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIApA
QCAtMjI3LDE5ICsyMTMsMTcgQEAgc3RhdGljIHZvaWQgb3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNh
bGxiYWNrKEdPdXRwdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXcml0ZUFzeW5jRGF0YT4gYXN5bmNEYXRhKHN0YXRpY19jYXN0PFdyaXRlQXN5bmNE
YXRhKj4odXNlckRhdGEpKTsKICAgICBnc3NpemUgYnl0ZXNXcml0dGVuID0gZ19vdXRwdXRfc3Ry
ZWFtX3dyaXRlX2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgbnVsbHB0cik7CiAgICAgaWYgKGJ5dGVz
V3JpdHRlbiA9PSAtMSkgewotICAgICAgICBXb3JrUXVldWUqIHF1ZXVlID0gYXN5bmNEYXRhLT5x
dWV1ZS5nZXQoKTsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW2FzeW5jRGF0YSA9IFdURk1vdmUo
YXN5bmNEYXRhKV0geworICAgICAgICBhc3luY0RhdGEtPnF1ZXVlLT5kaXNwYXRjaChbYXN5bmNE
YXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CiAgICAgICAgICAgICBhc3luY0RhdGEtPmNvbXBs
ZXRpb25IYW5kbGVyKC0xKTsKLSAgICAgICAgfSwgcXVldWUpOworICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdzc2l6ZSBwZW5kaW5nQnl0ZXNUb1dyaXRlID0gZ19i
eXRlc19nZXRfc2l6ZShhc3luY0RhdGEtPmJ1ZmZlci5nZXQoKSkgLSBieXRlc1dyaXR0ZW47CiAg
ICAgaWYgKCFwZW5kaW5nQnl0ZXNUb1dyaXRlKSB7Ci0gICAgICAgIFdvcmtRdWV1ZSogcXVldWUg
PSBhc3luY0RhdGEtPnF1ZXVlLmdldCgpOwotICAgICAgICBydW5UYXNrSW5RdWV1ZShbYXN5bmNE
YXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CisgICAgICAgIGFzeW5jRGF0YS0+cXVldWUtPmRp
c3BhdGNoKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsKICAgICAgICAgICAgIGFz
eW5jRGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoMCk7Ci0gICAgICAgIH0sIHF1ZXVlKTsKKyAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI1MCwyMSArMjM0LDIxIEBAIHN0
YXRpYyB2b2lkIG91dHB1dFN0cmVhbVdyaXRlUmVhZHlDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBz
dHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFk
eUNhbGxiYWNrPihvdXRwdXRTdHJlYW1Xcml0ZVJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVs
ZWFzZSgpKTsKIH0KIAotdm9pZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0
IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoaW50IGVycm9yKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSU9DaGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0
LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKGludCBl
cnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtICYmICFtX2lvU3RyZWFt
KSB7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0geworICAgICAgICBxdWV1ZS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKC0xKTsKLSAgICAgICAgfSwgcXVl
dWUpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEdPdXRwdXRT
dHJlYW0qIHN0cmVhbSA9IG1fb3V0cHV0U3RyZWFtID8gbV9vdXRwdXRTdHJlYW0uZ2V0KCkgOiBn
X2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShtX2lvU3RyZWFtLmdldCgp
KSk7CiAgICAgaWYgKCFzdHJlYW0pIHsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIHF1ZXVlLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
LTEpOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBmMDNiMGZmNWY1OTFlOWQ0ZWRiN2Q0Y2Ri
MzgxMjhkYjNkODg2YjdlLi5lZGRjMGJlMjllMGUyYzZkMjAyNWE5NmIyNWVjMWU1NmM0OGFmOGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIFN0b3JhZ2U6
OmRpc3BhdGNoUmVhZE9wZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4gcmVh
ZE9wZXJhdGlvbgogICAgICAgICByZWFkT3BlcmF0aW9uLnRpbWluZ3MucmVjb3JkSU9TdGFydFRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0No
YW5uZWw6Om9wZW4ocmVjb3JkUGF0aCwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKLSAgICAgICAg
Y2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCAmaW9R
dWV1ZSgpLCBbdGhpcywgJnJlYWRPcGVyYXRpb25dKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBpbnQg
ZXJyb3IpIHsKKyAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpLCBpb1F1ZXVlKCksIFt0aGlzLCAmcmVhZE9wZXJhdGlvbl0oY29uc3QgRGF0
YSYgZmlsZURhdGEsIGludCBlcnJvcikgewogICAgICAgICAgICAgcmVhZE9wZXJhdGlvbi50aW1p
bmdzLnJlY29yZElPRW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAgICAgICAg
aWYgKCFlcnJvcikKICAgICAgICAgICAgICAgICByZWFkUmVjb3JkKHJlYWRPcGVyYXRpb24sIGZp
bGVEYXRhKTsKQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVP
cGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogCiAg
ICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihyZWNvcmRQYXRoLCBJT0NoYW5u
ZWw6OlR5cGU6OkNyZWF0ZSk7CiAgICAgICAgIHNpemVfdCByZWNvcmRTaXplID0gcmVjb3JkRGF0
YS5zaXplKCk7Ci0gICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIHJlY29yZERhdGEsIG51bGxwdHIs
IFt0aGlzLCAmd3JpdGVPcGVyYXRpb24sIHJlY29yZFNpemVdKGludCBlcnJvcikgeworICAgICAg
ICBjaGFubmVsLT53cml0ZSgwLCByZWNvcmREYXRhLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMs
ICZ3cml0ZU9wZXJhdGlvbiwgcmVjb3JkU2l6ZV0oaW50IGVycm9yKSB7CiAgICAgICAgICAgICAv
LyBPbiBlcnJvciB0aGUgZW50cnkgc3RpbGwgc3RheXMgaW4gdGhlIGNvbnRlbnRzIGZpbHRlciB1
bnRpbCBuZXh0IHN5bmNocm9uaXphdGlvbi4KICAgICAgICAgICAgIG1fYXBwcm94aW1hdGVSZWNv
cmRzU2l6ZSArPSByZWNvcmRTaXplOwogICAgICAgICAgICAgZmluaXNoV3JpdGVPcGVyYXRpb24o
d3JpdGVPcGVyYXRpb24sIGVycm9yKTsKQEAgLTk4Niw3ICs5ODYsNyBAQCB2b2lkIFN0b3JhZ2U6
OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxh
Z3MsIFRyYXZlcgogICAgICAgICAgICAgKyt0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsK
IAogICAgICAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKHJlY29yZFBhdGgs
IElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7Ci0gICAgICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG51bGxwdHIsIFt0aGlzLCAmdHJhdmVy
c2VPcGVyYXRpb24sIHdvcnRoLCBib2R5U2hhcmVDb3VudF0oRGF0YSYgZmlsZURhdGEsIGludCkg
eworICAgICAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlvbiwg
d29ydGgsIGJvZHlTaGFyZUNvdW50XShEYXRhJiBmaWxlRGF0YSwgaW50KSB7CiAgICAgICAgICAg
ICAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAgICAgICAgICAgRGF0YSBoZWFk
ZXJEYXRhOwogICAgICAgICAgICAgICAgIGlmIChkZWNvZGVSZWNvcmRIZWFkZXIoZmlsZURhdGEs
IG1ldGFEYXRhLCBoZWFkZXJEYXRhLCBtX3NhbHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQppbmRleCAyMTcwNTk1ZDJm
MTYyY2ZmNTU0ZmNjZTMyZWE3Mjg1Y2JlNzUxYWY5Li4xODAwMzRkNzk5YmI3YTFiYWNlODE4ZDFl
OTFlZWI1ZmUyZjhmNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYktpdDJJbml0aWFsaXplQ29jb2EubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgPG11
dGV4PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVh
ZFN5c3RlbUludGVyZmFjZS5oPgpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEluaXRpYWxpemVXZWJL
aXQyKCkKICAgICAgICAgaWYgKFtOU1RocmVhZCBpc01haW5UaHJlYWRdIHx8IGxpbmtlZE9uT3JB
ZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpGaXJzdFdpdGhJbml0aWFsaXplV2ViS2l0Mk1haW5U
aHJlYWRBc3NlcnRpb24pKQogICAgICAgICAgICAgcnVuSW5pdGlhbGl6YXRpb25Db2RlKCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpc3BhdGNoX3N5bmNfZihkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBudWxscHRyLCBydW5Jbml0aWFsaXphdGlvbkNvZGUpOworICAgICAgICAgICAg
V29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKFtdIHsgcnVuSW5pdGlhbGl6YXRpb25Db2Rl
KCk7IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW0KaW5kZXggNzhlYWZmNDUyMDQ4N2NjM2RjZTMwNWUwNTQ0MWIxNmM3
NzgxNzQ1MC4uYjAxZDU3MjQ2Yjc2ZWUwOWM0ZGYyYmMxNjQxNzkzMjA2ZDhmNDU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMTE3
LDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5l
Y3Rpb25fdCBwZWVyKQogICAgICAgICAgICAgICAgIGlmIChmZCAhPSAtMSkKICAgICAgICAgICAg
ICAgICAgICAgZHVwMihmZCwgU1RERVJSX0ZJTEVOTyk7CiAKLSAgICAgICAgICAgICAgICBkaXNw
YXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICAgICAg
V29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKFsmXSB7CiAgICAgICAgICAgICAgICAgICAg
IGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNzYWdl
LmdldCgpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxhbmd1YWdlc1By
ZWZlcmVuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDA1MjU3MGVh
NWY5NGQ1MGJhMzg4ZjRjNmMzY2YzMzlkZGQ0OGNlOTkuLjQ4Yzc1MTBkNGI2MWE2ZDUyYWJmZTY5
Y2QwYmNmMzdkMWFjOWI1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAt
MTEwLDkgKzExMCw5IEBAICsgKHZvaWQpcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDoo
TlNTdHJpbmcgKilzY2hlbWUKICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0
ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhpcyBjYW5ub3QgYmUgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGJlZm9yZSB0aGUgbWFpbiBydW5sb29wIGlzIGlu
aXRpYWxpemVkLiAgU2VlIHJkYXI6Ly9wcm9ibGVtLzczNjE1OTk5Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbc2NoZW1lID0g
cmV0YWluUHRyKHNjaGVtZSldIHsKKyAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2go
W3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CiAgICAgICAgICAgICBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xI
YW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgIH0pOwog
ICAgIH0KIH0KIApAQCAtMTIyLDkgKzEyMiw5IEBAICsgKHZvaWQpdW5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZQogICAgICAgICBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjp1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2Nv
bEhhbmRsZXJzKHNjaGVtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgY2Fubm90IGJl
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaCBiZWNhdXNlIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhl
IG1haW4gcnVubG9vcCBpcyBpbml0aWFsaXplZC4gIFNlZSByZGFyOi8vcHJvYmxlbS83MzYxNTk5
OQotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtl
QmxvY2tQdHIoW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CisgICAgICAgIFdvcmtRdWV1
ZTo6bWFpbigpLmRpc3BhdGNoKFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0gewogICAgICAg
ICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFz
SGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9KS5n
ZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA0MGJmNDk4NjlkZjJjYmNk
YzhlZWRjOTdhZWRiYzA3M2RkMmMyMjVhLi5jOWQ5MDJkYThhNTUzOWFlMjU3NDJjMDFmNmRiMTdj
NTc0ZTk4YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
Y2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKQogICAgICAgICAgICAgLy8gV2UgY2FuJ3QgY2Fs
bCBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UgZGlyZWN0bHkgdW5kZXJuZWF0aCB0aGlzIGNv
bW1pdCBoYW5kbGVyLCBiZWNhdXNlIGl0IGhhcyBzaWRlLWVmZmVjdHMKICAgICAgICAgICAgIC8v
IHRoYXQgbWF5IHJlc3VsdCBpbiBvdGhlciBmcmFtZXdvcmtzIHRyeWluZyB0byBpbnN0YWxsIGNv
bW1pdCBoYW5kbGVycyBmb3IgdGhlIHNhbWUgcGhhc2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLgog
ICAgICAgICAgICAgLy8gU28sIGRpc3BhdGNoX2FzeW5jIGhlcmU7IHdlIG9ubHkgY2FyZSB0aGF0
IHRoZSBhY3Rpdml0eSBzdGF0ZSBjaGFuZ2UgZG9lc24ndCBhcHBseSB1bnRpbCBhZnRlciB0aGUg
YWN0aXZlIGNvbW1pdCBpcyBjb21wbGV0ZS4KLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhpc10geworICAgICAgICAgICAgV29ya1F1
ZXVlOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQppbmRleCAyM2Q4YjVkNzhl
OWIyYTM0YmMwN2FkNTcwYzFjZTBiZTNlNDY1NDI5Li5mMGYxZjU0NjFlOWIzNGVkNzhlYzQ0NTJm
ZjgzMDFhMzcyNDdkM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYv
V0tQREZIVURWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhV
RFZpZXcubW0KQEAgLTEwOSw3ICsxMDksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWZyYW1lIHBsdWdpbklkZW50aWZpZXI6KFdlYktpdDo6UERGUGx1Z2luSQogICAg
IFtzZWxmIHNldEZyYW1lOmZyYW1lXTsKIAogICAgIFdlYWtPYmpDUHRyPFdLUERGSFVEVmlldz4g
d2Vha1NlbGYgPSBzZWxmOwotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFU
Q0hfVElNRV9OT1csIChpbnQ2NF90KShpbml0aWFsSGlkZVRpbWVJbnRlcnZhbCAqIE5TRUNfUEVS
X1NFQykpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFdvcmtRdWV1ZTo6bWFp
bigpLmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyB7IGluaXRpYWxIaWRlVGltZUludGVydmFsIH0sIFt3
ZWFrU2VsZl0gewogICAgICAgICBbd2Vha1NlbGYgX2hpZGVUaW1lckZpcmVkXTsKICAgICB9KTsK
ICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggN2VjNzhlYzUwMzM3Y2MzMjE1
NmQ5NjkzMTViNzI2ZTdkZjhkZmIyMi4uOTU4Yjg0ZGU5N2VjNjA4YzFjZmQ4M2NmMDU1NDc5OGIy
ZGE5NjU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMwNSwxNCArMzA1LDE0IEBAIHN0YXRpYyBQ
cm9jZXNzQWNjZXNzVHlwZSBjb21wdXRlV2ViUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhRmV0Y2go
T3B0aW9uU2V0PFdlYnNpCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFS
ZWNvcmQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBmZXRjaERhdGFBbmRBcHBseShk
YXRhVHlwZXMsIGZldGNoT3B0aW9ucywgbnVsbHB0ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGZldGNoRGF0YUFuZEFwcGx5KGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zLCBXb3Jr
UXVldWU6Om1haW4oKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0
aW9ucywgUmVmUHRyPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vi
c2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSkKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hE
YXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWY8V29ya1F1ZXVlPiYm
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5
KQogewogICAgIGNsYXNzIENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3IsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6
Ok1haW5SdW5Mb29wPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPENhbGxiYWNr
QWdncmVnYXRvcj4gY3JlYXRlKE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRj
aE9wdGlvbnMsIFJlZlB0cjxXb3JrUXVldWU+JiYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHksIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSkKKyAgICAgICAgc3RhdGljIFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWY8V29ya1F1ZXVlPiYm
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5
LCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENhbGxiYWNrQWdncmVnYXRvcihmZXRjaE9wdGlvbnMsIFdURk1v
dmUocXVldWUpLCBXVEZNb3ZlKGFwcGx5KSwgZGF0YVN0b3JlKSk7CiAgICAgICAgIH0KQEAgLTMy
NCwxNiArMzI0LDExIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHko
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICBWZWN0
b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29yZHM7CiAgICAgICAgICAgICByZWNvcmRzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV93ZWJzaXRlRGF0YVJlY29yZHMuc2l6ZSgpKTsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV93ZWJzaXRlRGF0YVJlY29yZHMudmFsdWVzKCkpCi0g
ICAgICAgICAgICAgICAgcmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQobV9xdWV1ZSA/IGNyb3NzVGhy
ZWFkQ29weShyZWNvcmQpIDogV1RGTW92ZShyZWNvcmQpKTsKKyAgICAgICAgICAgICAgICByZWNv
cmRzLnVuY2hlY2tlZEFwcGVuZChtX3F1ZXVlLnB0cigpICE9ICZXb3JrUXVldWU6Om1haW4oKSA/
IGNyb3NzVGhyZWFkQ29weShyZWNvcmQpIDogV1RGTW92ZShyZWNvcmQpKTsKIAotICAgICAgICAg
ICAgYXV0byBwcm9jZXNzUmVjb3JkcyA9IFthcHBseSA9IFdURk1vdmUobV9hcHBseSksIHJlY29y
ZHMgPSBXVEZNb3ZlKHJlY29yZHMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fcXVldWUt
PmRpc3BhdGNoKFthcHBseSA9IFdURk1vdmUobV9hcHBseSksIHJlY29yZHMgPSBXVEZNb3ZlKHJl
Y29yZHMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBhcHBseShXVEZNb3ZlKHJlY29y
ZHMpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGlmIChtX3F1ZXVlKQotICAgICAg
ICAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUocHJvY2Vzc1JlY29yZHMpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
V1RGTW92ZShwcm9jZXNzUmVjb3JkcykpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4mIGZldGNoT3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZmV0Y2hPcHRpb25zOyB9CkBAIC00MjYsNyArNDIxLDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgfQogCiBwcml2YXRlOgotICAgICAg
ICBDYWxsYmFja0FnZ3JlZ2F0b3IoT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZl
dGNoT3B0aW9ucywgUmVmUHRyPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0
b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
b3JlKQorICAgICAgICBDYWxsYmFja0FnZ3JlZ2F0b3IoT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgRnVuY3Rpb248
dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSwgV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlKQogICAgICAgICAgICAgOiBtX2ZldGNoT3B0aW9ucyhmZXRjaE9wdGlvbnMp
CiAgICAgICAgICAgICAsIG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCiAgICAgICAgICAgICAsIG1f
YXBwbHkoV1RGTW92ZShhcHBseSkpCkBAIC00MzYsNyArNDMxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogCiAgICAgICAgIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBt
X2ZldGNoT3B0aW9uczsKLSAgICAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICAg
ICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8
V2Vic2l0ZURhdGFSZWNvcmQ+KT4gbV9hcHBseTsKIAogICAgICAgICBIYXNoTWFwPFN0cmluZywg
V2Vic2l0ZURhdGFSZWNvcmQ+IG1fd2Vic2l0ZURhdGFSZWNvcmRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4
IDQ4MjIxNmZhNDgyZjBhNTI1OWI0MGYzZWY5ZTI0ZTg2MDE4ZjEwMzMuLmYyNzM3OGE2NTdkYzNl
YmQ0ZGI3ODk2MzFjOTM1MzNkODNhM2ExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM1Nyw3ICszNTcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkVGVzdERvbWFpbnMoKSBjb25zdDsKICNlbmRpZgog
Ci0gICAgdm9pZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBG
dW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKKyAgICB2
b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwogCiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQppbmRleCBi
ZTM3MWRiMzZiMThlMDkwYzAzOTMwYTMyODRhZjY4ODNkMjU5MDM4Li5kZmNmMmI1MGJhZDllM2M1
OGMwZjU5MmY4MDY4NDc4OTE5NzFmNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9X
ZWFrSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiB1c2luZyBXZWJLaXQ6
OlByb2Nlc3NBbmRVSUFzc2VydGlvbjsKIApAQCAtMTM1LDE1ICsxMzYsMTAgQEAgLSAodm9pZClf
c2NoZWR1bGVSZWxlYXNlVGFzawogICAgICAgICByZXR1cm47CiAKICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tN
YW5hZ2VyOiBfc2NoZWR1bGVSZWxlYXNlVGFzayBiZWNhdXNlIHRoZSBleHBpcmF0aW9uIGhhbmRs
ZXIgaGFzIGJlZW4gY2FsbGVkIiwgc2VsZik7Ci0gICAgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2sg
PSBkaXNwYXRjaF9ibG9ja19jcmVhdGUoKGRpc3BhdGNoX2Jsb2NrX2ZsYWdzX3QpMCwgXnsKKyAg
ICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaEFmdGVyKHJlbGVhc2VCYWNrZ3JvdW5kVGFza0Fm
dGVyRXhwaXJhdGlvbkRlbGF5LCBbc2VsZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
XSB7CiAgICAgICAgIF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrID0gbmlsOwogICAgICAgICBbc2Vs
ZiBfcmVsZWFzZUJhY2tncm91bmRUYXNrXTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9hZnRlcihk
aXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCByZWxlYXNlQmFja2dyb3VuZFRhc2tBZnRl
ckV4cGlyYXRpb25EZWxheS52YWx1ZSgpICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2spOwotI2lmICFfX2hhc19mZWF0dXJl
KG9iamNfYXJjKQotICAgIC8vIGRpc3BhdGNoX2FzeW5jKCkgZG9lcyBhIEJsb2NrX2NvcHkoKSAv
IEJsb2NrX3JlbGVhc2UoKSBvbiBiZWhhbGYgb2YgdGhlIGNhbGxlci4KLSAgICBCbG9ja19yZWxl
YXNlKF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrKTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9jYW5j
ZWxQZW5kaW5nUmVsZWFzZVRhc2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFjNzEzOWU1NjEzZWRlNDg2
Yjc0NTQ4NjZmYTI2MDc5ODA5MmJhMjguLmU0NjczYjI2NmU1NjMxMzg3YjdlNDk4OTRjZjJiMzdm
ZmE1NDVlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDIyOSw4ICs0MjI5LDggQEAgLSAodm9pZCly
ZXF1ZXN0UmVjdHNUb0V2YWRlRm9yU2VsZWN0aW9uQ29tbWFuZHNXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlMKICAgICB9CiAKICAgICAvLyBHaXZlIHRoZSBwYWdlIHNvbWUgdGltZSB0
byBwcmVzZW50IGN1c3RvbSBlZGl0aW5nIFVJIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRldGVjdCBh
bmQgZXZhZGUgaXQuCi0gICAgYXV0byBkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyID0gKDAu
MjVfcykubmFub3NlY29uZHMoKTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJ
U1BBVENIX1RJTUVfTk9XLCBkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyKSwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW2NvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSAoKSBt
dXRhYmxlIHsKKyAgICBhdXRvIGRlbGF5QmVmb3JlU2hvd2luZ0NhbGxvdXRCYXIgPSAwLjI1X3M7
CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hBZnRlcihkZWxheUJlZm9yZVNob3dpbmdD
YWxsb3V0QmFyLCBbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZildICgpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtTZWxmKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0p
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KaW5kZXggOWE5OGZmYzBkMzU2MzU4ZWE3MGExOTA2YWU5OWNjYzQ1
NTVjNjIyOC4uYmRjNTRiOWRlNzhjYmZiNmI4Yjg1MzNmMmZkNjYwOTIwNTZmZTE0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNTA1
LDcgKzE1MDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbE9wZW5BcHBMaW5rKCkKICAgICAv
LyBXZSBjaG9zZSAyNSBzZWNvbmRzIGJlY2F1c2UgdGhlIHN5c3RlbSBvbmx5IGdpdmVzIHVzIDMw
IHNlY29uZHMgYW5kIHdlIGRvbid0IHdhbnQgdG8gZ2V0IHRvbyBjbG9zZSB0byB0aGF0IGxpbWl0
CiAgICAgLy8gdG8gYXZvaWQgYXNzZXJ0aW9uIGludmFsaWRhdGlvbiAob3IgZXZlbiB0ZXJtaW5h
dGlvbikuCiAgICAgbV9vcGVuaW5nQXBwTGlua0FjdGl2aXR5ID0gcHJvY2VzcygpLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiT3BlbmluZyBBcHBMaW5rIl9zKS5tb3ZlVG9VbmlxdWVQ
dHIoKTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9X
LCAyNSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNo
QWZ0ZXIoMjVfcywgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgIGlm
ICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5tX29wZW5pbmdBcHBMaW5rQWN0aXZp
dHkgPSBudWxscHRyOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0KaW5kZXggZWE1YzMyMzkyZDcxY2YzZDcyZGRlNDUyZGM0
Y2IyNjg4NjM5YmRhNi4uNzk5YjBhMDJiNmE0NzE0MzQ2NmU1YzAzODJhODJlZDYwZGI0ZTQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVy
Lm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTZXJ2aWNlc0NvbnRyb2xsZXI6OnJlZnJlc2hF
eGlzdGluZ1NlcnZpY2VzKGJvb2wgcmVmcmVzaEltbWVkaWF0ZWx5KQogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4+IGF0dHJpYnV0ZWRT
dHJpbmdXaXRoUmljaENvbnRlbnQ7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdHRy
aWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50T25jZUZsYWc7CiAgICAgICAgIHN0ZDo6Y2FsbF9v
bmNlKGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnRPbmNlRmxhZywgWyZdIHsKLSAgICAg
ICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIHsKKyAg
ICAgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhbJl0gewogICAgICAgICAg
ICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9j
XSBpbml0XSk7CiAgICAgICAgICAgICAgICAgYXV0byBjZWxsID0gYWRvcHROUyhbW05TVGV4dEF0
dGFjaG1lbnRDZWxsIGFsbG9jXSBpbml0SW1hZ2VDZWxsOmltYWdlXSk7CiAgICAgICAgICAgICAg
ICAgW2F0dGFjaG1lbnQgc2V0QXR0YWNobWVudENlbGw6Y2VsbC5nZXQoKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQppbmRleCAyZmNiMDBhZGIyNGFjYjY1
ZGNmMzc5YjFhZmZkMjdmNzk0N2Q5NTcxLi42ZTZjOWQ2OTZkYTY2Y2RhYzlhNzU5ZTE4YmNkNDkx
NmUwNGVmZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRv
d25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRG93bmxvYWQu
bW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxEb3dubG9h
ZFNQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndp
bi9keWxkU1BJLmg+CiAKIHN0YXRpYyBib29sIHNob3VsZENhbGxPbk5ldHdvcmtUaHJlYWQoKQpA
QCAtNjUsOCArNjYsMTEgQEAgc3RhdGljIHZvaWQgY2FsbE9uRGVsZWdhdGVUaHJlYWRBbmRXYWl0
KENhbGxhYmxlJiYgd29yaykKIHsKICAgICBpZiAoc2hvdWxkQ2FsbE9uTmV0d29ya1RocmVhZCgp
IHx8IGlzTWFpblRocmVhZCgpKQogICAgICAgICB3b3JrKCk7Ci0gICAgZWxzZQotICAgICAgICBk
aXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIHdvcmspOworICAgIGVsc2Ug
eworICAgICAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaFN5bmMoW3dvcmsgPSBXVEZNb3Zl
KHdvcmspXSgpIG11dGFibGUgeworICAgICAgICAgICAgd29yaygpOworICAgICAgICB9KTsKKyAg
ICB9CiB9CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk4MzZhNzk4MDlkMjFhNTg0ZDFmYjJlNDc0
ZDFmOTIyOGQzOThjZmUuLjAzNWFiMjI3YWJkMjdiZTAzOThiYjE4NjI0MjVmOTM3M2Q1NDE5NGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wMy0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhy
ZWFkJ3Mgd29yayBxdWV1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0aHJl
YWQncyB3b3JrIHF1ZXVlLiBUaGlzIGFsbG93cyB1cyB0byBwb3J0IHNvbWUgbW9yZSBjb2RlIGZy
b20KKyAgICAgICAgZGlzcGF0Y2hfcXVldWUgdG8gV29ya1F1ZXVlLiBJdCBhbHNvIHNpbXBsaWZp
ZXMgc29tZSBjb2RlIHRoYXQgaGFzIHRvIGRlYWwgdGhhdCBzb21ldGltZXMgbmVlZHMgdG8gcnVu
IG9uCisgICAgICAgIHRoZSBtYWluIHRocmVhZCBhbmQgb3RoZXIgdGltZXMgb24gYSBiYWNrZ3Jv
dW5kIHF1ZXVlLiBIYXZpbmcgYSBzaW5nbGUgV29ya1F1ZXVlIHR5cGUgdG8gcmVwcmVzZW50IGJv
dGggdGhlCisgICAgICAgIG1haW4gdGhyZWFkIGFuZCBhIGJhY2tncm91bmQgcXVldWUgbWFrZXMg
d3JpdGluZyBzdWNoIGNvZGUgbW9yZSBjb252ZW5pZW50LgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVySU9TOjpkb0FzeW5jVGFzayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZSBfd2ViVGhy
ZWFkSW52b2tlZF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6ZG9Bc3lu
Y1Rhc2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2YXRlRGF0
YUxpc3RTdWdnZXN0aW9uKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjpy
ZW1vdmVWaWV3RnJvbVdpbmRvdyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6YWRkVmlld1RvV2luZG93KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNj
cmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6YWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rpb24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJNYWM6OmNob29zZU1lbnVBY3Rpb24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJNYWM6OmFjdGl2YXRlQXRQb2ludCk6CisKIDIwMjEtMDMtMTEgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0YWdnZWQgcG9pbnRlcnMgaW4gbW9y
ZSBwbGFjZXMgaW4gdGhlIE1ldGFBbGxvY2F0b3IgY29kZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGExZWYyZWQwOTc5MDEy
MTQ3ZjY5ZTA5NDUzZjZlZWNlODBhM2Y0ZjQuLmU0OTk4NDc1MDExZmMxYjQ5YzAyYzdhY2UwNDYz
OWQ4NGU1NzY3YmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KIAogZXh0ZXJuIFJldGFpblB0cjxEdW1w
UmVuZGVyVHJlZUJyb3dzZXJWaWV3PiBnV2ViQnJvd3NlclZpZXc7CiBleHRlcm4gUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlldz4gZ1dlYlNjcm9sbFZpZXc7CkBAIC00OSw3ICs1
MCw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVm
IGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBh
cmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwogCi0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRy
KFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBX
b3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNr
SUQpOwpAQCAtNjAsOCArNjEsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVRv
U2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVk
IGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENh
bGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwogCi0gICAgUmVmUHRyPFVJU2NyaXB0Q29udHJvbGxl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeeworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgW2dXZWJTY3JvbGxWaWV3
IHpvb21Ub1NjYWxlOnNjYWxlIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gewog
ICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGI1MWUxYWVmZTJk
ZmY2YWNlZWI3NjQzYjNiNDMyZjIxZTQwNzliYWUuLmY0ZTBiOThiODU3OWQ3NTViZGI5ZTUwNzNh
NWM5ZGM4NTY1MWY0YTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KQEAgLTEwNSw2ICsxMDUsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL1RocmVhZGluZy5oPgogI2ltcG9ydCA8d3RmL1VuaXF1ZUFycmF5Lmg+CisjaW1w
b3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvQ3Jhc2hSZXBvcnRlci5o
PgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC0xMjM4LDcgKzEyMzksNyBAQCAtICh2b2lkKV93ZWJUaHJlYWRF
dmVudExvb3BIYXNSdW4KIC0gKHZvaWQpX3dlYlRocmVhZEludm9rZWQKIHsKICAgICBBU1NFUlQo
V2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3NlbGYsIHJl
dGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gewogICAgICAgICBbc2VsZiBfd2ViVGhyZWFk
RXZlbnRMb29wSGFzUnVuXTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGUxMWZhMzJjZWM2YTA4NGJhMDFk
OTdlYzgxYmQ2NjIxNTJkM2FhNWQuLmYyODMzYTJiMmM0MTQyNzJmNzA5ODQwZDVkNDg4NGI2MDE4
ZjZkNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbQpAQCAtMzgsNyArMzgsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYlByZWZlcmVu
Y2VzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL05TVGV4dElucHV0Q29udGV4dFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCkBAIC01MSwx
MSArNTEsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmRvQXN5bmNUYXNrKEpTVmFs
dWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+
cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7
CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxv
Y2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gewor
ICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2Fs
bGJhY2tJRCk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlck1hYzo6cmVwbGFjZVRleHRBdFJhbmdlKEpTU3RyaW5nUmVmIHRleHQsIGludCBsb2Nh
dGlvbiwgaW50IGxlbmd0aCkKQEAgLTEwNywxMSArMTA3LDExIEBAIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVyTWFjOjphY3RpdmF0ZURhdGFMaXN0U3VnZ2VzdGlvbih1bnNpZ25lZCBpbmRleCwgSlNW
YWx1ZVJlCiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKIAogICAgIHVuc2lnbmVkIGNhbGxiYWNr
SUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlw
ZU5vblBlcnNpc3RlbnQpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
YWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gewogICAgICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rh
c2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9KS5nZXQoKSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYg
cHJlZmVyZW5jZVJlZiwgSlNTdHJpbmdSZWYgdmFsdWVSZWYpCkBAIC0xMzAsMTEgKzEzMCwxMSBA
QCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6cmVtb3ZlVmlld0Zyb21XaW5kb3coSlNWYWx1
ZVJlZiBjYWxsYmFjaykKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3
XTsKICAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25n
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWlu
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJh
Y2tJRF0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9KS5n
ZXQoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjphZGRWaWV3
VG9XaW5kb3coSlNWYWx1ZVJlZiBjYWxsYmFjaykKQEAgLTE0NCwxMSArMTQ0LDExIEBAIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyTWFjOjphZGRWaWV3VG9XaW5kb3coSlNWYWx1ZVJlZiBjYWxsYmFj
aykKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKICAgICBbW21h
aW5XaW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlld107CiAKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0
cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFdvcmtRdWV1ZTo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAg
fSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6dG9n
Z2xlQ2Fwc0xvY2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBiYWJlOTU3ZDExYjIw
NDZkNWYzNmVkNGRkYzcxYmJkN2Q2ZTYwNjFiLi4xZmMzODViMjEyYTUzNDUyYjcyYmEwZmJlOWE4
Yjc0MWMzNDU4YzU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNj
cmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlT
Y3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC00NSw2ICs0NSw3IEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JU
ZXN0aW5nLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVl
dWUuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTE1MSw3ICsxNTIsNyBAQCB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlck1hYzo6YWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rpb24odW5zaWduZWQgaW5k
ZXgsIEpTVmFsdWVSZQogICAgIFt0YWJsZSBzZWxlY3RSb3dJbmRleGVzOltOU0luZGV4U2V0IGlu
ZGV4U2V0V2l0aEluZGV4OmluZGV4XSBieUV4dGVuZGluZ1NlbGVjdGlvbjpOT107CiAKICAgICAv
LyBTZW5kIHRoZSBhY3Rpb24gYWZ0ZXIgYSBzaG9ydCBkZWxheSB0byBzaW11bGF0ZSBub3JtYWwg
dXNlciBpbnRlcmFjdGlvbi4KLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BB
VENIX1RJTUVfTk9XLCAoaW50NjRfdCkoMC4wNSAqIE5TRUNfUEVSX1NFQykpLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMp
LCBjYWxsYmFja0lELCB0YWJsZV0geworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0
ZXIoNTBfbXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGNhbGxi
YWNrSUQsIHRhYmxlXSB7CiAgICAgICAgIGlmIChbdGFibGUgd2luZG93XSkKICAgICAgICAgICAg
IFt0YWJsZSBzZW5kQWN0aW9uOlt0YWJsZSBhY3Rpb25dIHRvOlt0YWJsZSB0YXJnZXRdXTsKIApA
QCAtMjEwLDExICsyMTEsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmNob29zZU1l
bnVBY3Rpb24oSlNTdHJpbmdSZWYganNBY3Rpb24sIEpTVmFsdWVSZWYgY2EKICAgICAgICAgW2Fj
dGl2ZU1lbnUgY2FuY2VsVHJhY2tpbmddOwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gewog
ICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9j
b250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9KS5nZXQoKSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpiZWdpbkJhY2tTd2lwZShK
U1ZhbHVlUmVmIGNhbGxiYWNrKQpAQCAtMjg3LDExICsyODgsMTEgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJNYWM6OmFjdGl2YXRlQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBj
YWxsYmFjaykKICAgICBldmVudFNlbmRlci0+bW91c2VEb3duKDAsIDApOwogICAgIGV2ZW50U2Vu
ZGVyLT5tb3VzZVVwKDAsIDApOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrSURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
c3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICgh
bV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5j
VGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmNvcHlUZXh0KEpTU3RyaW5nUmVmIHRleHQpCg==
</data>
<flag name="commit-queue"
          id="442210"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422964</attachid>
            <date>2021-03-11 14:09:33 -0800</date>
            <delta_ts>2021-03-11 14:28:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223087-20210311140932.patch</filename>
            <type>text/plain</type>
            <size>57032</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk3M2Y1YjdkOTVkNGVhNjI0ZjEyZWZj
YjAxMDk0Mjk2ZjMzZWI2NmUuLjNiNWY1ZGRiNTRjZjRlM2M0MmNjODE1NzRhZDE5MDAyMzUwYjQ5
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0
IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQg
dGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxvd3MgdXMgdG8gcG9ydCBzb21l
IG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVlIHRvIFdvcmtRdWV1ZS4gSXQg
YWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBkZWFsIHRoYXQgc29tZXRpbWVz
IG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJlYWQgYW5kIG90aGVyIHRpbWVz
IG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xlIFdvcmtRdWV1ZSB0eXBlIHRv
IHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVhZCBhbmQgYSBiYWNrZ3JvdW5k
IHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29udmVuaWVudC4KKworICAgICAg
ICAqIHd0Zi9Xb3JrUXVldWUuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6Om1haW4pOgor
ICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVl
dWUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OldvcmtRdWV1ZSk6CisgICAgICAgICogd3Rm
L2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OmNvbnN0
cnVjdE1haW5Xb3JrUXVldWUpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrUXVldWUpOgorCiAy
MDIxLTAzLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
dGFnZ2VkIHBvaW50ZXJzIGluIG1vcmUgcGxhY2VzIGluIHRoZSBNZXRhQWxsb2NhdG9yIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMjdlZTFlNGY0MjUyOTQ4MTI2OTg2MzNkNjY2YTkzMDU1NTY0YTg0Ny4u
MDI2YjM4ZGVhYTY1YmIzOTAwMjU4NDI1NzkwZjIxN2FkZGU2NTZlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6On5WaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKToKKwogMjAyMS0wMy0xMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gY29udHJvbHMgc3Rh
eSBvbiBzY3JlZW4gaW5kZWZpbml0ZWx5IGFmdGVyIGludGVyYWN0aW5nIHdpdGggdGltZSBzY3J1
YmJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3ZDU5NGFjZTNjMjk3MjkyMDYwNDJmNGRlMTdhYmNlZjhkOWM0MGIx
Li41OGFiNjBiYWMyYjhjZGViNjQyNmE5M2YwOTgyYjQ5NDgxZjA4MjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYxIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6d3JpdGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6aW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6Om91dHB1dFN0cmVhbVdyaXRlUmVhZHlDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6
CisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcu
bW06CisgICAgICAgICgtW1dLUERGSFVEVmlldyBpbml0V2l0aEZyYW1lOnBsdWdpbklkZW50aWZp
ZXI6cGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1b
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF9zY2hlZHVsZVJlbGVhc2VU
YXNrXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVj
dGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxPcGVuQXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VzQ29udHJvbGxlcjo6cmVmcmVzaEV4
aXN0aW5nU2VydmljZXMpOgorCiAyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBzb21lIHVzYWdlIG9mIGRpc3BhdGNoX3F1ZXVlIHdp
dGggV29ya1F1ZXVlIG5vdyB0aGF0IGl0IHN1cHBvcnRzIHN5bmMgZGlzcGF0Y2hpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ODRlOWIyMzJmNDAwN2E0NmNhZjA5NTMwZTY2MTIx
MGY4NTE0ODViLi44OTQyNTk0MmQ2ZGI4ODYzNGUxZTg1OWMxNmU0ZDJlMTUzNzBmZWEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMTEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1
ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVl
dWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxv
d3MgdXMgdG8gcG9ydCBzb21lIG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVl
IHRvIFdvcmtRdWV1ZS4gSXQgYWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBk
ZWFsIHRoYXQgc29tZXRpbWVzIG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJl
YWQgYW5kIG90aGVyIHRpbWVzIG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xl
IFdvcmtRdWV1ZSB0eXBlIHRvIHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVh
ZCBhbmQgYSBiYWNrZ3JvdW5kIHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29u
dmVuaWVudC4KKworICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgIChjYWxs
T25EZWxlZ2F0ZVRocmVhZEFuZFdhaXQpOgorCiAyMDIxLTAzLTEwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFJldGFpblB0cjw+IC8gT1NPYmplY3RQdHI8
PiBtb3JlIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKaW5kZXggZDVkZWI5ZmMxMjYyZmQzZTE5
MTJhMDA5M2I3NWMzNjFlYjI5MTUyNy4uZGY3ZDM3YThlYzY0NTUyYWUwMWMyZDU5MGQzNWRlMDJm
NTUxMTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCkBAIC00MCw2ICs0MCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAorV29ya1F1ZXVlJiBXb3JrUXVldWU6Om1haW4oKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZWZQdHI8V29ya1F1ZXVlPj4gbWFpbldvcmtRdWV1ZTsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICBtYWluV29ya1F1ZXVlLmdldCgpID0gY29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpOworICAgIH0pOworICAgIHJldHVybiAqbWFpbldvcmtRdWV1ZS5nZXQoKTsKK30KKwogUmVm
PFdvcmtRdWV1ZT4gV29ya1F1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBl
LCBRT1MgcW9zKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShuYW1lLCB0
eXBlLCBxb3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggMjM2NTQzMjBjOWRmY2MwMzc2ZTFlNThiZDBj
NjNmYzlkMGM3MTM0NC4uY2RhMWQxODRhMWEzMTVkYTRjMzk0YjU3YzYwMzZlZGFjOWQ2OTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIH07CiAgICAgdXNp
bmcgUU9TID0gVGhyZWFkOjpRT1M7CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdv
cmtRdWV1ZSYgbWFpbigpOworCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29y
a1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9T
ID0gUU9TOjpEZWZhdWx0KTsKICAgICB+V29ya1F1ZXVlKCkgZmluYWw7CiAKQEAgLTY2LDcgKzY4
LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdvcmtRdWV1
ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOworICAgIFdvcmtRdWV1ZShjb25zdCBjaGFy
KiBuYW1lLCBUeXBlLCBRT1MpOworCisgICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNvbnN0cnVj
dE1haW5Xb3JrUXVldWUoKTsKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICBleHBsaWNp
dCBXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJik7CisjZWxzZQorICAg
IGV4cGxpY2l0IFdvcmtRdWV1ZShSdW5Mb29wJik7CisjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBwbGF0
Zm9ybUludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtR
dWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApp
bmRleCA1ODRmYTVjYjk0N2Y0N2Q1M2M4ZTAyMTY4MWYxZjAwZmExYjVkMTU4Li44MmIzYWNlODM4
OGRhYjlkMmM3MmNiNDYyOGY3ZmQ5Nzk3M2M2YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCkBAIC01MCw2ICs1MCwxNiBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hTeW5jKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBkaXNwYXRjaF9zeW5jKG1f
ZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQo
KSk7CiB9CiAKK1JlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya1F1ZXVlKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4mJiBkaXNwYXRjaFF1ZXVlKQorICAgIDogbV9kaXNwYXRjaFF1ZXVlKFdU
Rk1vdmUoZGlzcGF0Y2hRdWV1ZSkpCit7Cit9CisKIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUlu
aXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9zKQogewogICAgIGRp
c3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElT
UEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCmluZGV4IDI3MmVjN2Q4NTFmYjAz
NmYwMWU3YjQwMjZkZDg3M2M3NGI2ZDdjMjguLjJkMGM0ZmMyNzIxZGNjZDFjOTdlODIzZjZmNjZl
NjEyMjkyYjMwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVl
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmlj
LmNwcApAQCAtMzIsNiArMzIsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNl
bWFwaG9yZS5oPgogCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3Jr
UXVldWUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjpt
YWluKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoUnVuTG9vcCYgcnVuTG9vcCkKKyAg
ICA6IG1fcnVuTG9vcCgmcnVuTG9vcCkKK3sKK30KKwogdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCiB7CiAgICAgQmluYXJ5U2Vt
YXBob3JlIHNlbWFwaG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDA2
ZDUyMTc4ZmNhZTFmMTM2MjkyMmM4ZDI2MjMwNmMzZjJhMTJlNDMuLmU2NzFiNTJhZTFiNDc5ZDkz
YjE1MTVkMTUzNDlkNzNlY2VhMzNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQpAQCAtMjMzLDcgKzIzMyw3IEBAIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp+
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQoKQogICAgICAgICBtX3BsYXliYWNrTW9k
ZWwgPSBudWxscHRyOwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbCA9IG51bGxwdHI7CiAgICAg
fSBlbHNlCi0gICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
V1RGTW92ZShub3RpZnlDbGllbnRzTW9kZWxXYXNEZXN0cm95ZWQpKTsKKyAgICAgICAgV29ya1F1
ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKFdURk1vdmUobm90aWZ5Q2xpZW50c01vZGVsV2FzRGVz
dHJveWVkKSk7CiB9CiAKICNwcmFnbWEgbWFyayBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
CmluZGV4IGE2MDg4ZjdmNmU4MGRhZjFlZjhhOTFlMTdhYjE5MWNiNGYwZjVkODIuLjEwNTRjNjRj
YWYxMjFkODg2NjY0NmIwNmJhZjQ4NzIwM2ZjYmMzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTQ2LDEyICs0NiwxNCBAQAog
I2ltcG9ydCA8bGlia2Vybi9PU0F0b21pYy5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW1wb3J0IDx3dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29w
Lmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY2YvQ0ZS
dW5Mb29wU1BJLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NvY29hL29iamNTUEkuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KQEAgLTMwNiw5ICszMDgsNyBAQCB2b2lkIFdlYlRocmVh
ZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogICAgIEpTQzo6SlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKFdlYkNvcmU6OmNvbW1vblZNKCkpOwogICAgIF9X
ZWJUaHJlYWRVbmxvY2soKTsKIAotICAgIHZvaWQgKF5kZWxlZ2F0ZUJsb2NrQ29weSkoKSA9IEJs
b2NrX2NvcHkoZGVsZWdhdGVCbG9jayk7Ci0gICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBkZWxlZ2F0ZUJsb2NrQ29weSk7Ci0gICAgQmxvY2tfcmVsZWFzZShkZWxl
Z2F0ZUJsb2NrQ29weSk7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKG1ha2VC
bG9ja1B0cihkZWxlZ2F0ZUJsb2NrKS5nZXQoKSk7CiAKICAgICBfV2ViVGhyZWFkTG9jaygpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDk5YTIyNjJiODQ0ZWNkMmIxMjhiNWFiZjcwMmEwZWJj
ZWUyMzg5ZGMuLmFiN2FiYzI1NzY1YWQ0MjhmMmExNTdjNjE3OTRkMjI1ODYxN2JiNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNv
cgogICAgICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeVBh
dGgpOwogCiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwg
SU9DaGFubmVsOjpUeXBlOjpDcmVhdGUsIFdvcmtRdWV1ZTo6UU9TOjpEZWZhdWx0KTsKLSAgICAg
ICAgY2hhbm5lbC0+d3JpdGUoMCwgZGF0YSwgbnVsbHB0ciwgW3RoaXMsIHdlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAg
IGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIFdvcmtRdWV1ZTo6bWFpbigpLCBbdGhpcywgd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRpZmllcl0oaW50IGVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUwNSw3ICs1MDUsNyBAQCB2
b2lkIEVuZ2luZTo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBOZXR3bwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpLCBudWxscHRyLCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaWRlbnRp
Zmllcl0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgY2hh
bm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBXb3JrUXVl
dWU6Om1haW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZp
ZXJdKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgQ2FjaGVTdG9yYWdlLCAiQ2FjaGVTdG9yYWdlOjpF
bmdpbmU6OnJlYWRGaWxlIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgZXJyb3IpOwogCiAgICAgICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHRoZSBkZWNvZGluZyBpbiB0aGUgYmFja2dyb3Vu
ZCB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggOGYzMWM5ODU0Nzdm
NWJjZTVjMTNkMGUwZjdjMjUzZDJmMGMzNjE1MC4uZmNlZmJmNzEyMDM0ZjczZDc1NGI4OWIxOWEy
NDc3MTUxZjI3N2NiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtODQsNyAr
ODQsNyBAQCB2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdQogICAgICAgICB9CiAKICAgICAgICAgYXV0
byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJl
YWQpOwotICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCksIG51bGxwdHIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAg
ICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIFdv
cmtRdWV1ZTo6bWFpbigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeSBmYWlsZWQgcmVhZGluZyBjaGFubmVsIHdpdGgg
ZXJyb3IgJWQiLCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaAppbmRleCAwNTM1ZjI5OTlkNmNh
ZmE5OTBjM2Q3NzFlY2EwYjcxNWE1ZTVlM2FkLi4xZDFlYWRhM2MzNTk0MGU2NmU3NWE0ZWY0YWQ2
YzhjODY2YzQxNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKQEAgLTUwLDggKzUwLDggQEAgcHVi
bGljOgogCiAgICAgLy8gVXNpbmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQg
dG8gdGhlIG1haW4gcXVldWUuCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgV29ya1F1ZXVl
OjptYWluKCkgaW5zdGVhZC4KLSAgICB2b2lkIHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBX
b3JrUXVldWUqLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJik7Ci0gICAgdm9p
ZCB3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiwgV29ya1F1ZXVlKiwgRnVuY3Rpb248
dm9pZCAoaW50IGVycm9yKT4mJik7CisgICAgdm9pZCByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCwgV29ya1F1ZXVlJiwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYpOworICAg
IHZvaWQgd3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYsIFdvcmtRdWV1ZSYsIEZ1bmN0
aW9uPHZvaWQgKGludCBlcnJvcik+JiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9wYXRoOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgSU9DaGFubmVsKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIElPQ2hhbm5lbDo6VHlwZSwgT3B0aW9uYWw8V29ya1F1ZXVlOjpRT1M+
KTsKIAogI2lmIFVTRShHTElCKQotICAgIHZvaWQgcmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3QsIFdvcmtRdWV1ZSosIEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBX
b3JrUXVldWUmLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJik7CiAjZW5kaWYK
IAogICAgIFN0cmluZyBtX3BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRl
eCA5OTMwMzlkMTUyYTAyNmU4NWVkZmJlYTRjYjI2ZGE0NDI4YzJjMTYyLi41YTNkOTI5NGIxNGQ5
ZGYxZmE2OTU3MmRhZjNiMmY0YzZjNjU4OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29j
b2EubW0KQEAgLTk2LDEyICs5NiwxMSBAQCBJT0NoYW5uZWw6On5JT0NoYW5uZWwoKQogICAgIFJF
TEVBU0VfQVNTRVJUKCFtX3dhc0RlbGV0ZWQuZXhjaGFuZ2UodHJ1ZSkpOwogfQogCi12b2lkIElP
Q2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1
ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1
ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKICAgICBi
b29sIGRpZENhbGxDb21wbGV0aW9uSGFuZGxlciA9IGZhbHNlOwotICAgIGF1dG8gZGlzcGF0Y2hR
dWV1ZSA9IHF1ZXVlID8gcXVldWUtPmRpc3BhdGNoUXVldWUoKSA6IGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCk7Ci0gICAgZGlzcGF0Y2hfaW9fcmVhZChtX2Rpc3BhdGNoSU8uZ2V0KCksIG9mZnNl
dCwgc2l6ZSwgZGlzcGF0Y2hRdWV1ZSwgbWFrZUJsb2NrUHRyKFtjaGFubmVsLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkaWRDYWxsQ29tcGxldGlvbkhh
bmRsZXJdKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90IGZpbGVEYXRhLCBpbnQgZXJyb3IpIG11
dGFibGUgeworICAgIGRpc3BhdGNoX2lvX3JlYWQobV9kaXNwYXRjaElPLmdldCgpLCBvZmZzZXQs
IHNpemUsIHF1ZXVlLmRpc3BhdGNoUXVldWUoKSwgbWFrZUJsb2NrUHRyKFtjaGFubmVsLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXJdKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90IGZpbGVEYXRhLCBpbnQgZXJy
b3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGRvbmUsIGRvbmUgfHwgIWRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIGlmIChkaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTIsMTIgKzExMSwxMSBAQCB2b2lkIElPQ2hh
bm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwg
RnVuY3Rpb248dm9pZAogICAgIH0pLmdldCgpKTsKIH0KIAotdm9pZCBJT0NoYW5uZWw6OndyaXRl
KHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0
aW9uPHZvaWQgKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIElPQ2hhbm5l
bDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlJiBxdWV1
ZSwgRnVuY3Rpb248dm9pZCAoaW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsKHRoaXMpOwogICAgIGF1dG8gZGlzcGF0Y2hEYXRh
ID0gZGF0YS5kaXNwYXRjaERhdGEoKTsKLSAgICBhdXRvIGRpc3BhdGNoUXVldWUgPSBxdWV1ZSA/
IHF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkgOiBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpOwotICAg
IGRpc3BhdGNoX2lvX3dyaXRlKG1fZGlzcGF0Y2hJTy5nZXQoKSwgb2Zmc2V0LCBkaXNwYXRjaERh
dGEsIGRpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbY2hhbm5lbCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBkb25lLCBkaXNwYXRjaF9kYXRh
X3QgZmlsZURhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgZGlzcGF0Y2hfaW9fd3JpdGUo
bV9kaXNwYXRjaElPLmdldCgpLCBvZmZzZXQsIGRpc3BhdGNoRGF0YSwgcXVldWUuZGlzcGF0Y2hR
dWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NoYW5uZWwsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90IGZpbGVEYXRh
LCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGRvbmUsIGRvbmUp
OwogICAgICAgICBhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgICAgIGNhbGxiYWNrKGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCmlu
ZGV4IDJmYjNlNzFlMjI1MWU2OTY1YTU1OGUyMjYyN2JhMDc4YWFhZjc4MDAuLmI2NzRkZjQwNTRh
YTlkYTdiMDY4NzEzZGM5OTYwYzQ2OWU2NDFkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxD
dXJsLmNwcApAQCAtNTUsMjAgKzU1LDkgQEAgSU9DaGFubmVsOjp+SU9DaGFubmVsKCkKICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxlRGVzY3JpcHRvcik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBydW5UYXNrSW5RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaywgV29ya1F1ZXVl
KiBxdWV1ZSkKK3ZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXpl
LCBXb3JrUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChxdWV1ZSkgewotICAgICAgICBxdWV1ZS0+ZGlz
cGF0Y2goV1RGTW92ZSh0YXNrKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBV
c2luZyBudWxscHRyIGFzIHF1ZXVlIHN1Ym1pdHMgdGhlIHJlc3VsdCB0byB0aGUgbWFpbiBjb250
ZXh0LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHRhc2spKTsKLX0KLQot
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi17Ci0gICAgcnVuVGFza0luUXVldWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgb2Zmc2V0LCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSB7CisgICAgcXVldWUuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgb2Zmc2V0LCBzaXplLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsK
ICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2ZpbGVEZXNjcmlwdG9yLCBm
aWxlU2l6ZSkgfHwgZmlsZVNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KSB7CiAgICAgICAgICAgICBEYXRhIGRhdGE7CkBAIC04MywxNyArNzIsMTcgQEAgdm9pZCBJT0No
YW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUs
IEZ1bmN0aW9uPHZvaWQKICAgICAgICAgZXJyID0gZXJyIDwgMCA/IGVyciA6IDA7CiAgICAgICAg
IGF1dG8gZGF0YSA9IERhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZGF0YSwgZXJyKTsKLSAgICB9LCBxdWV1ZSk7CisgICAgfSk7CiB9CiAKLXZvaWQgSU9D
aGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUq
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIElPQ2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29y
a1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIHJ1blRhc2tJblF1ZXVlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0geworICAgIHF1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9mZnNldCwgZGF0YSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBGaWxlU3lzdGVtOjpzZWVrRmlsZSht
X2ZpbGVEZXNjcmlwdG9yLCBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdp
bm5pbmcpOwogICAgICAgICBpbnQgZXJyID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxl
RGVzY3JpcHRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSk7CiAgICAgICAgIGVyciA9IGVyciA8IDAgPyBlcnIgOiAwOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihlcnIpOwotICAgIH0sIHF1ZXVlKTsKKyAgICB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgTmV0d29ya0NhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcApp
bmRleCA1Y2RhNzVkNzVjNDI5NzhlMDYwMGUyMmE0Y2I1OWE0ZTQzYmYzNWQwLi5mYTI3NWFkNzhk
OWZkYTBhM2JhODQzOWExYTVmNTcxYzVkYmUxNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
R0xpYi5jcHAKQEAgLTY4LDE3ICs2OCw2IEBAIElPQ2hhbm5lbDo6fklPQ2hhbm5lbCgpCiAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fd2FzRGVsZXRlZC5leGNoYW5nZSh0cnVlKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBydW5UYXNrSW5RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaywgV29y
a1F1ZXVlKiBxdWV1ZSkKLXsKLSAgICBpZiAocXVldWUpIHsKLSAgICAgICAgcXVldWUtPmRpc3Bh
dGNoKFdURk1vdmUodGFzaykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVXNp
bmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQgdG8gdGhlIG1haW4gY29udGV4
dC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZSh0YXNrKSk7Ci19Ci0KIHN0
YXRpYyB2b2lkIGZpbGxEYXRhRnJvbVJlYWRCdWZmZXIoR0J5dGVzKiByZWFkQnVmZmVyLCBzaXpl
X3Qgc2l6ZSwgRGF0YSYgZGF0YSkKIHsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnVmZmVyOwpAQCAt
MTE0LDE4ICsxMDMsMTYgQEAgc3RhdGljIHZvaWQgaW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFj
ayhHSW5wdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXMKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVhZEFzeW5jRGF0YT4gYXN5bmNEYXRhKHN0YXRpY19jYXN0PFJlYWRBc3luY0RhdGEq
Pih1c2VyRGF0YSkpOwogICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFk
X2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgbnVsbHB0cik7CiAgICAgaWYgKGJ5dGVzUmVhZCA9PSAt
MSkgewotICAgICAgICBXb3JrUXVldWUqIHF1ZXVlID0gYXN5bmNEYXRhLT5xdWV1ZS5nZXQoKTsK
LSAgICAgICAgcnVuVGFza0luUXVldWUoW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0g
eworICAgICAgICBhc3luY0RhdGEtPnF1ZXVlLT5kaXNwYXRjaChbYXN5bmNEYXRhID0gV1RGTW92
ZShhc3luY0RhdGEpXSB7CiAgICAgICAgICAgICBhc3luY0RhdGEtPmNvbXBsZXRpb25IYW5kbGVy
KGFzeW5jRGF0YS0+ZGF0YSwgLTEpOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFieXRlc1JlYWQpIHsKLSAgICAgICAg
V29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0YS0+cXVldWUuZ2V0KCk7Ci0gICAgICAgIHJ1blRh
c2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsKKyAgICAgICAgYXN5
bmNEYXRhLT5xdWV1ZS0+ZGlzcGF0Y2goW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0g
ewogICAgICAgICAgICAgYXN5bmNEYXRhLT5jb21wbGV0aW9uSGFuZGxlcihhc3luY0RhdGEtPmRh
dGEsIDApOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMzQsMTAgKzEyMSw5IEBAIHN0YXRpYyB2b2lkIGlucHV0U3RyZWFtUmVh
ZFJlYWR5Q2FsbGJhY2soR0lucHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzCiAK
ICAgICBzaXplX3QgcGVuZGluZ0J5dGVzVG9SZWFkID0gYXN5bmNEYXRhLT5ieXRlc1RvUmVhZCAt
IGFzeW5jRGF0YS0+ZGF0YS5zaXplKCk7CiAgICAgaWYgKCFwZW5kaW5nQnl0ZXNUb1JlYWQpIHsK
LSAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0YS0+cXVldWUuZ2V0KCk7Ci0gICAg
ICAgIHJ1blRhc2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsKKyAg
ICAgICAgYXN5bmNEYXRhLT5xdWV1ZS0+ZGlzcGF0Y2goW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5
bmNEYXRhKV0gewogICAgICAgICAgICAgYXN5bmNEYXRhLT5jb21wbGV0aW9uSGFuZGxlcihhc3lu
Y0RhdGEtPmRhdGEsIDApOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xNDgsMTQgKzEzNCwxNCBAQCBzdGF0aWMgdm9pZCBpbnB1
dFN0cmVhbVJlYWRSZWFkeUNhbGxiYWNrKEdJbnB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1
bHQqIHJlcwogICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGlu
cHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVsZWFzZSgpKTsKIH0KIAot
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChEYXRhJiwgaW50IGVycm9yKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8SU9DaGFubmVsPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogICAgIGlmICghbV9pbnB1dFN0cmVhbSkgewotICAgICAgICBydW5UYXNrSW5RdWV1ZShb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgcXVldWUuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICBEYXRhIGRhdGE7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhLCAtMSk7Ci0gICAgICAgIH0sIHF1
ZXVlKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3NCwxMSAr
MTYwLDExIEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXpl
LCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oaW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayksIGFz
eW5jRGF0YSk7CiB9CiAKLXZvaWQgSU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEm
LCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJT0NoYW5uZWw6OnJlYWRT
eW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSYgcXVldWUs
IEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBUaHJlYWQ6OmNyZWF0ZSgi
SU9DaGFubmVsOjpyZWFkU3luYyIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHNpemUsIHF1ZXVlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBUaHJlYWQ6OmNyZWF0ZSgiSU9DaGFubmVsOjpyZWFk
U3luYyIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNpemUsIHF1ZXVl
ID0gbWFrZVJlZihxdWV1ZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHN0ZDo6
bWluKHNpemUsIGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpOwogICAgICAgICB1aW50OF90KiBidWZm
ZXJEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MoYnVmZmVyU2l6ZSkpOwog
ICAgICAgICBHUmVmUHRyPEdCeXRlcz4gcmVhZEJ1ZmZlciA9IGFkb3B0R1JlZihnX2J5dGVzX25l
d193aXRoX2ZyZWVfZnVuYyhidWZmZXJEYXRhLCBidWZmZXJTaXplLCBmYXN0RnJlZSwgYnVmZmVy
RGF0YSkpOwpAQCAtMTg5LDEwICsxNzUsMTAgQEAgdm9pZCBJT0NoYW5uZWw6OnJlYWRTeW5jSW5U
aHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEYKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgb2Zmc2V0LgogICAgICAgICAgICAgZ3NzaXpl
IGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQobV9pbnB1dFN0cmVhbS5nZXQoKSwgY29u
c3RfY2FzdDx2b2lkKj4oZ19ieXRlc19nZXRfZGF0YShyZWFkQnVmZmVyLmdldCgpLCBudWxscHRy
KSksIGJ5dGVzVG9SZWFkLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChieXRl
c1JlYWQgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBydW5UYXNrSW5RdWV1ZShbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgICAgICBxdWV1ZS0+ZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgICAgIERh
dGEgZGF0YTsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgLTEp
OwotICAgICAgICAgICAgICAgIH0sIHF1ZXVlKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIwNiwxMCArMTkyLDEwIEBA
IHZvaWQgSU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBz
aXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGCiAgICAgICAgICAgICBieXRlc1RvUmVhZCA9IHN0ZDo6
bWluKHBlbmRpbmdCeXRlc1RvUmVhZCwgZ19ieXRlc19nZXRfc2l6ZShyZWFkQnVmZmVyLmdldCgp
KSk7CiAgICAgICAgIH0gd2hpbGUgKHBlbmRpbmdCeXRlc1RvUmVhZCk7CiAKLSAgICAgICAgcnVu
VGFza0luUXVldWUoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBidWZm
ZXIgPSBHUmVmUHRyPEdCeXRlcz4oZGF0YS5ieXRlcygpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWUtPmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgYnVmZmVyID0g
R1JlZlB0cjxHQnl0ZXM+KGRhdGEuYnl0ZXMoKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBEYXRhIGRhdGEg
PSB7IFdURk1vdmUoYnVmZmVyKSB9OwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0
YSwgMCk7Ci0gICAgICAgIH0sIHF1ZXVlKTsKKyAgICAgICAgfSk7CiAgICAgfSktPmRldGFjaCgp
OwogfQogCkBAIC0yMTgsNyArMjA0LDcgQEAgc3RydWN0IFdyaXRlQXN5bmNEYXRhIHsKIAogICAg
IFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWw7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsK
LSAgICBSZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBxdWV1ZTsK
ICAgICBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIApA
QCAtMjI3LDE5ICsyMTMsMTcgQEAgc3RhdGljIHZvaWQgb3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNh
bGxiYWNrKEdPdXRwdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXcml0ZUFzeW5jRGF0YT4gYXN5bmNEYXRhKHN0YXRpY19jYXN0PFdyaXRlQXN5bmNE
YXRhKj4odXNlckRhdGEpKTsKICAgICBnc3NpemUgYnl0ZXNXcml0dGVuID0gZ19vdXRwdXRfc3Ry
ZWFtX3dyaXRlX2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgbnVsbHB0cik7CiAgICAgaWYgKGJ5dGVz
V3JpdHRlbiA9PSAtMSkgewotICAgICAgICBXb3JrUXVldWUqIHF1ZXVlID0gYXN5bmNEYXRhLT5x
dWV1ZS5nZXQoKTsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW2FzeW5jRGF0YSA9IFdURk1vdmUo
YXN5bmNEYXRhKV0geworICAgICAgICBhc3luY0RhdGEtPnF1ZXVlLT5kaXNwYXRjaChbYXN5bmNE
YXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CiAgICAgICAgICAgICBhc3luY0RhdGEtPmNvbXBs
ZXRpb25IYW5kbGVyKC0xKTsKLSAgICAgICAgfSwgcXVldWUpOworICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdzc2l6ZSBwZW5kaW5nQnl0ZXNUb1dyaXRlID0gZ19i
eXRlc19nZXRfc2l6ZShhc3luY0RhdGEtPmJ1ZmZlci5nZXQoKSkgLSBieXRlc1dyaXR0ZW47CiAg
ICAgaWYgKCFwZW5kaW5nQnl0ZXNUb1dyaXRlKSB7Ci0gICAgICAgIFdvcmtRdWV1ZSogcXVldWUg
PSBhc3luY0RhdGEtPnF1ZXVlLmdldCgpOwotICAgICAgICBydW5UYXNrSW5RdWV1ZShbYXN5bmNE
YXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CisgICAgICAgIGFzeW5jRGF0YS0+cXVldWUtPmRp
c3BhdGNoKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsKICAgICAgICAgICAgIGFz
eW5jRGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoMCk7Ci0gICAgICAgIH0sIHF1ZXVlKTsKKyAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI1MCwyMSArMjM0LDIxIEBAIHN0
YXRpYyB2b2lkIG91dHB1dFN0cmVhbVdyaXRlUmVhZHlDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBz
dHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFk
eUNhbGxiYWNrPihvdXRwdXRTdHJlYW1Xcml0ZVJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVs
ZWFzZSgpKTsKIH0KIAotdm9pZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0
IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoaW50IGVycm9yKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSU9DaGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0
LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKGludCBl
cnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtICYmICFtX2lvU3RyZWFt
KSB7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0geworICAgICAgICBxdWV1ZS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKC0xKTsKLSAgICAgICAgfSwgcXVl
dWUpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEdPdXRwdXRT
dHJlYW0qIHN0cmVhbSA9IG1fb3V0cHV0U3RyZWFtID8gbV9vdXRwdXRTdHJlYW0uZ2V0KCkgOiBn
X2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShtX2lvU3RyZWFtLmdldCgp
KSk7CiAgICAgaWYgKCFzdHJlYW0pIHsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIHF1ZXVlLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
LTEpOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBmMDNiMGZmNWY1OTFlOWQ0ZWRiN2Q0Y2Ri
MzgxMjhkYjNkODg2YjdlLi5lZGRjMGJlMjllMGUyYzZkMjAyNWE5NmIyNWVjMWU1NmM0OGFmOGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIFN0b3JhZ2U6
OmRpc3BhdGNoUmVhZE9wZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4gcmVh
ZE9wZXJhdGlvbgogICAgICAgICByZWFkT3BlcmF0aW9uLnRpbWluZ3MucmVjb3JkSU9TdGFydFRp
bWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0No
YW5uZWw6Om9wZW4ocmVjb3JkUGF0aCwgSU9DaGFubmVsOjpUeXBlOjpSZWFkKTsKLSAgICAgICAg
Y2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCAmaW9R
dWV1ZSgpLCBbdGhpcywgJnJlYWRPcGVyYXRpb25dKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBpbnQg
ZXJyb3IpIHsKKyAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpLCBpb1F1ZXVlKCksIFt0aGlzLCAmcmVhZE9wZXJhdGlvbl0oY29uc3QgRGF0
YSYgZmlsZURhdGEsIGludCBlcnJvcikgewogICAgICAgICAgICAgcmVhZE9wZXJhdGlvbi50aW1p
bmdzLnJlY29yZElPRW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgICAgICAgICAg
aWYgKCFlcnJvcikKICAgICAgICAgICAgICAgICByZWFkUmVjb3JkKHJlYWRPcGVyYXRpb24sIGZp
bGVEYXRhKTsKQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVP
cGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogCiAg
ICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihyZWNvcmRQYXRoLCBJT0NoYW5u
ZWw6OlR5cGU6OkNyZWF0ZSk7CiAgICAgICAgIHNpemVfdCByZWNvcmRTaXplID0gcmVjb3JkRGF0
YS5zaXplKCk7Ci0gICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIHJlY29yZERhdGEsIG51bGxwdHIs
IFt0aGlzLCAmd3JpdGVPcGVyYXRpb24sIHJlY29yZFNpemVdKGludCBlcnJvcikgeworICAgICAg
ICBjaGFubmVsLT53cml0ZSgwLCByZWNvcmREYXRhLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMs
ICZ3cml0ZU9wZXJhdGlvbiwgcmVjb3JkU2l6ZV0oaW50IGVycm9yKSB7CiAgICAgICAgICAgICAv
LyBPbiBlcnJvciB0aGUgZW50cnkgc3RpbGwgc3RheXMgaW4gdGhlIGNvbnRlbnRzIGZpbHRlciB1
bnRpbCBuZXh0IHN5bmNocm9uaXphdGlvbi4KICAgICAgICAgICAgIG1fYXBwcm94aW1hdGVSZWNv
cmRzU2l6ZSArPSByZWNvcmRTaXplOwogICAgICAgICAgICAgZmluaXNoV3JpdGVPcGVyYXRpb24o
d3JpdGVPcGVyYXRpb24sIGVycm9yKTsKQEAgLTk4Niw3ICs5ODYsNyBAQCB2b2lkIFN0b3JhZ2U6
OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxh
Z3MsIFRyYXZlcgogICAgICAgICAgICAgKyt0cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsK
IAogICAgICAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKHJlY29yZFBhdGgs
IElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7Ci0gICAgICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIG51bGxwdHIsIFt0aGlzLCAmdHJhdmVy
c2VPcGVyYXRpb24sIHdvcnRoLCBib2R5U2hhcmVDb3VudF0oRGF0YSYgZmlsZURhdGEsIGludCkg
eworICAgICAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlvbiwg
d29ydGgsIGJvZHlTaGFyZUNvdW50XShEYXRhJiBmaWxlRGF0YSwgaW50KSB7CiAgICAgICAgICAg
ICAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAgICAgICAgICAgRGF0YSBoZWFk
ZXJEYXRhOwogICAgICAgICAgICAgICAgIGlmIChkZWNvZGVSZWNvcmRIZWFkZXIoZmlsZURhdGEs
IG1ldGFEYXRhLCBoZWFkZXJEYXRhLCBtX3NhbHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQppbmRleCAyMTcwNTk1ZDJm
MTYyY2ZmNTU0ZmNjZTMyZWE3Mjg1Y2JlNzUxYWY5Li4xODAwMzRkNzk5YmI3YTFiYWNlODE4ZDFl
OTFlZWI1ZmUyZjhmNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYktpdDJJbml0aWFsaXplQ29jb2EubW0KQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgPG11
dGV4PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVh
ZFN5c3RlbUludGVyZmFjZS5oPgpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEluaXRpYWxpemVXZWJL
aXQyKCkKICAgICAgICAgaWYgKFtOU1RocmVhZCBpc01haW5UaHJlYWRdIHx8IGxpbmtlZE9uT3JB
ZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpGaXJzdFdpdGhJbml0aWFsaXplV2ViS2l0Mk1haW5U
aHJlYWRBc3NlcnRpb24pKQogICAgICAgICAgICAgcnVuSW5pdGlhbGl6YXRpb25Db2RlKCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpc3BhdGNoX3N5bmNfZihkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBudWxscHRyLCBydW5Jbml0aWFsaXphdGlvbkNvZGUpOworICAgICAgICAgICAg
V29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKFtdIHsgcnVuSW5pdGlhbGl6YXRpb25Db2Rl
KCk7IH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW0KaW5kZXggNzhlYWZmNDUyMDQ4N2NjM2RjZTMwNWUwNTQ0MWIxNmM3
NzgxNzQ1MC4uYjAxZDU3MjQ2Yjc2ZWUwOWM0ZGYyYmMxNjQxNzkzMjA2ZDhmNDU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMTE3
LDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIFhQQ1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5l
Y3Rpb25fdCBwZWVyKQogICAgICAgICAgICAgICAgIGlmIChmZCAhPSAtMSkKICAgICAgICAgICAg
ICAgICAgICAgZHVwMihmZCwgU1RERVJSX0ZJTEVOTyk7CiAKLSAgICAgICAgICAgICAgICBkaXNw
YXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICAgICAg
V29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKFsmXSB7CiAgICAgICAgICAgICAgICAgICAg
IGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNzYWdl
LmdldCgpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICBzZXRBcHBsZUxhbmd1YWdlc1By
ZWZlcmVuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDA1MjU3MGVh
NWY5NGQ1MGJhMzg4ZjRjNmMzY2YzMzlkZGQ0OGNlOTkuLjQ4Yzc1MTBkNGI2MWE2ZDUyYWJmZTY5
Y2QwYmNmMzdkMWFjOWI1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAt
MTEwLDkgKzExMCw5IEBAICsgKHZvaWQpcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDoo
TlNTdHJpbmcgKilzY2hlbWUKICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0
ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lKTsK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhpcyBjYW5ub3QgYmUgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGJlZm9yZSB0aGUgbWFpbiBydW5sb29wIGlzIGlu
aXRpYWxpemVkLiAgU2VlIHJkYXI6Ly9wcm9ibGVtLzczNjE1OTk5Ci0gICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbc2NoZW1lID0g
cmV0YWluUHRyKHNjaGVtZSldIHsKKyAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2go
W3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CiAgICAgICAgICAgICBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xI
YW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgIH0pOwog
ICAgIH0KIH0KIApAQCAtMTIyLDkgKzEyMiw5IEBAICsgKHZvaWQpdW5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAqKXNjaGVtZQogICAgICAgICBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjp1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2Nv
bEhhbmRsZXJzKHNjaGVtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgY2Fubm90IGJl
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaCBiZWNhdXNlIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhl
IG1haW4gcnVubG9vcCBpcyBpbml0aWFsaXplZC4gIFNlZSByZGFyOi8vcHJvYmxlbS83MzYxNTk5
OQotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtl
QmxvY2tQdHIoW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUpXSB7CisgICAgICAgIFdvcmtRdWV1
ZTo6bWFpbigpLmRpc3BhdGNoKFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0gewogICAgICAg
ICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFz
SGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9KS5n
ZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA0MGJmNDk4NjlkZjJjYmNk
YzhlZWRjOTdhZWRiYzA3M2RkMmMyMjVhLi5jOWQ5MDJkYThhNTUzOWFlMjU3NDJjMDFmNmRiMTdj
NTc0ZTk4YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
Y2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUoKQogICAgICAgICAgICAgLy8gV2UgY2FuJ3QgY2Fs
bCBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UgZGlyZWN0bHkgdW5kZXJuZWF0aCB0aGlzIGNv
bW1pdCBoYW5kbGVyLCBiZWNhdXNlIGl0IGhhcyBzaWRlLWVmZmVjdHMKICAgICAgICAgICAgIC8v
IHRoYXQgbWF5IHJlc3VsdCBpbiBvdGhlciBmcmFtZXdvcmtzIHRyeWluZyB0byBpbnN0YWxsIGNv
bW1pdCBoYW5kbGVycyBmb3IgdGhlIHNhbWUgcGhhc2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLgog
ICAgICAgICAgICAgLy8gU28sIGRpc3BhdGNoX2FzeW5jIGhlcmU7IHdlIG9ubHkgY2FyZSB0aGF0
IHRoZSBhY3Rpdml0eSBzdGF0ZSBjaGFuZ2UgZG9lc24ndCBhcHBseSB1bnRpbCBhZnRlciB0aGUg
YWN0aXZlIGNvbW1pdCBpcyBjb21wbGV0ZS4KLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhpc10geworICAgICAgICAgICAgV29ya1F1
ZXVlOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzXSB7CiAgICAgICAgICAgICAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQppbmRleCAyM2Q4YjVkNzhl
OWIyYTM0YmMwN2FkNTcwYzFjZTBiZTNlNDY1NDI5Li5mMGYxZjU0NjFlOWIzNGVkNzhlYzQ0NTJm
ZjgzMDFhMzcyNDdkM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYv
V0tQREZIVURWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhV
RFZpZXcubW0KQEAgLTEwOSw3ICsxMDksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWZyYW1lIHBsdWdpbklkZW50aWZpZXI6KFdlYktpdDo6UERGUGx1Z2luSQogICAg
IFtzZWxmIHNldEZyYW1lOmZyYW1lXTsKIAogICAgIFdlYWtPYmpDUHRyPFdLUERGSFVEVmlldz4g
d2Vha1NlbGYgPSBzZWxmOwotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFU
Q0hfVElNRV9OT1csIChpbnQ2NF90KShpbml0aWFsSGlkZVRpbWVJbnRlcnZhbCAqIE5TRUNfUEVS
X1NFQykpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFdvcmtRdWV1ZTo6bWFp
bigpLmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyB7IGluaXRpYWxIaWRlVGltZUludGVydmFsIH0sIFt3
ZWFrU2VsZl0gewogICAgICAgICBbd2Vha1NlbGYgX2hpZGVUaW1lckZpcmVkXTsKICAgICB9KTsK
ICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggN2VjNzhlYzUwMzM3Y2MzMjE1
NmQ5NjkzMTViNzI2ZTdkZjhkZmIyMi4uOTU4Yjg0ZGU5N2VjNjA4YzFjZmQ4M2NmMDU1NDc5OGIy
ZGE5NjU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMwNSwxNCArMzA1LDE0IEBAIHN0YXRpYyBQ
cm9jZXNzQWNjZXNzVHlwZSBjb21wdXRlV2ViUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhRmV0Y2go
T3B0aW9uU2V0PFdlYnNpCiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFS
ZWNvcmQ+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBmZXRjaERhdGFBbmRBcHBseShk
YXRhVHlwZXMsIGZldGNoT3B0aW9ucywgbnVsbHB0ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGZldGNoRGF0YUFuZEFwcGx5KGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zLCBXb3Jr
UXVldWU6Om1haW4oKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0
aW9ucywgUmVmUHRyPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vi
c2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSkKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hE
YXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWY8V29ya1F1ZXVlPiYm
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5
KQogewogICAgIGNsYXNzIENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3IsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6
Ok1haW5SdW5Mb29wPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPENhbGxiYWNr
QWdncmVnYXRvcj4gY3JlYXRlKE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRj
aE9wdGlvbnMsIFJlZlB0cjxXb3JrUXVldWU+JiYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHksIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSkKKyAgICAgICAgc3RhdGljIFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWY8V29ya1F1ZXVlPiYm
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5
LCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENhbGxiYWNrQWdncmVnYXRvcihmZXRjaE9wdGlvbnMsIFdURk1v
dmUocXVldWUpLCBXVEZNb3ZlKGFwcGx5KSwgZGF0YVN0b3JlKSk7CiAgICAgICAgIH0KQEAgLTMy
NCwxNiArMzI0LDExIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHko
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICBWZWN0
b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29yZHM7CiAgICAgICAgICAgICByZWNvcmRzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV93ZWJzaXRlRGF0YVJlY29yZHMuc2l6ZSgpKTsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV93ZWJzaXRlRGF0YVJlY29yZHMudmFsdWVzKCkpCi0g
ICAgICAgICAgICAgICAgcmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQobV9xdWV1ZSA/IGNyb3NzVGhy
ZWFkQ29weShyZWNvcmQpIDogV1RGTW92ZShyZWNvcmQpKTsKKyAgICAgICAgICAgICAgICByZWNv
cmRzLnVuY2hlY2tlZEFwcGVuZChtX3F1ZXVlLnB0cigpICE9ICZXb3JrUXVldWU6Om1haW4oKSA/
IGNyb3NzVGhyZWFkQ29weShyZWNvcmQpIDogV1RGTW92ZShyZWNvcmQpKTsKIAotICAgICAgICAg
ICAgYXV0byBwcm9jZXNzUmVjb3JkcyA9IFthcHBseSA9IFdURk1vdmUobV9hcHBseSksIHJlY29y
ZHMgPSBXVEZNb3ZlKHJlY29yZHMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fcXVldWUt
PmRpc3BhdGNoKFthcHBseSA9IFdURk1vdmUobV9hcHBseSksIHJlY29yZHMgPSBXVEZNb3ZlKHJl
Y29yZHMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBhcHBseShXVEZNb3ZlKHJlY29y
ZHMpKTsKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGlmIChtX3F1ZXVlKQotICAgICAg
ICAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUocHJvY2Vzc1JlY29yZHMpKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
V1RGTW92ZShwcm9jZXNzUmVjb3JkcykpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4mIGZldGNoT3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZmV0Y2hPcHRpb25zOyB9CkBAIC00MjYsNyArNDIxLDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgfQogCiBwcml2YXRlOgotICAgICAg
ICBDYWxsYmFja0FnZ3JlZ2F0b3IoT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZl
dGNoT3B0aW9ucywgUmVmUHRyPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0
b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
b3JlKQorICAgICAgICBDYWxsYmFja0FnZ3JlZ2F0b3IoT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmPFdvcmtRdWV1ZT4mJiBxdWV1ZSwgRnVuY3Rpb248
dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSwgV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlKQogICAgICAgICAgICAgOiBtX2ZldGNoT3B0aW9ucyhmZXRjaE9wdGlvbnMp
CiAgICAgICAgICAgICAsIG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCiAgICAgICAgICAgICAsIG1f
YXBwbHkoV1RGTW92ZShhcHBseSkpCkBAIC00MzYsNyArNDMxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogCiAgICAgICAgIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBt
X2ZldGNoT3B0aW9uczsKLSAgICAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICAg
ICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8
V2Vic2l0ZURhdGFSZWNvcmQ+KT4gbV9hcHBseTsKIAogICAgICAgICBIYXNoTWFwPFN0cmluZywg
V2Vic2l0ZURhdGFSZWNvcmQ+IG1fd2Vic2l0ZURhdGFSZWNvcmRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4
IDQ4MjIxNmZhNDgyZjBhNTI1OWI0MGYzZWY5ZTI0ZTg2MDE4ZjEwMzMuLmYyNzM3OGE2NTdkYzNl
YmQ0ZGI3ODk2MzFjOTM1MzNkODNhM2ExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM1Nyw3ICszNTcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkVGVzdERvbWFpbnMoKSBjb25zdDsKICNlbmRpZgog
Ci0gICAgdm9pZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBG
dW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKKyAgICB2
b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwogCiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQppbmRleCBi
ZTM3MWRiMzZiMThlMDkwYzAzOTMwYTMyODRhZjY4ODNkMjU5MDM4Li5kZmNmMmI1MGJhZDllM2M1
OGMwZjU5MmY4MDY4NDc4OTE5NzFmNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9X
ZWFrSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiB1c2luZyBXZWJLaXQ6
OlByb2Nlc3NBbmRVSUFzc2VydGlvbjsKIApAQCAtMTM1LDE1ICsxMzYsMTAgQEAgLSAodm9pZClf
c2NoZWR1bGVSZWxlYXNlVGFzawogICAgICAgICByZXR1cm47CiAKICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tN
YW5hZ2VyOiBfc2NoZWR1bGVSZWxlYXNlVGFzayBiZWNhdXNlIHRoZSBleHBpcmF0aW9uIGhhbmRs
ZXIgaGFzIGJlZW4gY2FsbGVkIiwgc2VsZik7Ci0gICAgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2sg
PSBkaXNwYXRjaF9ibG9ja19jcmVhdGUoKGRpc3BhdGNoX2Jsb2NrX2ZsYWdzX3QpMCwgXnsKKyAg
ICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaEFmdGVyKHJlbGVhc2VCYWNrZ3JvdW5kVGFza0Fm
dGVyRXhwaXJhdGlvbkRlbGF5LCBbc2VsZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
XSB7CiAgICAgICAgIF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrID0gbmlsOwogICAgICAgICBbc2Vs
ZiBfcmVsZWFzZUJhY2tncm91bmRUYXNrXTsKICAgICB9KTsKLSAgICBkaXNwYXRjaF9hZnRlcihk
aXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCByZWxlYXNlQmFja2dyb3VuZFRhc2tBZnRl
ckV4cGlyYXRpb25EZWxheS52YWx1ZSgpICogTlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2spOwotI2lmICFfX2hhc19mZWF0dXJl
KG9iamNfYXJjKQotICAgIC8vIGRpc3BhdGNoX2FzeW5jKCkgZG9lcyBhIEJsb2NrX2NvcHkoKSAv
IEJsb2NrX3JlbGVhc2UoKSBvbiBiZWhhbGYgb2YgdGhlIGNhbGxlci4KLSAgICBCbG9ja19yZWxl
YXNlKF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrKTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9jYW5j
ZWxQZW5kaW5nUmVsZWFzZVRhc2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFjNzEzOWU1NjEzZWRlNDg2
Yjc0NTQ4NjZmYTI2MDc5ODA5MmJhMjguLmU0NjczYjI2NmU1NjMxMzg3YjdlNDk4OTRjZjJiMzdm
ZmE1NDVlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDIyOSw4ICs0MjI5LDggQEAgLSAodm9pZCly
ZXF1ZXN0UmVjdHNUb0V2YWRlRm9yU2VsZWN0aW9uQ29tbWFuZHNXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoTlMKICAgICB9CiAKICAgICAvLyBHaXZlIHRoZSBwYWdlIHNvbWUgdGltZSB0
byBwcmVzZW50IGN1c3RvbSBlZGl0aW5nIFVJIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRldGVjdCBh
bmQgZXZhZGUgaXQuCi0gICAgYXV0byBkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyID0gKDAu
MjVfcykubmFub3NlY29uZHMoKTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJ
U1BBVENIX1RJTUVfTk9XLCBkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyKSwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW2NvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSAoKSBt
dXRhYmxlIHsKKyAgICBhdXRvIGRlbGF5QmVmb3JlU2hvd2luZ0NhbGxvdXRCYXIgPSAwLjI1X3M7
CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hBZnRlcihkZWxheUJlZm9yZVNob3dpbmdD
YWxsb3V0QmFyLCBbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZildICgpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtTZWxmKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0p
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KaW5kZXggOWE5OGZmYzBkMzU2MzU4ZWE3MGExOTA2YWU5OWNjYzQ1
NTVjNjIyOC4uYmRjNTRiOWRlNzhjYmZiNmI4Yjg1MzNmMmZkNjYwOTIwNTZmZTE0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNTA1
LDcgKzE1MDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbE9wZW5BcHBMaW5rKCkKICAgICAv
LyBXZSBjaG9zZSAyNSBzZWNvbmRzIGJlY2F1c2UgdGhlIHN5c3RlbSBvbmx5IGdpdmVzIHVzIDMw
IHNlY29uZHMgYW5kIHdlIGRvbid0IHdhbnQgdG8gZ2V0IHRvbyBjbG9zZSB0byB0aGF0IGxpbWl0
CiAgICAgLy8gdG8gYXZvaWQgYXNzZXJ0aW9uIGludmFsaWRhdGlvbiAob3IgZXZlbiB0ZXJtaW5h
dGlvbikuCiAgICAgbV9vcGVuaW5nQXBwTGlua0FjdGl2aXR5ID0gcHJvY2VzcygpLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiT3BlbmluZyBBcHBMaW5rIl9zKS5tb3ZlVG9VbmlxdWVQ
dHIoKTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9X
LCAyNSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0geworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNo
QWZ0ZXIoMjVfcywgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgIGlm
ICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5tX29wZW5pbmdBcHBMaW5rQWN0aXZp
dHkgPSBudWxscHRyOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0KaW5kZXggZWE1YzMyMzkyZDcxY2YzZDcyZGRlNDUyZGM0
Y2IyNjg4NjM5YmRhNi4uNzk5YjBhMDJiNmE0NzE0MzQ2NmU1YzAzODJhODJlZDYwZGI0ZTQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVy
Lm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTZXJ2aWNlc0NvbnRyb2xsZXI6OnJlZnJlc2hF
eGlzdGluZ1NlcnZpY2VzKGJvb2wgcmVmcmVzaEltbWVkaWF0ZWx5KQogICAgICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4+IGF0dHJpYnV0ZWRT
dHJpbmdXaXRoUmljaENvbnRlbnQ7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdHRy
aWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50T25jZUZsYWc7CiAgICAgICAgIHN0ZDo6Y2FsbF9v
bmNlKGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnRPbmNlRmxhZywgWyZdIHsKLSAgICAg
ICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIHsKKyAg
ICAgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhbJl0gewogICAgICAgICAg
ICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9j
XSBpbml0XSk7CiAgICAgICAgICAgICAgICAgYXV0byBjZWxsID0gYWRvcHROUyhbW05TVGV4dEF0
dGFjaG1lbnRDZWxsIGFsbG9jXSBpbml0SW1hZ2VDZWxsOmltYWdlXSk7CiAgICAgICAgICAgICAg
ICAgW2F0dGFjaG1lbnQgc2V0QXR0YWNobWVudENlbGw6Y2VsbC5nZXQoKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQppbmRleCAyZmNiMDBhZGIyNGFjYjY1
ZGNmMzc5YjFhZmZkMjdmNzk0N2Q5NTcxLi42ZTZjOWQ2OTZkYTY2Y2RhYzlhNzU5ZTE4YmNkNDkx
NmUwNGVmZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRv
d25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViRG93bmxvYWQu
bW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNVUkxEb3dubG9h
ZFNQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndp
bi9keWxkU1BJLmg+CiAKIHN0YXRpYyBib29sIHNob3VsZENhbGxPbk5ldHdvcmtUaHJlYWQoKQpA
QCAtNjUsOCArNjYsMTEgQEAgc3RhdGljIHZvaWQgY2FsbE9uRGVsZWdhdGVUaHJlYWRBbmRXYWl0
KENhbGxhYmxlJiYgd29yaykKIHsKICAgICBpZiAoc2hvdWxkQ2FsbE9uTmV0d29ya1RocmVhZCgp
IHx8IGlzTWFpblRocmVhZCgpKQogICAgICAgICB3b3JrKCk7Ci0gICAgZWxzZQotICAgICAgICBk
aXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIHdvcmspOworICAgIGVsc2Ug
eworICAgICAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaFN5bmMoW3dvcmsgPSBXVEZNb3Zl
KHdvcmspXSgpIG11dGFibGUgeworICAgICAgICAgICAgd29yaygpOworICAgICAgICB9KTsKKyAg
ICB9CiB9CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk4MzZhNzk4MDlkMjFhNTg0ZDFmYjJlNDc0
ZDFmOTIyOGQzOThjZmUuLjAzNWFiMjI3YWJkMjdiZTAzOThiYjE4NjI0MjVmOTM3M2Q1NDE5NGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wMy0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEludHJvZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhy
ZWFkJ3Mgd29yayBxdWV1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0aHJl
YWQncyB3b3JrIHF1ZXVlLiBUaGlzIGFsbG93cyB1cyB0byBwb3J0IHNvbWUgbW9yZSBjb2RlIGZy
b20KKyAgICAgICAgZGlzcGF0Y2hfcXVldWUgdG8gV29ya1F1ZXVlLiBJdCBhbHNvIHNpbXBsaWZp
ZXMgc29tZSBjb2RlIHRoYXQgaGFzIHRvIGRlYWwgdGhhdCBzb21ldGltZXMgbmVlZHMgdG8gcnVu
IG9uCisgICAgICAgIHRoZSBtYWluIHRocmVhZCBhbmQgb3RoZXIgdGltZXMgb24gYSBiYWNrZ3Jv
dW5kIHF1ZXVlLiBIYXZpbmcgYSBzaW5nbGUgV29ya1F1ZXVlIHR5cGUgdG8gcmVwcmVzZW50IGJv
dGggdGhlCisgICAgICAgIG1haW4gdGhyZWFkIGFuZCBhIGJhY2tncm91bmQgcXVldWUgbWFrZXMg
d3JpdGluZyBzdWNoIGNvZGUgbW9yZSBjb252ZW5pZW50LgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVySU9TOjpkb0FzeW5jVGFzayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoLVtEdW1wUmVuZGVyVHJlZSBfd2ViVGhy
ZWFkSW52b2tlZF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRy
b2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6ZG9Bc3lu
Y1Rhc2spOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2YXRlRGF0
YUxpc3RTdWdnZXN0aW9uKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjpy
ZW1vdmVWaWV3RnJvbVdpbmRvdyk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6YWRkVmlld1RvV2luZG93KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNj
cmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6YWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rpb24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJNYWM6OmNob29zZU1lbnVBY3Rpb24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJNYWM6OmFjdGl2YXRlQXRQb2ludCk6CisKIDIwMjEtMDMtMTEgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0YWdnZWQgcG9pbnRlcnMgaW4gbW9y
ZSBwbGFjZXMgaW4gdGhlIE1ldGFBbGxvY2F0b3IgY29kZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGExZWYyZWQwOTc5MDEy
MTQ3ZjY5ZTA5NDUzZjZlZWNlODBhM2Y0ZjQuLjA1YjliOGUzMzc1OTdiNDM2Y2MyMzIwYWYxMzQw
MmRkODk4YjBkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KIAogZXh0ZXJuIFJldGFpblB0cjxEdW1w
UmVuZGVyVHJlZUJyb3dzZXJWaWV3PiBnV2ViQnJvd3NlclZpZXc7CiBleHRlcm4gUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmlldz4gZ1dlYlNjcm9sbFZpZXc7CkBAIC00OSwxOSAr
NTAsMTggQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmRvQXN5bmNUYXNrKEpTVmFsdWVS
ZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJl
cGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAK
LSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQ
dHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAg
IFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJh
Y2tJRCk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
ewogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rh
c2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwogCi0gICAgUmVmUHRyPFVJ
U2NyaXB0Q29udHJvbGxlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNjYWxlLCBjYWxs
YmFja0lEXSB7CiAgICAgICAgIFtnV2ViU2Nyb2xsVmlldyB6b29tVG9TY2FsZTpzY2FsZSBhbmlt
YXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKICAgICAgICAgICAgIGlmICghbV9jb250
ZXh0KQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQppbmRleCBiNTFlMWFlZmUyZGZmNmFjZWViNzY0M2IzYjQzMmYyMWU0
MDc5YmFlLi5mNGUwYjk4Yjg1NzlkNzU1YmRiOWU1MDczYTVjOWRjODU2NTFmNGEwIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xMDUsNiArMTA1LDcg
QEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbXBvcnQgPHd0Zi9VbmlxdWVBcnJheS5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgog
I2ltcG9ydCA8d3RmL2NvY29hL0NyYXNoUmVwb3J0ZXIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9W
ZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTIz
OCw3ICsxMjM5LDcgQEAgLSAodm9pZClfd2ViVGhyZWFkRXZlbnRMb29wSGFzUnVuCiAtICh2b2lk
KV93ZWJUaHJlYWRJbnZva2VkCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
LSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFdv
cmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildIHsKICAgICAgICAgW3NlbGYgX3dlYlRocmVhZEV2ZW50TG9vcEhhc1J1bl07CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250
cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxl
ck1hYy5tbQppbmRleCBlMTFmYTMyY2VjNmEwODRiYTAxZDk3ZWM4MWJkNjYyMTUyZDNhYTVkLi5m
MjgzM2EyYjJjNDE0MjcyZjcwOTg0MGQ1ZDQ4ODRiNjAxOGY2ZDc4IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTM4LDcgKzM4
LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJQcmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8V2ViS2l0
L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1RleHRJbnB1dENvbnRl
eHRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1
ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNTEsMTEgKzUxLDExIEBAIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyTWFjOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAg
IHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2Fs
bGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lE
XSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pLmdldCgp
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0
QXRSYW5nZShKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCkBAIC0x
MDcsMTEgKzEwNywxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6YWN0aXZhdGVEYXRh
TGlzdFN1Z2dlc3Rpb24odW5zaWduZWQgaW5kZXgsIEpTVmFsdWVSZQogICAgIFVOVVNFRF9QQVJB
TShpbmRleCk7CiAKICAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJl
Rm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLSAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3Ro
aXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFdvcmtR
dWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7
Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIHByZWZlcmVuY2VSZWYsIEpTU3RyaW5n
UmVmIHZhbHVlUmVmKQpAQCAtMTMwLDExICsxMzAsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXJNYWM6OnJlbW92ZVZpZXdGcm9tV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgV2Vi
VmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CiAgICAgW3dlYlZpZXcgcmVtb3Zl
RnJvbVN1cGVydmlld107CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y2FsbGJhY2tJRF0geworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFt
X2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNU
YXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYgY2Fs
bGJhY2spCkBAIC0xNDQsMTEgKzE0NCwxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6
YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgV2ViVmlldyAqd2ViVmll
dyA9IFttYWluRnJhbWUgd2ViVmlld107CiAgICAgW1ttYWluV2luZG93IGNvbnRlbnRWaWV3XSBh
ZGRTdWJ2aWV3OndlYlZpZXddOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrSURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlm
ICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFz
eW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnRvZ2dsZUNhcHNMb2NrKEpTVmFsdWVSZWYg
Y2FsbGJhY2spCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlw
dENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0KaW5kZXggYmFiZTk1N2QxMWIyMDQ2ZDVmMzZlZDRkZGM3MWJiZDdkNmU2
MDYxYi4uMWZjMzg1YjIxMmE1MzQ1MmI3MmJhMGZiZTlhOGI3NDFjMzQ1OGM1NCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpA
QCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXVFIg
ewogCkBAIC0xNTEsNyArMTUyLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2
YXRlRGF0YUxpc3RTdWdnZXN0aW9uKHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlUmUKICAgICBbdGFi
bGUgc2VsZWN0Um93SW5kZXhlczpbTlNJbmRleFNldCBpbmRleFNldFdpdGhJbmRleDppbmRleF0g
YnlFeHRlbmRpbmdTZWxlY3Rpb246Tk9dOwogCiAgICAgLy8gU2VuZCB0aGUgYWN0aW9uIGFmdGVy
IGEgc2hvcnQgZGVsYXkgdG8gc2ltdWxhdGUgbm9ybWFsIHVzZXIgaW50ZXJhY3Rpb24uCi0gICAg
ZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgKGludDY0X3Qp
KDAuMDUgKiBOU0VDX1BFUl9TRUMpKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgY2FsbGJhY2tJRCwgdGFibGVdIHsK
KyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaEFmdGVyKDUwX21zLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMpLCBjYWxsYmFja0lELCB0YWJsZV0gewogICAgICAg
ICBpZiAoW3RhYmxlIHdpbmRvd10pCiAgICAgICAgICAgICBbdGFibGUgc2VuZEFjdGlvbjpbdGFi
bGUgYWN0aW9uXSB0bzpbdGFibGUgdGFyZ2V0XV07CiAKQEAgLTIxMCwxMSArMjExLDExIEBAIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpjaG9vc2VNZW51QWN0aW9uKEpTU3RyaW5nUmVmIGpz
QWN0aW9uLCBKU1ZhbHVlUmVmIGNhCiAgICAgICAgIFthY3RpdmVNZW51IGNhbmNlbFRyYWNraW5n
XTsKICAgICB9CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJh
Y2tJRF0geworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxl
dGUoY2FsbGJhY2tJRCk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlck1hYzo6YmVnaW5CYWNrU3dpcGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKQEAg
LTI4NywxMSArMjg4LDExIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjphY3RpdmF0ZUF0
UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgZXZlbnRTZW5k
ZXItPm1vdXNlRG93bigwLCAwKTsKICAgICBldmVudFNlbmRlci0+bW91c2VVcCgwLCAwKTsKIAot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0
cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAg
V29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2tJRF0gewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lE
KTsKLSAgICB9KS5nZXQoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
TWFjOjpjb3B5VGV4dChKU1N0cmluZ1JlZiB0ZXh0KQo=
</data>
<flag name="commit-queue"
          id="442216"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422967</attachid>
            <date>2021-03-11 14:18:44 -0800</date>
            <delta_ts>2021-03-11 14:32:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223087-20210311141843.patch</filename>
            <type>text/plain</type>
            <size>57315</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk3M2Y1YjdkOTVkNGVhNjI0ZjEyZWZj
YjAxMDk0Mjk2ZjMzZWI2NmUuLjNiNWY1ZGRiNTRjZjRlM2M0MmNjODE1NzRhZDE5MDAyMzUwYjQ5
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0
IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQg
dGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxvd3MgdXMgdG8gcG9ydCBzb21l
IG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVlIHRvIFdvcmtRdWV1ZS4gSXQg
YWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBkZWFsIHRoYXQgc29tZXRpbWVz
IG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJlYWQgYW5kIG90aGVyIHRpbWVz
IG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xlIFdvcmtRdWV1ZSB0eXBlIHRv
IHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVhZCBhbmQgYSBiYWNrZ3JvdW5k
IHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29udmVuaWVudC4KKworICAgICAg
ICAqIHd0Zi9Xb3JrUXVldWUuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6Om1haW4pOgor
ICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVl
dWUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OldvcmtRdWV1ZSk6CisgICAgICAgICogd3Rm
L2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OmNvbnN0
cnVjdE1haW5Xb3JrUXVldWUpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrUXVldWUpOgorCiAy
MDIxLTAzLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
dGFnZ2VkIHBvaW50ZXJzIGluIG1vcmUgcGxhY2VzIGluIHRoZSBNZXRhQWxsb2NhdG9yIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMjdlZTFlNGY0MjUyOTQ4MTI2OTg2MzNkNjY2YTkzMDU1NTY0YTg0Ny4u
MDI2YjM4ZGVhYTY1YmIzOTAwMjU4NDI1NzkwZjIxN2FkZGU2NTZlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6On5WaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKToKKwogMjAyMS0wMy0xMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gY29udHJvbHMgc3Rh
eSBvbiBzY3JlZW4gaW5kZWZpbml0ZWx5IGFmdGVyIGludGVyYWN0aW5nIHdpdGggdGltZSBzY3J1
YmJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3ZDU5NGFjZTNjMjk3MjkyMDYwNDJmNGRlMTdhYmNlZjhkOWM0MGIx
Li41OGFiNjBiYWMyYjhjZGViNjQyNmE5M2YwOTgyYjQ5NDgxZjA4MjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYxIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6d3JpdGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6aW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6Om91dHB1dFN0cmVhbVdyaXRlUmVhZHlDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6
CisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcu
bW06CisgICAgICAgICgtW1dLUERGSFVEVmlldyBpbml0V2l0aEZyYW1lOnBsdWdpbklkZW50aWZp
ZXI6cGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1b
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF9zY2hlZHVsZVJlbGVhc2VU
YXNrXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVj
dGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxPcGVuQXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VzQ29udHJvbGxlcjo6cmVmcmVzaEV4
aXN0aW5nU2VydmljZXMpOgorCiAyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBzb21lIHVzYWdlIG9mIGRpc3BhdGNoX3F1ZXVlIHdp
dGggV29ya1F1ZXVlIG5vdyB0aGF0IGl0IHN1cHBvcnRzIHN5bmMgZGlzcGF0Y2hpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ODRlOWIyMzJmNDAwN2E0NmNhZjA5NTMwZTY2MTIx
MGY4NTE0ODViLi44OTQyNTk0MmQ2ZGI4ODYzNGUxZTg1OWMxNmU0ZDJlMTUzNzBmZWEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMTEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1
ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVl
dWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxv
d3MgdXMgdG8gcG9ydCBzb21lIG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVl
IHRvIFdvcmtRdWV1ZS4gSXQgYWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBk
ZWFsIHRoYXQgc29tZXRpbWVzIG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJl
YWQgYW5kIG90aGVyIHRpbWVzIG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xl
IFdvcmtRdWV1ZSB0eXBlIHRvIHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVh
ZCBhbmQgYSBiYWNrZ3JvdW5kIHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29u
dmVuaWVudC4KKworICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgIChjYWxs
T25EZWxlZ2F0ZVRocmVhZEFuZFdhaXQpOgorCiAyMDIxLTAzLTEwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFJldGFpblB0cjw+IC8gT1NPYmplY3RQdHI8
PiBtb3JlIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKaW5kZXggZDVkZWI5ZmMxMjYyZmQzZTE5
MTJhMDA5M2I3NWMzNjFlYjI5MTUyNy4uZGY3ZDM3YThlYzY0NTUyYWUwMWMyZDU5MGQzNWRlMDJm
NTUxMTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCkBAIC00MCw2ICs0MCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAorV29ya1F1ZXVlJiBXb3JrUXVldWU6Om1haW4oKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZWZQdHI8V29ya1F1ZXVlPj4gbWFpbldvcmtRdWV1ZTsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICBtYWluV29ya1F1ZXVlLmdldCgpID0gY29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpOworICAgIH0pOworICAgIHJldHVybiAqbWFpbldvcmtRdWV1ZS5nZXQoKTsKK30KKwogUmVm
PFdvcmtRdWV1ZT4gV29ya1F1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBl
LCBRT1MgcW9zKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShuYW1lLCB0
eXBlLCBxb3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggMjM2NTQzMjBjOWRmY2MwMzc2ZTFlNThiZDBj
NjNmYzlkMGM3MTM0NC4uY2RhMWQxODRhMWEzMTVkYTRjMzk0YjU3YzYwMzZlZGFjOWQ2OTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIH07CiAgICAgdXNp
bmcgUU9TID0gVGhyZWFkOjpRT1M7CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdv
cmtRdWV1ZSYgbWFpbigpOworCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29y
a1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9T
ID0gUU9TOjpEZWZhdWx0KTsKICAgICB+V29ya1F1ZXVlKCkgZmluYWw7CiAKQEAgLTY2LDcgKzY4
LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdvcmtRdWV1
ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOworICAgIFdvcmtRdWV1ZShjb25zdCBjaGFy
KiBuYW1lLCBUeXBlLCBRT1MpOworCisgICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNvbnN0cnVj
dE1haW5Xb3JrUXVldWUoKTsKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICBleHBsaWNp
dCBXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJik7CisjZWxzZQorICAg
IGV4cGxpY2l0IFdvcmtRdWV1ZShSdW5Mb29wJik7CisjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBwbGF0
Zm9ybUludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtR
dWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApp
bmRleCA1ODRmYTVjYjk0N2Y0N2Q1M2M4ZTAyMTY4MWYxZjAwZmExYjVkMTU4Li44MmIzYWNlODM4
OGRhYjlkMmM3MmNiNDYyOGY3ZmQ5Nzk3M2M2YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCkBAIC01MCw2ICs1MCwxNiBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hTeW5jKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBkaXNwYXRjaF9zeW5jKG1f
ZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQo
KSk7CiB9CiAKK1JlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya1F1ZXVlKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4mJiBkaXNwYXRjaFF1ZXVlKQorICAgIDogbV9kaXNwYXRjaFF1ZXVlKFdU
Rk1vdmUoZGlzcGF0Y2hRdWV1ZSkpCit7Cit9CisKIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUlu
aXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9zKQogewogICAgIGRp
c3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElT
UEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCmluZGV4IDI3MmVjN2Q4NTFmYjAz
NmYwMWU3YjQwMjZkZDg3M2M3NGI2ZDdjMjguLjJkMGM0ZmMyNzIxZGNjZDFjOTdlODIzZjZmNjZl
NjEyMjkyYjMwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVl
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmlj
LmNwcApAQCAtMzIsNiArMzIsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNl
bWFwaG9yZS5oPgogCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3Jr
UXVldWUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjpt
YWluKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoUnVuTG9vcCYgcnVuTG9vcCkKKyAg
ICA6IG1fcnVuTG9vcCgmcnVuTG9vcCkKK3sKK30KKwogdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCiB7CiAgICAgQmluYXJ5U2Vt
YXBob3JlIHNlbWFwaG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDA2
ZDUyMTc4ZmNhZTFmMTM2MjkyMmM4ZDI2MjMwNmMzZjJhMTJlNDMuLmZmYTI2M2Q3ZjNjMTI5Mzdk
NmQ1YmRiNmQxMDhiNjFmN2ViNzQ1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQpAQCAtNDIsOCArNDIsMTAgQEAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+
Ci0jaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvUXVhcnR6Q29yZVNQSS5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgorCisjaW1wb3J0
IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTIzMyw3ICsyMzUsNyBAQCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6flZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0KCkKICAgICAgICAgbV9wbGF5YmFja01vZGVs
ID0gbnVsbHB0cjsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwgPSBudWxscHRyOwogICAgIH0g
ZWxzZQotICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFdU
Rk1vdmUobm90aWZ5Q2xpZW50c01vZGVsV2FzRGVzdHJveWVkKSk7CisgICAgICAgIFdvcmtRdWV1
ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhXVEZNb3ZlKG5vdGlmeUNsaWVudHNNb2RlbFdhc0Rlc3Ry
b3llZCkpOwogfQogCiAjcHJhZ21hIG1hcmsgVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpp
bmRleCBhNjA4OGY3ZjZlODBkYWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgyLi4xMDU0YzY0Y2Fm
MTIxZDg4NjY2NDZiMDZiYWY0ODcyMDNmY2JjMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC00NiwxMiArNDYsMTQgQEAKICNp
bXBvcnQgPGxpYmtlcm4vT1NBdG9taWMuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5o
PgogI2ltcG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5n
Lmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NmL0NGUnVu
TG9vcFNQSS5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9vYmpjU1BJLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0zMDYsOSArMzA4LDcgQEAgdm9pZCBXZWJUaHJlYWRS
dW5Pbk1haW5UaHJlYWQodm9pZCheZGVsZWdhdGVCbG9jaykoKSkKICAgICBKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsKICAgICBfV2Vi
VGhyZWFkVW5sb2NrKCk7CiAKLSAgICB2b2lkICheZGVsZWdhdGVCbG9ja0NvcHkpKCkgPSBCbG9j
a19jb3B5KGRlbGVnYXRlQmxvY2spOwotICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgZGVsZWdhdGVCbG9ja0NvcHkpOwotICAgIEJsb2NrX3JlbGVhc2UoZGVsZWdh
dGVCbG9ja0NvcHkpOworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhtYWtlQmxv
Y2tQdHIoZGVsZWdhdGVCbG9jaykuZ2V0KCkpOwogCiAgICAgX1dlYlRocmVhZExvY2soKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAppbmRleCA5OWEyMjYyYjg0NGVjZDJiMTI4YjVhYmY3MDJhMGViY2Vl
MjM4OWRjLi5hYjdhYmMyNTc2NWFkNDI4ZjJhMTU3YzYxNzk0ZDIyNTg2MTdiYjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IK
ICAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRo
KTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5hbWUsIElP
Q2hhbm5lbDo6VHlwZTo6Q3JlYXRlLCBXb3JrUXVldWU6OlFPUzo6RGVmYXVsdCk7Ci0gICAgICAg
IGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIG51bGxwdHIsIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCBpZGVudGlmaWVyXShpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICBj
aGFubmVsLT53cml0ZSgwLCBkYXRhLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MDUsNyArNTA1LDcgQEAgdm9p
ZCBFbmdpbmU6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgTmV0d28KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSwgbnVsbHB0ciwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZp
ZXJdKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNoYW5u
ZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgV29ya1F1ZXVl
OjptYWluKCksIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBpZGVudGlmaWVy
XShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIENhY2hlU3RvcmFnZSwgIkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpyZWFkRmlsZSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIGVycm9yKTsKIAogICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB0aGUgZGVjb2RpbmcgaW4gdGhlIGJhY2tncm91bmQg
dGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDhmMzFjOTg1NDc3ZjVi
Y2U1YzEzZDBlMGY3YzI1M2QyZjBjMzYxNTAuLmZjZWZiZjcxMjAzNGY3M2Q3NTRiODliMTlhMjQ3
NzE1MWYyNzdjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXUKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
Y2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBlOjpSZWFk
KTsKLSAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpLCBudWxscHRyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBXb3Jr
UXVldWU6Om1haW4oKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiQ2FjaGVzOjpy
ZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkgZmFpbGVkIHJlYWRpbmcgY2hhbm5lbCB3aXRoIGVy
cm9yICVkIiwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKaW5kZXggMDUzNWYyOTk5ZDZjYWZh
OTkwYzNkNzcxZWNhMGI3MTVhNWU1ZTNhZC4uMWQxZWFkYTNjMzU5NDBlNjZlNzVhNGVmNGFkNmM4
Yzg2NmM0MTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFVzaW5nIG51bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRv
IHRoZSBtYWluIHF1ZXVlLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIFdvcmtRdWV1ZTo6
bWFpbigpIGluc3RlYWQuCi0gICAgdm9pZCByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCwgV29y
a1F1ZXVlKiwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYpOwotICAgIHZvaWQg
d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYsIFdvcmtRdWV1ZSosIEZ1bmN0aW9uPHZv
aWQgKGludCBlcnJvcik+JiYpOworICAgIHZvaWQgcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qs
IFdvcmtRdWV1ZSYsIEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiYmKTsKKyAgICB2
b2lkIHdyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmLCBXb3JrUXVldWUmLCBGdW5jdGlv
bjx2b2lkIChpbnQgZXJyb3IpPiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0aDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIElPQ2hhbm5lbChjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUsIE9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPik7
CiAKICNpZiBVU0UoR0xJQikKLSAgICB2b2lkIHJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90LCBXb3JrUXVldWUqLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4m
Jik7CisgICAgdm9pZCByZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCwgV29y
a1F1ZXVlJiwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYpOwogI2VuZGlmCiAK
ICAgICBTdHJpbmcgbV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5kZXgg
OTkzMDM5ZDE1MmEwMjZlODVlZGZiZWE0Y2IyNmRhNDQyOGMyYzE2Mi4uNWEzZDkyOTRiMTRkOWRm
MWZhNjk1NzJkYWYzYjJmNGM2YzY1ODkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29h
Lm1tCkBAIC05NiwxMiArOTYsMTEgQEAgSU9DaGFubmVsOjp+SU9DaGFubmVsKCkKICAgICBSRUxF
QVNFX0FTU0VSVCghbV93YXNEZWxldGVkLmV4Y2hhbmdlKHRydWUpKTsKIH0KIAotdm9pZCBJT0No
YW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUs
IEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWwodGhpcyk7CiAgICAgYm9v
bCBkaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIgPSBmYWxzZTsKLSAgICBhdXRvIGRpc3BhdGNoUXVl
dWUgPSBxdWV1ZSA/IHF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkgOiBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpOwotICAgIGRpc3BhdGNoX2lvX3JlYWQobV9kaXNwYXRjaElPLmdldCgpLCBvZmZzZXQs
IHNpemUsIGRpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbY2hhbm5lbCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyXShib29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCBmaWxlRGF0YSwgaW50IGVycm9yKSBtdXRh
YmxlIHsKKyAgICBkaXNwYXRjaF9pb19yZWFkKG1fZGlzcGF0Y2hJTy5nZXQoKSwgb2Zmc2V0LCBz
aXplLCBxdWV1ZS5kaXNwYXRjaFF1ZXVlKCksIG1ha2VCbG9ja1B0cihbY2hhbm5lbCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyXShib29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCBmaWxlRGF0YSwgaW50IGVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChkb25lLCBkb25lIHx8ICFkaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBpZiAoZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEyLDEyICsxMTEsMTEgQEAgdm9pZCBJT0NoYW5u
ZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEZ1
bmN0aW9uPHZvaWQKICAgICB9KS5nZXQoKSk7CiB9CiAKLXZvaWQgSU9DaGFubmVsOjp3cml0ZShz
aXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlv
bjx2b2lkIChpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJT0NoYW5uZWw6
OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSYgcXVldWUs
IEZ1bmN0aW9uPHZvaWQgKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
UmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKICAgICBhdXRvIGRpc3BhdGNoRGF0YSA9
IGRhdGEuZGlzcGF0Y2hEYXRhKCk7Ci0gICAgYXV0byBkaXNwYXRjaFF1ZXVlID0gcXVldWUgPyBx
dWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpIDogZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKTsKLSAgICBk
aXNwYXRjaF9pb193cml0ZShtX2Rpc3BhdGNoSU8uZ2V0KCksIG9mZnNldCwgZGlzcGF0Y2hEYXRh
LCBkaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW2NoYW5uZWwsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90
IGZpbGVEYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgIGRpc3BhdGNoX2lvX3dyaXRlKG1f
ZGlzcGF0Y2hJTy5nZXQoKSwgb2Zmc2V0LCBkaXNwYXRjaERhdGEsIHF1ZXVlLmRpc3BhdGNoUXVl
dWUoKSwgbWFrZUJsb2NrUHRyKFtjaGFubmVsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShib29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCBmaWxlRGF0YSwg
aW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChkb25lLCBkb25lKTsK
ICAgICAgICAgYXV0byBjYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAg
ICAgICBjYWxsYmFjayhlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcAppbmRl
eCAyZmIzZTcxZTIyNTFlNjk2NWE1NThlMjI2MjdiYTA3OGFhYWY3ODAwLi5iNjc0ZGY0MDU0YWE5
ZGE3YjA2ODcxM2RjOTk2MGM0NjllNjQxZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3Vy
bC5jcHAKQEAgLTU1LDIwICs1NSw5IEBAIElPQ2hhbm5lbDo6fklPQ2hhbm5lbCgpCiAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZURlc2NyaXB0b3IpOwogfQogCi1zdGF0aWMgaW5saW5l
IHZvaWQgcnVuVGFza0luUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2ssIFdvcmtRdWV1ZSog
cXVldWUpCit2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChEYXRhJiwgaW50IGVycm9yKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAocXVldWUpIHsKLSAgICAgICAgcXVldWUtPmRpc3Bh
dGNoKFdURk1vdmUodGFzaykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVXNp
bmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQgdG8gdGhlIG1haW4gY29udGV4
dC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZSh0YXNrKSk7Ci19Ci0KLXZv
aWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUq
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIHJ1blRhc2tJblF1ZXVlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG9mZnNldCwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0geworICAgIHF1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9mZnNldCwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBsb25nIGxvbmcgZmlsZVNpemU7CiAg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9maWxlRGVzY3JpcHRvciwgZmls
ZVNpemUpIHx8IGZpbGVTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkg
ewogICAgICAgICAgICAgRGF0YSBkYXRhOwpAQCAtODMsMTcgKzcyLDE3IEBAIHZvaWQgSU9DaGFu
bmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBG
dW5jdGlvbjx2b2lkCiAgICAgICAgIGVyciA9IGVyciA8IDAgPyBlcnIgOiAwOwogICAgICAgICBh
dXRvIGRhdGEgPSBEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRhdGEsIGVycik7Ci0gICAgfSwgcXVldWUpOworICAgIH0pOwogfQogCi12b2lkIElPQ2hh
bm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlKiBx
dWV1ZSwgRnVuY3Rpb248dm9pZChpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtR
dWV1ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoaW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBydW5UYXNrSW5RdWV1ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBvZmZzZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICBxdWV1ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBvZmZzZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9m
aWxlRGVzY3JpcHRvciwgb2Zmc2V0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5u
aW5nKTsKICAgICAgICAgaW50IGVyciA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZURl
c2NyaXB0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpOwogICAgICAgICBlcnIgPSBlcnIgPCAwID8gZXJyIDogMDsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXJyKTsKLSAgICB9LCBxdWV1ZSk7CisgICAgfSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHAKaW5k
ZXggNWNkYTc1ZDc1YzQyOTc4ZTA2MDBlMjJhNGNiNTlhNGU0M2JmMzVkMC4uZmEyNzVhZDc4ZDlm
ZGEwYTNiYTg0MzlhMWE1ZjU3MWM1ZGJlMTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdM
aWIuY3BwCkBAIC02OCwxNyArNjgsNiBAQCBJT0NoYW5uZWw6On5JT0NoYW5uZWwoKQogICAgIFJF
TEVBU0VfQVNTRVJUKCFtX3dhc0RlbGV0ZWQuZXhjaGFuZ2UodHJ1ZSkpOwogfQogCi1zdGF0aWMg
aW5saW5lIHZvaWQgcnVuVGFza0luUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2ssIFdvcmtR
dWV1ZSogcXVldWUpCi17Ci0gICAgaWYgKHF1ZXVlKSB7Ci0gICAgICAgIHF1ZXVlLT5kaXNwYXRj
aChXVEZNb3ZlKHRhc2spKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFVzaW5n
IG51bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRvIHRoZSBtYWluIGNvbnRleHQu
Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwotfQotCiBzdGF0
aWMgdm9pZCBmaWxsRGF0YUZyb21SZWFkQnVmZmVyKEdCeXRlcyogcmVhZEJ1ZmZlciwgc2l6ZV90
IHNpemUsIERhdGEmIGRhdGEpCiB7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsKQEAgLTEx
NCwxOCArMTAzLDE2IEBAIHN0YXRpYyB2b2lkIGlucHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2so
R0lucHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlYWRBc3luY0RhdGE+IGFzeW5jRGF0YShzdGF0aWNfY2FzdDxSZWFkQXN5bmNEYXRhKj4o
dXNlckRhdGEpKTsKICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9m
aW5pc2goc3RyZWFtLCByZXN1bHQsIG51bGxwdHIpOwogICAgIGlmIChieXRlc1JlYWQgPT0gLTEp
IHsKLSAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0YS0+cXVldWUuZ2V0KCk7Ci0g
ICAgICAgIHJ1blRhc2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsK
KyAgICAgICAgYXN5bmNEYXRhLT5xdWV1ZS0+ZGlzcGF0Y2goW2FzeW5jRGF0YSA9IFdURk1vdmUo
YXN5bmNEYXRhKV0gewogICAgICAgICAgICAgYXN5bmNEYXRhLT5jb21wbGV0aW9uSGFuZGxlcihh
c3luY0RhdGEtPmRhdGEsIC0xKTsKLSAgICAgICAgfSwgcXVldWUpOworICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNSZWFkKSB7Ci0gICAgICAgIFdv
cmtRdWV1ZSogcXVldWUgPSBhc3luY0RhdGEtPnF1ZXVlLmdldCgpOwotICAgICAgICBydW5UYXNr
SW5RdWV1ZShbYXN5bmNEYXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CisgICAgICAgIGFzeW5j
RGF0YS0+cXVldWUtPmRpc3BhdGNoKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsK
ICAgICAgICAgICAgIGFzeW5jRGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoYXN5bmNEYXRhLT5kYXRh
LCAwKTsKLSAgICAgICAgfSwgcXVldWUpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTM0LDEwICsxMjEsOSBAQCBzdGF0aWMgdm9pZCBpbnB1dFN0cmVhbVJlYWRS
ZWFkeUNhbGxiYWNrKEdJbnB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlcwogCiAg
ICAgc2l6ZV90IHBlbmRpbmdCeXRlc1RvUmVhZCA9IGFzeW5jRGF0YS0+Ynl0ZXNUb1JlYWQgLSBh
c3luY0RhdGEtPmRhdGEuc2l6ZSgpOwogICAgIGlmICghcGVuZGluZ0J5dGVzVG9SZWFkKSB7Ci0g
ICAgICAgIFdvcmtRdWV1ZSogcXVldWUgPSBhc3luY0RhdGEtPnF1ZXVlLmdldCgpOwotICAgICAg
ICBydW5UYXNrSW5RdWV1ZShbYXN5bmNEYXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CisgICAg
ICAgIGFzeW5jRGF0YS0+cXVldWUtPmRpc3BhdGNoKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5j
RGF0YSldIHsKICAgICAgICAgICAgIGFzeW5jRGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoYXN5bmNE
YXRhLT5kYXRhLCAwKTsKLSAgICAgICAgfSwgcXVldWUpOworICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTQ4LDE0ICsxMzQsMTQgQEAgc3RhdGljIHZvaWQgaW5wdXRT
dHJlYW1SZWFkUmVhZHlDYWxsYmFjayhHSW5wdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0
KiByZXMKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihpbnB1
dFN0cmVhbVJlYWRSZWFkeUNhbGxiYWNrKSwgYXN5bmNEYXRhLnJlbGVhc2UoKSk7CiB9CiAKLXZv
aWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUq
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdv
cmtRdWV1ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBpZiAoIW1faW5wdXRTdHJlYW0pIHsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIHF1ZXVlLmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgRGF0YSBkYXRhOwog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgLTEpOwotICAgICAgICB9LCBxdWV1
ZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzQsMTEgKzE2
MCwxMSBAQCB2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZAogICAgICAgICByZWludGVycHJldF9jYXN0
PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGlucHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2spLCBhc3lu
Y0RhdGEpOwogfQogCi12b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZChEYXRhJiwg
aW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSU9DaGFubmVsOjpyZWFkU3lu
Y0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUmIHF1ZXVlLCBG
dW5jdGlvbjx2b2lkKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgVGhyZWFkOjpjcmVhdGUoIklP
Q2hhbm5lbDo6cmVhZFN5bmMiLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzaXplLCBxdWV1ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CisgICAgVGhyZWFkOjpjcmVhdGUoIklPQ2hhbm5lbDo6cmVhZFN5
bmMiLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaXplLCBxdWV1ZSA9
IG1ha2VSZWYocXVldWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzdGQ6Om1p
bihzaXplLCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplKTsKICAgICAgICAgdWludDhfdCogYnVmZmVy
RGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKGJ1ZmZlclNpemUpKTsKICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+IHJlYWRCdWZmZXIgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdf
d2l0aF9mcmVlX2Z1bmMoYnVmZmVyRGF0YSwgYnVmZmVyU2l6ZSwgZmFzdEZyZWUsIGJ1ZmZlckRh
dGEpKTsKQEAgLTE4OSwxMCArMTc1LDEwIEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkU3luY0luVGhy
ZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGCiAgICAg
ICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IG9mZnNldC4KICAgICAgICAgICAgIGdzc2l6ZSBi
eXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKG1faW5wdXRTdHJlYW0uZ2V0KCksIGNvbnN0
X2Nhc3Q8dm9pZCo+KGdfYnl0ZXNfZ2V0X2RhdGEocmVhZEJ1ZmZlci5nZXQoKSwgbnVsbHB0cikp
LCBieXRlc1RvUmVhZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoYnl0ZXNS
ZWFkID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgcnVuVGFza0luUXVldWUoW3Byb3RlY3RlZFRo
aXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICAgICAgcXVldWUtPmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgICAgICAgICBEYXRh
IGRhdGE7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEsIC0xKTsK
LSAgICAgICAgICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0yMDYsMTAgKzE5MiwxMCBAQCB2
b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6
ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRgogICAgICAgICAgICAgYnl0ZXNUb1JlYWQgPSBzdGQ6Om1p
bihwZW5kaW5nQnl0ZXNUb1JlYWQsIGdfYnl0ZXNfZ2V0X3NpemUocmVhZEJ1ZmZlci5nZXQoKSkp
OwogICAgICAgICB9IHdoaWxlIChwZW5kaW5nQnl0ZXNUb1JlYWQpOwogCi0gICAgICAgIHJ1blRh
c2tJblF1ZXVlKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgYnVmZmVy
ID0gR1JlZlB0cjxHQnl0ZXM+KGRhdGEuYnl0ZXMoKSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIHF1ZXVlLT5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGJ1ZmZlciA9IEdS
ZWZQdHI8R0J5dGVzPihkYXRhLmJ5dGVzKCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgRGF0YSBkYXRhID0g
eyBXVEZNb3ZlKGJ1ZmZlcikgfTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEs
IDApOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgIH0pLT5kZXRhY2goKTsK
IH0KIApAQCAtMjE4LDcgKzIwNCw3IEBAIHN0cnVjdCBXcml0ZUFzeW5jRGF0YSB7CiAKICAgICBS
ZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsOwogICAgIEdSZWZQdHI8R0J5dGVzPiBidWZmZXI7Ci0g
ICAgUmVmUHRyPFdvcmtRdWV1ZT4gcXVldWU7CisgICAgUmVmPFdvcmtRdWV1ZT4gcXVldWU7CiAg
ICAgRnVuY3Rpb248dm9pZChpbnQgZXJyb3IpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKQEAg
LTIyNywxOSArMjEzLDE3IEBAIHN0YXRpYyB2b2lkIG91dHB1dFN0cmVhbVdyaXRlUmVhZHlDYWxs
YmFjayhHT3V0cHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V3JpdGVBc3luY0RhdGE+IGFzeW5jRGF0YShzdGF0aWNfY2FzdDxXcml0ZUFzeW5jRGF0
YSo+KHVzZXJEYXRhKSk7CiAgICAgZ3NzaXplIGJ5dGVzV3JpdHRlbiA9IGdfb3V0cHV0X3N0cmVh
bV93cml0ZV9maW5pc2goc3RyZWFtLCByZXN1bHQsIG51bGxwdHIpOwogICAgIGlmIChieXRlc1dy
aXR0ZW4gPT0gLTEpIHsKLSAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0YS0+cXVl
dWUuZ2V0KCk7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFz
eW5jRGF0YSldIHsKKyAgICAgICAgYXN5bmNEYXRhLT5xdWV1ZS0+ZGlzcGF0Y2goW2FzeW5jRGF0
YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0gewogICAgICAgICAgICAgYXN5bmNEYXRhLT5jb21wbGV0
aW9uSGFuZGxlcigtMSk7Ci0gICAgICAgIH0sIHF1ZXVlKTsKKyAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBnc3NpemUgcGVuZGluZ0J5dGVzVG9Xcml0ZSA9IGdfYnl0
ZXNfZ2V0X3NpemUoYXN5bmNEYXRhLT5idWZmZXIuZ2V0KCkpIC0gYnl0ZXNXcml0dGVuOwogICAg
IGlmICghcGVuZGluZ0J5dGVzVG9Xcml0ZSkgewotICAgICAgICBXb3JrUXVldWUqIHF1ZXVlID0g
YXN5bmNEYXRhLT5xdWV1ZS5nZXQoKTsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW2FzeW5jRGF0
YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0geworICAgICAgICBhc3luY0RhdGEtPnF1ZXVlLT5kaXNw
YXRjaChbYXN5bmNEYXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CiAgICAgICAgICAgICBhc3lu
Y0RhdGEtPmNvbXBsZXRpb25IYW5kbGVyKDApOwotICAgICAgICB9LCBxdWV1ZSk7CisgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNTAsMjEgKzIzNCwyMSBAQCBzdGF0
aWMgdm9pZCBvdXRwdXRTdHJlYW1Xcml0ZVJlYWR5Q2FsbGJhY2soR091dHB1dFN0cmVhbSogc3Ry
ZWFtLCBHQXN5bmNSZXN1bHQqCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlD
YWxsYmFjaz4ob3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNhbGxiYWNrKSwgYXN5bmNEYXRhLnJlbGVh
c2UoKSk7CiB9CiAKLXZvaWQgSU9DaGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBE
YXRhJiBkYXRhLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIElPQ2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwg
Y29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChpbnQgZXJy
b3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0cjxJT0NoYW5uZWw+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgaWYgKCFtX291dHB1dFN0cmVhbSAmJiAhbV9pb1N0cmVhbSkg
ewotICAgICAgICBydW5UYXNrSW5RdWV1ZShbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IHsKKyAgICAgICAgcXVldWUuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigtMSk7Ci0gICAgICAgIH0sIHF1ZXVl
KTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBHT3V0cHV0U3Ry
ZWFtKiBzdHJlYW0gPSBtX291dHB1dFN0cmVhbSA/IG1fb3V0cHV0U3RyZWFtLmdldCgpIDogZ19p
b19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0obV9pb1N0cmVhbS5nZXQoKSkp
OwogICAgIGlmICghc3RyZWFtKSB7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBxdWV1ZS5kaXNwYXRjaChbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKC0x
KTsKLSAgICAgICAgfSwgcXVldWUpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZjAzYjBmZjVmNTkxZTlkNGVkYjdkNGNkYjM4
MTI4ZGIzZDg4NmI3ZS4uZWRkYzBiZTI5ZTBlMmM2ZDIwMjVhOTZiMjVlYzFlNTZjNDhhZjhkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBTdG9yYWdlOjpk
aXNwYXRjaFJlYWRPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFJlYWRPcGVyYXRpb24+IHJlYWRP
cGVyYXRpb24KICAgICAgICAgcmVhZE9wZXJhdGlvbi50aW1pbmdzLnJlY29yZElPU3RhcnRUaW1l
ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFu
bmVsOjpvcGVuKHJlY29yZFBhdGgsIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7Ci0gICAgICAgIGNo
YW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgJmlvUXVl
dWUoKSwgW3RoaXMsICZyZWFkT3BlcmF0aW9uXShjb25zdCBEYXRhJiBmaWxlRGF0YSwgaW50IGVy
cm9yKSB7CisgICAgICAgIGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSwgaW9RdWV1ZSgpLCBbdGhpcywgJnJlYWRPcGVyYXRpb25dKGNvbnN0IERhdGEm
IGZpbGVEYXRhLCBpbnQgZXJyb3IpIHsKICAgICAgICAgICAgIHJlYWRPcGVyYXRpb24udGltaW5n
cy5yZWNvcmRJT0VuZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgICAgIGlm
ICghZXJyb3IpCiAgICAgICAgICAgICAgICAgcmVhZFJlY29yZChyZWFkT3BlcmF0aW9uLCBmaWxl
RGF0YSk7CkBAIC04NzcsNyArODc3LDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3Bl
cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4gd3JpdGVPcGVyYXQKIAogICAg
ICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4ocmVjb3JkUGF0aCwgSU9DaGFubmVs
OjpUeXBlOjpDcmVhdGUpOwogICAgICAgICBzaXplX3QgcmVjb3JkU2l6ZSA9IHJlY29yZERhdGEu
c2l6ZSgpOwotICAgICAgICBjaGFubmVsLT53cml0ZSgwLCByZWNvcmREYXRhLCBudWxscHRyLCBb
dGhpcywgJndyaXRlT3BlcmF0aW9uLCByZWNvcmRTaXplXShpbnQgZXJyb3IpIHsKKyAgICAgICAg
Y2hhbm5lbC0+d3JpdGUoMCwgcmVjb3JkRGF0YSwgV29ya1F1ZXVlOjptYWluKCksIFt0aGlzLCAm
d3JpdGVPcGVyYXRpb24sIHJlY29yZFNpemVdKGludCBlcnJvcikgewogICAgICAgICAgICAgLy8g
T24gZXJyb3IgdGhlIGVudHJ5IHN0aWxsIHN0YXlzIGluIHRoZSBjb250ZW50cyBmaWx0ZXIgdW50
aWwgbmV4dCBzeW5jaHJvbml6YXRpb24uCiAgICAgICAgICAgICBtX2FwcHJveGltYXRlUmVjb3Jk
c1NpemUgKz0gcmVjb3JkU2l6ZTsKICAgICAgICAgICAgIGZpbmlzaFdyaXRlT3BlcmF0aW9uKHdy
aXRlT3BlcmF0aW9uLCBlcnJvcik7CkBAIC05ODYsNyArOTg2LDcgQEAgdm9pZCBTdG9yYWdlOjp0
cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdz
LCBUcmF2ZXIKICAgICAgICAgICAgICsrdHJhdmVyc2VPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAK
ICAgICAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihyZWNvcmRQYXRoLCBJ
T0NoYW5uZWw6OlR5cGU6OlJlYWQpOwotICAgICAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBudWxscHRyLCBbdGhpcywgJnRyYXZlcnNl
T3BlcmF0aW9uLCB3b3J0aCwgYm9keVNoYXJlQ291bnRdKERhdGEmIGZpbGVEYXRhLCBpbnQpIHsK
KyAgICAgICAgICAgIGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSwgV29ya1F1ZXVlOjptYWluKCksIFt0aGlzLCAmdHJhdmVyc2VPcGVyYXRpb24sIHdv
cnRoLCBib2R5U2hhcmVDb3VudF0oRGF0YSYgZmlsZURhdGEsIGludCkgewogICAgICAgICAgICAg
ICAgIFJlY29yZE1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICAgICAgICAgIERhdGEgaGVhZGVy
RGF0YTsKICAgICAgICAgICAgICAgICBpZiAoZGVjb2RlUmVjb3JkSGVhZGVyKGZpbGVEYXRhLCBt
ZXRhRGF0YSwgaGVhZGVyRGF0YSwgbV9zYWx0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW0KaW5kZXggMjE3MDU5NWQyZjE2
MmNmZjU1NGZjY2UzMmVhNzI4NWNiZTc1MWFmOS4uMTgwMDM0ZDc5OWJiN2ExYmFjZTgxOGQxZTkx
ZWViNWZlMmY4ZjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
S2l0MkluaXRpYWxpemVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCkBAIC0zMiw3ICszMiw3IEBACiAjaW1wb3J0IDxtdXRl
eD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5o
PgotI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRT
eXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBJbml0aWFsaXplV2ViS2l0
MigpCiAgICAgICAgIGlmIChbTlNUaHJlYWQgaXNNYWluVGhyZWFkXSB8fCBsaW5rZWRPbk9yQWZ0
ZXIoV2ViQ29yZTo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoSW5pdGlhbGl6ZVdlYktpdDJNYWluVGhy
ZWFkQXNzZXJ0aW9uKSkKICAgICAgICAgICAgIHJ1bkluaXRpYWxpemF0aW9uQ29kZSgpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBkaXNwYXRjaF9zeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgbnVsbHB0ciwgcnVuSW5pdGlhbGl6YXRpb25Db2RlKTsKKyAgICAgICAgICAgIFdv
cmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhbXSB7IHJ1bkluaXRpYWxpemF0aW9uQ29kZSgp
OyB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VNYWluLm1tCmluZGV4IDc4ZWFmZjQ1MjA0ODdjYzNkY2UzMDVlMDU0NDFiMTZjNzc4
MTc0NTAuLmIwMWQ1NzI0NmI3NmVlMDljNGRmMmJjMTY0MTc5MzIwNmQ4ZjQ1NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTExNyw3
ICsxMTcsNyBAQCBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jb25uZWN0
aW9uX3QgcGVlcikKICAgICAgICAgICAgICAgICBpZiAoZmQgIT0gLTEpCiAgICAgICAgICAgICAg
ICAgICAgIGR1cDIoZmQsIFNUREVSUl9GSUxFTk8pOwogCi0gICAgICAgICAgICAgICAgZGlzcGF0
Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgICAgIFdv
cmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhbJl0gewogICAgICAgICAgICAgICAgICAgICBp
bml0aWFsaXplckZ1bmN0aW9uUHRyKHBlZXIsIGV2ZW50LCBwcmlvcml0eUJvb3N0TWVzc2FnZS5n
ZXQoKS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgc2V0QXBwbGVMYW5ndWFnZXNQcmVm
ZXJlbmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCAwNTI1NzBlYTVm
OTRkNTBiYTM4OGY0YzZjM2NmMzM5ZGRkNDhjZTk5Li40OGM3NTEwZDRiNjFhNmQ1MmFiZmU2OWNk
MGJjZjM3ZDFhYzliNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTEx
MCw5ICsxMTAsOSBAQCArICh2b2lkKXJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6KE5T
U3RyaW5nICopc2NoZW1lCiAgICAgICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVy
R2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKHNjaGVtZSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgY2Fubm90IGJlIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaCBiZWNhdXNlIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIG1haW4gcnVubG9vcCBpcyBpbml0
aWFsaXplZC4gIFNlZSByZGFyOi8vcHJvYmxlbS83MzYxNTk5OQotICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3NjaGVtZSA9IHJl
dGFpblB0cihzY2hlbWUpXSB7CisgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtz
Y2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0gewogICAgICAgICAgICAgV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFu
ZGxlcnMoc2NoZW1lLmdldCgpKTsKLSAgICAgICAgfSkuZ2V0KCkpOworICAgICAgICB9KTsKICAg
ICB9CiB9CiAKQEAgLTEyMiw5ICsxMjIsOSBAQCArICh2b2lkKXVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbDooTlNTdHJpbmcgKilzY2hlbWUKICAgICAgICAgV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xI
YW5kbGVycyhzY2hlbWUpOwogICAgIGVsc2UgewogICAgICAgICAvLyBUaGlzIGNhbm5vdCBiZSBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2ggYmVjYXVzZSBpdCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBt
YWluIHJ1bmxvb3AgaXMgaW5pdGlhbGl6ZWQuICBTZWUgcmRhcjovL3Byb2JsZW0vNzM2MTU5OTkK
LSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJs
b2NrUHRyKFtzY2hlbWUgPSByZXRhaW5QdHIoc2NoZW1lKV0geworICAgICAgICBXb3JrUXVldWU6
Om1haW4oKS5kaXNwYXRjaChbc2NoZW1lID0gcmV0YWluUHRyKHNjaGVtZSldIHsKICAgICAgICAg
ICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hh
dmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lLmdldCgpKTsKLSAgICAgICAgfSkuZ2V0
KCkpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggNDBiZjQ5ODY5ZGYyY2JjZGM4
ZWVkYzk3YWVkYmMwNzNkZDJjMjI1YS4uYzlkOTAyZGE4YTU1MzlhZTI1NzQyYzAxZjZkYjE3YzU3
NGU5OGE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2No
ZWR1bGVBY3Rpdml0eVN0YXRlVXBkYXRlKCkKICAgICAgICAgICAgIC8vIFdlIGNhbid0IGNhbGwg
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlIGRpcmVjdGx5IHVuZGVybmVhdGggdGhpcyBjb21t
aXQgaGFuZGxlciwgYmVjYXVzZSBpdCBoYXMgc2lkZS1lZmZlY3RzCiAgICAgICAgICAgICAvLyB0
aGF0IG1heSByZXN1bHQgaW4gb3RoZXIgZnJhbWV3b3JrcyB0cnlpbmcgdG8gaW5zdGFsbCBjb21t
aXQgaGFuZGxlcnMgZm9yIHRoZSBzYW1lIHBoYXNlLCB3aGljaCBpcyBub3QgYWxsb3dlZC4KICAg
ICAgICAgICAgIC8vIFNvLCBkaXNwYXRjaF9hc3luYyBoZXJlOyB3ZSBvbmx5IGNhcmUgdGhhdCB0
aGUgYWN0aXZpdHkgc3RhdGUgY2hhbmdlIGRvZXNuJ3QgYXBwbHkgdW50aWwgYWZ0ZXIgdGhlIGFj
dGl2ZSBjb21taXQgaXMgY29tcGxldGUuCi0gICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1RoaXNdIHsKKyAgICAgICAgICAgIFdvcmtRdWV1
ZTo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpc10gewogICAgICAgICAgICAgICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkpOwogICAgICAgICAgICAgICAg
IGlmICghcHJvdGVjdGVkVGhpcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcubW0KaW5kZXggMjNkOGI1ZDc4ZTli
MmEzNGJjMDdhZDU3MGMxY2UwYmUzZTQ2NTQyOS4uZjBmMWY1NDYxZTliMzRlZDc4ZWM0NDUyZmY4
MzAxYTM3MjQ3ZDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dL
UERGSFVEVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURW
aWV3Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6
KE5TUmVjdClmcmFtZSBwbHVnaW5JZGVudGlmaWVyOihXZWJLaXQ6OlBERlBsdWdpbkkKICAgICBb
c2VsZiBzZXRGcmFtZTpmcmFtZV07CiAKICAgICBXZWFrT2JqQ1B0cjxXS1BERkhVRFZpZXc+IHdl
YWtTZWxmID0gc2VsZjsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENI
X1RJTUVfTk9XLCAoaW50NjRfdCkoaW5pdGlhbEhpZGVUaW1lSW50ZXJ2YWwgKiBOU0VDX1BFUl9T
RUMpKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBXb3JrUXVldWU6Om1haW4o
KS5kaXNwYXRjaEFmdGVyKFNlY29uZHMgeyBpbml0aWFsSGlkZVRpbWVJbnRlcnZhbCB9LCBbd2Vh
a1NlbGZdIHsKICAgICAgICAgW3dlYWtTZWxmIF9oaWRlVGltZXJGaXJlZF07CiAgICAgfSk7CiAg
ICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDdlYzc4ZWM1MDMzN2NjMzIxNTZk
OTY5MzE1YjcyNmU3ZGY4ZGZiMjIuLjk1OGI4NGRlOTdlYzYwOGMxY2ZkODNjZjA1NTQ3OThiMmRh
OTY1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zMDUsMTQgKzMwNSwxNCBAQCBzdGF0aWMgUHJv
Y2Vzc0FjY2Vzc1R5cGUgY29tcHV0ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YUZldGNoKE9w
dGlvblNldDxXZWJzaQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVj
b3JkPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgZmV0Y2hEYXRhQW5kQXBwbHkoZGF0
YVR5cGVzLCBmZXRjaE9wdGlvbnMsIG51bGxwdHIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBmZXRjaERhdGFBbmRBcHBseShkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgV29ya1F1
ZXVlOjptYWluKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlv
bnMsIFJlZlB0cjxXb3JrUXVldWU+JiYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNp
dGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0
YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSkK
IHsKICAgICBjbGFzcyBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpN
YWluUnVuTG9vcD4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IGNyZWF0ZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zLCBSZWZQdHI8V29ya1F1ZXVlPiYmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxX
ZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5LCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUp
CisgICAgICAgIHN0YXRpYyBSZWY8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSwg
V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoZmV0Y2hPcHRpb25zLCBXVEZNb3Zl
KHF1ZXVlKSwgV1RGTW92ZShhcHBseSksIGRhdGFTdG9yZSkpOwogICAgICAgICB9CkBAIC0zMjQs
MTYgKzMyNCwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICAgICAgVmVjdG9y
PFdlYnNpdGVEYXRhUmVjb3JkPiByZWNvcmRzOwogICAgICAgICAgICAgcmVjb3Jkcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fd2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fd2Vic2l0ZURhdGFSZWNvcmRzLnZhbHVlcygpKQotICAg
ICAgICAgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKG1fcXVldWUgPyBjcm9zc1RocmVh
ZENvcHkocmVjb3JkKSA6IFdURk1vdmUocmVjb3JkKSk7CisgICAgICAgICAgICAgICAgcmVjb3Jk
cy51bmNoZWNrZWRBcHBlbmQobV9xdWV1ZS5wdHIoKSAhPSAmV29ya1F1ZXVlOjptYWluKCkgPyBj
cm9zc1RocmVhZENvcHkocmVjb3JkKSA6IFdURk1vdmUocmVjb3JkKSk7CiAKLSAgICAgICAgICAg
IGF1dG8gcHJvY2Vzc1JlY29yZHMgPSBbYXBwbHkgPSBXVEZNb3ZlKG1fYXBwbHkpLCByZWNvcmRz
ID0gV1RGTW92ZShyZWNvcmRzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbYXBwbHkgPSBXVEZNb3ZlKG1fYXBwbHkpLCByZWNvcmRzID0gV1RGTW92ZShyZWNv
cmRzKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgYXBwbHkoV1RGTW92ZShyZWNvcmRz
KSk7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBpZiAobV9xdWV1ZSkKLSAgICAgICAg
ICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKHByb2Nlc3NSZWNvcmRzKSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdU
Rk1vdmUocHJvY2Vzc1JlY29yZHMpKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAKICAg
ICAgICAgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+JiBmZXRjaE9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoT3B0aW9uczsgfQpAQCAtNDI2LDcgKzQyMSw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgIH0KIAogcHJpdmF0ZToKLSAgICAgICAg
Q2FsbGJhY2tBZ2dyZWdhdG9yKE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRj
aE9wdGlvbnMsIFJlZlB0cjxXb3JrUXVldWU+JiYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHksIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSkKKyAgICAgICAgQ2FsbGJhY2tBZ2dyZWdhdG9yKE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIFJlZjxXb3JrUXVldWU+JiYgcXVldWUsIEZ1bmN0aW9uPHZv
aWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHksIFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSkKICAgICAgICAgICAgIDogbV9mZXRjaE9wdGlvbnMoZmV0Y2hPcHRpb25zKQog
ICAgICAgICAgICAgLCBtX3F1ZXVlKFdURk1vdmUocXVldWUpKQogICAgICAgICAgICAgLCBtX2Fw
cGx5KFdURk1vdmUoYXBwbHkpKQpAQCAtNDM2LDcgKzQzMSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IH0KIAogICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gbV9m
ZXRjaE9wdGlvbnM7Ci0gICAgICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7CisgICAgICAg
IFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgICAgIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdl
YnNpdGVEYXRhUmVjb3JkPik+IG1fYXBwbHk7CiAKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFdl
YnNpdGVEYXRhUmVjb3JkPiBtX3dlYnNpdGVEYXRhUmVjb3JkczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA0
ODIyMTZmYTQ4MmYwYTUyNTliNDBmM2VmOWUyNGU4NjAxOGYxMDMzLi5mMjczNzhhNjU3ZGMzZWJk
NGRiNzg5NjMxYzkzNTMzZDgzYTNhMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zNTcsNyArMzU3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRlc3REb21haW5zKCkgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIHZvaWQgZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9w
dGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgUmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVu
Y3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSk7CisgICAgdm9p
ZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWY8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lk
KFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CiAgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KaW5kZXggYmUz
NzFkYjM2YjE4ZTA5MGMwMzkzMGEzMjg0YWY2ODgzZDI1OTAzOC4uZGZjZjJiNTBiYWQ5ZTNjNThj
MGY1OTJmODA2ODQ3ODkxOTcxZjcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvV2Vh
a0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KIAogdXNpbmcgV2ViS2l0OjpQ
cm9jZXNzQW5kVUlBc3NlcnRpb247CiAKQEAgLTEzNSwxNSArMTM2LDEwIEBAIC0gKHZvaWQpX3Nj
aGVkdWxlUmVsZWFzZVRhc2sKICAgICAgICAgcmV0dXJuOwogCiAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIFdLUHJvY2Vzc0Fzc2VydGlvbkJhY2tncm91bmRUYXNrTWFu
YWdlcjogX3NjaGVkdWxlUmVsZWFzZVRhc2sgYmVjYXVzZSB0aGUgZXhwaXJhdGlvbiBoYW5kbGVy
IGhhcyBiZWVuIGNhbGxlZCIsIHNlbGYpOwotICAgIF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrID0g
ZGlzcGF0Y2hfYmxvY2tfY3JlYXRlKChkaXNwYXRjaF9ibG9ja19mbGFnc190KTAsIF57CisgICAg
V29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hBZnRlcihyZWxlYXNlQmFja2dyb3VuZFRhc2tBZnRl
ckV4cGlyYXRpb25EZWxheSwgW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
ewogICAgICAgICBfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzayA9IG5pbDsKICAgICAgICAgW3NlbGYg
X3JlbGVhc2VCYWNrZ3JvdW5kVGFza107CiAgICAgfSk7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlz
cGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgcmVsZWFzZUJhY2tncm91bmRUYXNrQWZ0ZXJF
eHBpcmF0aW9uRGVsYXkudmFsdWUoKSAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF9wZW5kaW5nVGFza1JlbGVhc2VUYXNrKTsKLSNpZiAhX19oYXNfZmVhdHVyZShv
YmpjX2FyYykKLSAgICAvLyBkaXNwYXRjaF9hc3luYygpIGRvZXMgYSBCbG9ja19jb3B5KCkgLyBC
bG9ja19yZWxlYXNlKCkgb24gYmVoYWxmIG9mIHRoZSBjYWxsZXIuCi0gICAgQmxvY2tfcmVsZWFz
ZShfcGVuZGluZ1Rhc2tSZWxlYXNlVGFzayk7Ci0jZW5kaWYKIH0KIAogLSAodm9pZClfY2FuY2Vs
UGVuZGluZ1JlbGVhc2VUYXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxYzcxMzllNTYxM2VkZTQ4NmI3
NDU0ODY2ZmEyNjA3OTgwOTJiYTI4Li5lNDY3M2IyNjZlNTYzMTM4N2I3ZTQ5ODk0Y2YyYjM3ZmZh
NTQ1ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTQyMjksOCArNDIyOSw4IEBAIC0gKHZvaWQpcmVx
dWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TCiAgICAgfQogCiAgICAgLy8gR2l2ZSB0aGUgcGFnZSBzb21lIHRpbWUgdG8g
cHJlc2VudCBjdXN0b20gZWRpdGluZyBVSSBiZWZvcmUgYXR0ZW1wdGluZyB0byBkZXRlY3QgYW5k
IGV2YWRlIGl0LgotICAgIGF1dG8gZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciA9ICgwLjI1
X3MpLm5hbm9zZWNvbmRzKCk7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQ
QVRDSF9USU1FX05PVywgZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciksIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKSwgd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKV0gKCkgbXV0
YWJsZSB7CisgICAgYXV0byBkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyID0gMC4yNV9zOwor
ICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZGVsYXlCZWZvcmVTaG93aW5nQ2Fs
bG91dEJhciwgW2NvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCB3
ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrU2VsZikgewogICAgICAgICAgICAgY29tcGxldGlvbihAWyBdKTsK
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCmluZGV4IDlhOThmZmMwZDM1NjM1OGVhNzBhMTkwNmFlOTljY2M0NTU1
YzYyMjguLmJkYzU0YjlkZTc4Y2JmYjZiOGI4NTMzZjJmZDY2MDkyMDU2ZmUxNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTUwNSw3
ICsxNTA1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxPcGVuQXBwTGluaygpCiAgICAgLy8g
V2UgY2hvc2UgMjUgc2Vjb25kcyBiZWNhdXNlIHRoZSBzeXN0ZW0gb25seSBnaXZlcyB1cyAzMCBz
ZWNvbmRzIGFuZCB3ZSBkb24ndCB3YW50IHRvIGdldCB0b28gY2xvc2UgdG8gdGhhdCBsaW1pdAog
ICAgIC8vIHRvIGF2b2lkIGFzc2VydGlvbiBpbnZhbGlkYXRpb24gKG9yIGV2ZW4gdGVybWluYXRp
b24pLgogICAgIG1fb3BlbmluZ0FwcExpbmtBY3Rpdml0eSA9IHByb2Nlc3MoKS50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk9wZW5pbmcgQXBwTGluayJfcykubW92ZVRvVW5pcXVlUHRy
KCk7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
MjUgKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaEFm
dGVyKDI1X3MsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewogICAgICAgICBpZiAo
d2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9vcGVuaW5nQXBwTGlua0FjdGl2aXR5
ID0gbnVsbHB0cjsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
U2VydmljZXNDb250cm9sbGVyLm1tCmluZGV4IGVhNWMzMjM5MmQ3MWNmM2Q3MmRkZTQ1MmRjNGNi
MjY4ODYzOWJkYTYuLjc5OWIwYTAyYjZhNDcxNDM0NjZlNWMwMzgyYTgyZWQ2MGRiNGU0NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5t
bQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU2VydmljZXNDb250cm9sbGVyOjpyZWZyZXNoRXhp
c3RpbmdTZXJ2aWNlcyhib29sIHJlZnJlc2hJbW1lZGlhdGVseSkKICAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+PiBhdHRyaWJ1dGVkU3Ry
aW5nV2l0aFJpY2hDb250ZW50OwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgYXR0cmli
dXRlZFN0cmluZ1dpdGhSaWNoQ29udGVudE9uY2VGbGFnOwogICAgICAgICBzdGQ6OmNhbGxfb25j
ZShhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50T25jZUZsYWcsIFsmXSB7Ci0gICAgICAg
ICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFsmXSB7CisgICAg
ICAgICAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaFN5bmMoWyZdIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10g
aW5pdF0pOwogICAgICAgICAgICAgICAgIGF1dG8gY2VsbCA9IGFkb3B0TlMoW1tOU1RleHRBdHRh
Y2htZW50Q2VsbCBhbGxvY10gaW5pdEltYWdlQ2VsbDppbWFnZV0pOwogICAgICAgICAgICAgICAg
IFthdHRhY2htZW50IHNldEF0dGFjaG1lbnRDZWxsOmNlbGwuZ2V0KCldOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KaW5kZXggMmZjYjAwYWRiMjRhY2I2NWRj
ZjM3OWIxYWZmZDI3Zjc5NDdkOTU3MS4uNmU2YzlkNjk2ZGE2NmNkYWM5YTc1OWUxOGJjZDQ5MTZl
MDRlZmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJEb3du
bG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1t
CkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TVVJMRG93bmxvYWRT
UEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4v
ZHlsZFNQSS5oPgogCiBzdGF0aWMgYm9vbCBzaG91bGRDYWxsT25OZXR3b3JrVGhyZWFkKCkKQEAg
LTY1LDggKzY2LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxPbkRlbGVnYXRlVGhyZWFkQW5kV2FpdChD
YWxsYWJsZSYmIHdvcmspCiB7CiAgICAgaWYgKHNob3VsZENhbGxPbk5ldHdvcmtUaHJlYWQoKSB8
fCBpc01haW5UaHJlYWQoKSkKICAgICAgICAgd29yaygpOwotICAgIGVsc2UKLSAgICAgICAgZGlz
cGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCB3b3JrKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hTeW5jKFt3b3JrID0gV1RGTW92ZSh3
b3JrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHdvcmsoKTsKKyAgICAgICAgfSk7CisgICAg
fQogfQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ODM2YTc5ODA5ZDIxYTU4NGQxZmIyZTQ3NGQx
ZjkyMjhkMzk4Y2ZlLi4wMzVhYjIyN2FiZDI3YmUwMzk4YmIxODYyNDI1ZjkzNzNkNTQxOTRiIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjkgQEAKKzIwMjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVh
ZCdzIHdvcmsgcXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEludHJvZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhyZWFk
J3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxvd3MgdXMgdG8gcG9ydCBzb21lIG1vcmUgY29kZSBmcm9t
CisgICAgICAgIGRpc3BhdGNoX3F1ZXVlIHRvIFdvcmtRdWV1ZS4gSXQgYWxzbyBzaW1wbGlmaWVz
IHNvbWUgY29kZSB0aGF0IGhhcyB0byBkZWFsIHRoYXQgc29tZXRpbWVzIG5lZWRzIHRvIHJ1biBv
bgorICAgICAgICB0aGUgbWFpbiB0aHJlYWQgYW5kIG90aGVyIHRpbWVzIG9uIGEgYmFja2dyb3Vu
ZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xlIFdvcmtRdWV1ZSB0eXBlIHRvIHJlcHJlc2VudCBib3Ro
IHRoZQorICAgICAgICBtYWluIHRocmVhZCBhbmQgYSBiYWNrZ3JvdW5kIHF1ZXVlIG1ha2VzIHdy
aXRpbmcgc3VjaCBjb2RlIG1vcmUgY29udmVuaWVudC4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcklPUzo6ZG9Bc3luY1Rhc2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKC1bRHVtcFJlbmRlclRyZWUgX3dlYlRocmVh
ZEludm9rZWRdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmRvQXN5bmNU
YXNrKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjphY3RpdmF0ZURhdGFM
aXN0U3VnZ2VzdGlvbik6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cmVt
b3ZlVmlld0Zyb21XaW5kb3cpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6
OmFkZFZpZXdUb1dpbmRvdyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6
OmFjdGl2YXRlRGF0YUxpc3RTdWdnZXN0aW9uKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyTWFjOjpjaG9vc2VNZW51QWN0aW9uKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyTWFjOjphY3RpdmF0ZUF0UG9pbnQpOgorCiAyMDIxLTAzLTExICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdGFnZ2VkIHBvaW50ZXJzIGluIG1vcmUg
cGxhY2VzIGluIHRoZSBNZXRhQWxsb2NhdG9yIGNvZGUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCBhMWVmMmVkMDk3OTAxMjE0
N2Y2OWUwOTQ1M2Y2ZWVjZTgwYTNmNGY0Li4wNWI5YjhlMzM3NTk3YjQzNmNjMjMyMGFmMTM0MDJk
ZDg5OGIwZGU3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAKIGV4dGVybiBSZXRhaW5QdHI8RHVtcFJl
bmRlclRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OwogZXh0ZXJuIFJldGFpblB0cjxE
dW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3OwpAQCAtNDksMTkgKzUw
LDE4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpkb0FzeW5jVGFzayhKU1ZhbHVlUmVm
IGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBh
cmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOwogCi0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRy
KFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBX
b3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNr
SUQpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXJJT1M6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsK
ICAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNr
KGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAotICAgIFJlZlB0cjxVSVNj
cmlwdENvbnRyb2xsZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzY2FsZSwgY2FsbGJh
Y2tJRF0gewogICAgICAgICBbZ1dlYlNjcm9sbFZpZXcgem9vbVRvU2NhbGU6c2NhbGUgYW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgICAgICBpZiAoIW1fY29udGV4
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KaW5kZXggYjUxZTFhZWZlMmRmZjZhY2VlYjc2NDNiM2I0MzJmMjFlNDA3
OWJhZS4uZjRlMGI5OGI4NTc5ZDc1NWJkYjllNTA3M2E1YzlkYzg1NjUxZjRhMCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTA1LDYgKzEwNSw3IEBA
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CiAj
aW1wb3J0IDx3dGYvVW5pcXVlQXJyYXkuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KICNp
bXBvcnQgPHd0Zi9jb2NvYS9DcmFzaFJlcG9ydGVyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVj
dG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTEyMzgs
NyArMTIzOSw3IEBAIC0gKHZvaWQpX3dlYlRocmVhZEV2ZW50TG9vcEhhc1J1bgogLSAodm9pZClf
d2ViVGhyZWFkSW52b2tlZAogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0g
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICBXb3Jr
UXVldWU6Om1haW4oKS5kaXNwYXRjaChbc2VsZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpXSB7CiAgICAgICAgIFtzZWxmIF93ZWJUaHJlYWRFdmVudExvb3BIYXNSdW5dOwogICAgIH0p
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJN
YWMubW0KaW5kZXggZTExZmEzMmNlYzZhMDg0YmEwMWQ5N2VjODFiZDY2MjE1MmQzYWE1ZC4uZjI4
MzNhMmIyYzQxNDI3MmY3MDk4NDBkNWQ0ODg0YjYwMThmNmQ3OCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC0zOCw3ICszOCw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXMuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNUZXh0SW5wdXRDb250ZXh0
U1BJLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUu
aD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTUxLDExICs1MSwxMSBAQCB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlck1hYzo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICB1
bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxi
YWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0g
ewogICAgICAgICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
bV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9KS5nZXQoKSk7
CisgICAgfSk7CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpyZXBsYWNlVGV4dEF0
UmFuZ2UoSlNTdHJpbmdSZWYgdGV4dCwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQpAQCAtMTA3
LDExICsxMDcsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2YXRlRGF0YUxp
c3RTdWdnZXN0aW9uKHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlUmUKICAgICBVTlVTRURfUEFSQU0o
aW5kZXgpOwogCiAgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZv
ckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlz
LCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBXb3JrUXVl
dWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwot
ICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6
Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBwcmVmZXJlbmNlUmVmLCBKU1N0cmluZ1Jl
ZiB2YWx1ZVJlZikKQEAgLTEzMCwxMSArMTMwLDExIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
TWFjOjpyZW1vdmVWaWV3RnJvbVdpbmRvdyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogICAgIFt3ZWJWaWV3IHJlbW92ZUZy
b21TdXBlcnZpZXddOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bGxiYWNrSURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9j
b250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFz
a0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFkZFZpZXdUb1dpbmRvdyhKU1ZhbHVlUmVmIGNhbGxi
YWNrKQpAQCAtMTQ0LDExICsxNDQsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFk
ZFZpZXdUb1dpbmRvdyhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIFdlYlZpZXcgKndlYlZpZXcg
PSBbbWFpbkZyYW1lIHdlYlZpZXddOwogICAgIFtbbWFpbldpbmRvdyBjb250ZW50Vmlld10gYWRk
U3Vidmlldzp3ZWJWaWV3XTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gewogICAgICAgICBpZiAo
IW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0LT5hc3lu
Y1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9KS5nZXQoKSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjp0b2dnbGVDYXBzTG9jayhKU1ZhbHVlUmVmIGNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRD
b250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250
cm9sbGVyTWFjLm1tCmluZGV4IGJhYmU5NTdkMTFiMjA0NmQ1ZjM2ZWQ0ZGRjNzFiYmQ3ZDZlNjA2
MWIuLjFmYzM4NWIyMTJhNTM0NTJiNzJiYTBmYmU5YThiNzQxYzM0NThjNTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAg
LTQ1LDYgKzQ1LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsK
IApAQCAtMTUxLDcgKzE1Miw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjphY3RpdmF0
ZURhdGFMaXN0U3VnZ2VzdGlvbih1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZVJlCiAgICAgW3RhYmxl
IHNlbGVjdFJvd0luZGV4ZXM6W05TSW5kZXhTZXQgaW5kZXhTZXRXaXRoSW5kZXg6aW5kZXhdIGJ5
RXh0ZW5kaW5nU2VsZWN0aW9uOk5PXTsKIAogICAgIC8vIFNlbmQgdGhlIGFjdGlvbiBhZnRlciBh
IHNob3J0IGRlbGF5IHRvIHNpbXVsYXRlIG5vcm1hbCB1c2VyIGludGVyYWN0aW9uLgotICAgIGRp
c3BhdGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIChpbnQ2NF90KSgw
LjA1ICogTlNFQ19QRVJfU0VDKSksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIGNhbGxiYWNrSUQsIHRhYmxlXSB7Cisg
ICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hBZnRlcig1MF9tcywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgY2FsbGJhY2tJRCwgdGFibGVdIHsKICAgICAgICAg
aWYgKFt0YWJsZSB3aW5kb3ddKQogICAgICAgICAgICAgW3RhYmxlIHNlbmRBY3Rpb246W3RhYmxl
IGFjdGlvbl0gdG86W3RhYmxlIHRhcmdldF1dOwogCkBAIC0yMTAsMTEgKzIxMSwxMSBAQCB2b2lk
IFVJU2NyaXB0Q29udHJvbGxlck1hYzo6Y2hvb3NlTWVudUFjdGlvbihKU1N0cmluZ1JlZiBqc0Fj
dGlvbiwgSlNWYWx1ZVJlZiBjYQogICAgICAgICBbYWN0aXZlTWVudSBjYW5jZWxUcmFja2luZ107
CiAgICAgfQogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
SURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRl
KGNhbGxiYWNrSUQpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJNYWM6OmJlZ2luQmFja1N3aXBlKEpTVmFsdWVSZWYgY2FsbGJhY2spCkBAIC0y
ODcsMTEgKzI4OCwxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6YWN0aXZhdGVBdFBv
aW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIGV2ZW50U2VuZGVy
LT5tb3VzZURvd24oMCwgMCk7CiAgICAgZXZlbnRTZW5kZXItPm1vdXNlVXAoMCwgMCk7CiAKLSAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIo
W3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFdv
cmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7
Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1h
Yzo6Y29weVRleHQoSlNTdHJpbmdSZWYgdGV4dCkK
</data>
<flag name="commit-queue"
          id="442218"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422972</attachid>
            <date>2021-03-11 14:27:14 -0800</date>
            <delta_ts>2021-03-11 16:25:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223087-20210311142713.patch</filename>
            <type>text/plain</type>
            <size>57575</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk3M2Y1YjdkOTVkNGVhNjI0ZjEyZWZj
YjAxMDk0Mjk2ZjMzZWI2NmUuLjNiNWY1ZGRiNTRjZjRlM2M0MmNjODE1NzRhZDE5MDAyMzUwYjQ5
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0
IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVldWU6Om1haW4oKSB0byBnZXQg
dGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxvd3MgdXMgdG8gcG9ydCBzb21l
IG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVlIHRvIFdvcmtRdWV1ZS4gSXQg
YWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBkZWFsIHRoYXQgc29tZXRpbWVz
IG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJlYWQgYW5kIG90aGVyIHRpbWVz
IG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xlIFdvcmtRdWV1ZSB0eXBlIHRv
IHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVhZCBhbmQgYSBiYWNrZ3JvdW5k
IHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29udmVuaWVudC4KKworICAgICAg
ICAqIHd0Zi9Xb3JrUXVldWUuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6Om1haW4pOgor
ICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvY29jb2EvV29ya1F1ZXVl
Q29jb2EuY3BwOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3JrUXVl
dWUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OldvcmtRdWV1ZSk6CisgICAgICAgICogd3Rm
L2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OmNvbnN0
cnVjdE1haW5Xb3JrUXVldWUpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrUXVldWUpOgorCiAy
MDIxLTAzLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ug
dGFnZ2VkIHBvaW50ZXJzIGluIG1vcmUgcGxhY2VzIGluIHRoZSBNZXRhQWxsb2NhdG9yIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMjdlZTFlNGY0MjUyOTQ4MTI2OTg2MzNkNjY2YTkzMDU1NTY0YTg0Ny4u
MDI2YjM4ZGVhYTY1YmIzOTAwMjU4NDI1NzkwZjIxN2FkZGU2NTZlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6On5WaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgor
ICAgICAgICAoV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKToKKwogMjAyMS0wMy0xMSAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVmlkZW8gY29udHJvbHMgc3Rh
eSBvbiBzY3JlZW4gaW5kZWZpbml0ZWx5IGFmdGVyIGludGVyYWN0aW5nIHdpdGggdGltZSBzY3J1
YmJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3ZDU5NGFjZTNjMjk3MjkyMDYwNDJmNGRlMTdhYmNlZjhkOWM0MGIx
Li41OGFiNjBiYWMyYjhjZGViNjQyNmE5M2YwOTgyYjQ5NDgxZjA4MjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYxIEBACisyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0
aHJlYWQncyB3b3JrIHF1ZXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRo
cmVhZCdzIHdvcmsgcXVldWUuIFRoaXMgYWxsb3dzIHVzIHRvIHBvcnQgc29tZSBtb3JlIGNvZGUg
ZnJvbQorICAgICAgICBkaXNwYXRjaF9xdWV1ZSB0byBXb3JrUXVldWUuIEl0IGFsc28gc2ltcGxp
ZmllcyBzb21lIGNvZGUgdGhhdCBoYXMgdG8gZGVhbCB0aGF0IHNvbWV0aW1lcyBuZWVkcyB0byBy
dW4gb24KKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGFuZCBvdGhlciB0aW1lcyBvbiBhIGJhY2tn
cm91bmQgcXVldWUuIEhhdmluZyBhIHNpbmdsZSBXb3JrUXVldWUgdHlwZSB0byByZXByZXNlbnQg
Ym90aCB0aGUKKyAgICAgICAgbWFpbiB0aHJlYWQgYW5kIGEgYmFja2dyb3VuZCBxdWV1ZSBtYWtl
cyB3cml0aW5nIHN1Y2ggY29kZSBtb3JlIGNvbnZlbmllbnQuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkVuZ2luZTo6d3JpdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OnJlYWRGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6d3JpdGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6aW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6Om91dHB1dFN0cmVhbVdyaXRlUmVhZHlDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjp3cml0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tOgorICAgICAgICAo
V2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKCtbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6XSk6
CisgICAgICAgICgrW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciB1bnJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2w6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0
aXZpdHlTdGF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcu
bW06CisgICAgICAgICgtW1dLUERGSFVEVmlldyBpbml0V2l0aEZyYW1lOnBsdWdpbklkZW50aWZp
ZXI6cGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1b
V0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyIF9zY2hlZHVsZVJlbGVhc2VU
YXNrXSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVj
dGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxPcGVuQXBwTGluayk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VzQ29udHJvbGxlcjo6cmVmcmVzaEV4
aXN0aW5nU2VydmljZXMpOgorCiAyMDIxLTAzLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBzb21lIHVzYWdlIG9mIGRpc3BhdGNoX3F1ZXVlIHdp
dGggV29ya1F1ZXVlIG5vdyB0aGF0IGl0IHN1cHBvcnRzIHN5bmMgZGlzcGF0Y2hpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5ODRlOWIyMzJmNDAwN2E0NmNhZjA5NTMwZTY2MTIx
MGY4NTE0ODViLi44OTQyNTk0MmQ2ZGI4ODYzNGUxZTg1OWMxNmU0ZDJlMTUzNzBmZWEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMTEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya1F1
ZXVlOjptYWluKCkgdG8gZ2V0IHRoZSBtYWluIHRocmVhZCdzIHdvcmsgcXVldWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzA4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVl
dWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZS4gVGhpcyBhbGxv
d3MgdXMgdG8gcG9ydCBzb21lIG1vcmUgY29kZSBmcm9tCisgICAgICAgIGRpc3BhdGNoX3F1ZXVl
IHRvIFdvcmtRdWV1ZS4gSXQgYWxzbyBzaW1wbGlmaWVzIHNvbWUgY29kZSB0aGF0IGhhcyB0byBk
ZWFsIHRoYXQgc29tZXRpbWVzIG5lZWRzIHRvIHJ1biBvbgorICAgICAgICB0aGUgbWFpbiB0aHJl
YWQgYW5kIG90aGVyIHRpbWVzIG9uIGEgYmFja2dyb3VuZCBxdWV1ZS4gSGF2aW5nIGEgc2luZ2xl
IFdvcmtRdWV1ZSB0eXBlIHRvIHJlcHJlc2VudCBib3RoIHRoZQorICAgICAgICBtYWluIHRocmVh
ZCBhbmQgYSBiYWNrZ3JvdW5kIHF1ZXVlIG1ha2VzIHdyaXRpbmcgc3VjaCBjb2RlIG1vcmUgY29u
dmVuaWVudC4KKworICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgIChjYWxs
T25EZWxlZ2F0ZVRocmVhZEFuZFdhaXQpOgorCiAyMDIxLTAzLTEwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFJldGFpblB0cjw+IC8gT1NPYmplY3RQdHI8
PiBtb3JlIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKaW5kZXggZDVkZWI5ZmMxMjYyZmQzZTE5
MTJhMDA5M2I3NWMzNjFlYjI5MTUyNy4uZGY3ZDM3YThlYzY0NTUyYWUwMWMyZDU5MGQzNWRlMDJm
NTUxMTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCkBAIC00MCw2ICs0MCwxNiBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAorV29ya1F1ZXVlJiBXb3JrUXVldWU6Om1haW4oKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZWZQdHI8V29ya1F1ZXVlPj4gbWFpbldvcmtRdWV1ZTsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICBtYWluV29ya1F1ZXVlLmdldCgpID0gY29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpOworICAgIH0pOworICAgIHJldHVybiAqbWFpbldvcmtRdWV1ZS5nZXQoKTsKK30KKwogUmVm
PFdvcmtRdWV1ZT4gV29ya1F1ZXVlOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBl
LCBRT1MgcW9zKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShuYW1lLCB0
eXBlLCBxb3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggMjM2NTQzMjBjOWRmY2MwMzc2ZTFlNThiZDBj
NjNmYzlkMGM3MTM0NC4uY2RhMWQxODRhMWEzMTVkYTRjMzk0YjU3YzYwMzZlZGFjOWQ2OTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogICAgIH07CiAgICAgdXNp
bmcgUU9TID0gVGhyZWFkOjpRT1M7CiAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdv
cmtRdWV1ZSYgbWFpbigpOworCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29y
a1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9T
ID0gUU9TOjpEZWZhdWx0KTsKICAgICB+V29ya1F1ZXVlKCkgZmluYWw7CiAKQEAgLTY2LDcgKzY4
LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdvcmtRdWV1
ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOworICAgIFdvcmtRdWV1ZShjb25zdCBjaGFy
KiBuYW1lLCBUeXBlLCBRT1MpOworCisgICAgc3RhdGljIFJlZjxXb3JrUXVldWU+IGNvbnN0cnVj
dE1haW5Xb3JrUXVldWUoKTsKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICBleHBsaWNp
dCBXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4mJik7CisjZWxzZQorICAg
IGV4cGxpY2l0IFdvcmtRdWV1ZShSdW5Mb29wJik7CisjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBwbGF0
Zm9ybUludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtR
dWV1ZUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApp
bmRleCA1ODRmYTVjYjk0N2Y0N2Q1M2M4ZTAyMTY4MWYxZjAwZmExYjVkMTU4Li44MmIzYWNlODM4
OGRhYjlkMmM3MmNiNDYyOGY3ZmQ5Nzk3M2M2YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9Xb3JrUXVldWVDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvV29y
a1F1ZXVlQ29jb2EuY3BwCkBAIC01MCw2ICs1MCwxNiBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2hTeW5jKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBkaXNwYXRjaF9zeW5jKG1f
ZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQo
KSk7CiB9CiAKK1JlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y29uc3RydWN0TWFpbldvcmtRdWV1
ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya1F1ZXVlKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoT1NPYmplY3RQdHI8ZGlz
cGF0Y2hfcXVldWVfdD4mJiBkaXNwYXRjaFF1ZXVlKQorICAgIDogbV9kaXNwYXRjaFF1ZXVlKFdU
Rk1vdmUoZGlzcGF0Y2hRdWV1ZSkpCit7Cit9CisKIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUlu
aXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9zKQogewogICAgIGRp
c3BhdGNoX3F1ZXVlX2F0dHJfdCBhdHRyID0gdHlwZSA9PSBUeXBlOjpDb25jdXJyZW50ID8gRElT
UEFUQ0hfUVVFVUVfQ09OQ1VSUkVOVCA6IERJU1BBVENIX1FVRVVFX1NFUklBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCmluZGV4IDI3MmVjN2Q4NTFmYjAz
NmYwMWU3YjQwMjZkZDg3M2M3NGI2ZDdjMjguLjJkMGM0ZmMyNzIxZGNjZDFjOTdlODIzZjZmNjZl
NjEyMjkyYjMwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVl
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmlj
LmNwcApAQCAtMzIsNiArMzIsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNl
bWFwaG9yZS5oPgogCitSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNvbnN0cnVjdE1haW5Xb3Jr
UXVldWUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtRdWV1ZShSdW5Mb29wOjpt
YWluKCkpKTsKK30KKworV29ya1F1ZXVlOjpXb3JrUXVldWUoUnVuTG9vcCYgcnVuTG9vcCkKKyAg
ICA6IG1fcnVuTG9vcCgmcnVuTG9vcCkKK3sKK30KKwogdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCiB7CiAgICAgQmluYXJ5U2Vt
YXBob3JlIHNlbWFwaG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDA2
ZDUyMTc4ZmNhZTFmMTM2MjkyMmM4ZDI2MjMwNmMzZjJhMTJlNDMuLmZmYTI2M2Q3ZjNjMTI5Mzdk
NmQ1YmRiNmQxMDhiNjFmN2ViNzQ1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5t
bQpAQCAtNDIsOCArNDIsMTAgQEAKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKICNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ29yZUFuaW1hdGlvbi5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+
Ci0jaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvUXVhcnR6Q29yZVNQSS5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgorCisjaW1wb3J0
IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTIzMyw3ICsyMzUsNyBAQCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6flZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0KCkKICAgICAgICAgbV9wbGF5YmFja01vZGVs
ID0gbnVsbHB0cjsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwgPSBudWxscHRyOwogICAgIH0g
ZWxzZQotICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFdU
Rk1vdmUobm90aWZ5Q2xpZW50c01vZGVsV2FzRGVzdHJveWVkKSk7CisgICAgICAgIFdvcmtRdWV1
ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhXVEZNb3ZlKG5vdGlmeUNsaWVudHNNb2RlbFdhc0Rlc3Ry
b3llZCkpOwogfQogCiAjcHJhZ21hIG1hcmsgVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpp
bmRleCBhNjA4OGY3ZjZlODBkYWYxZWY4YTkxZTE3YWIxOTFjYjRmMGY1ZDgyLi4xMDU0YzY0Y2Fm
MTIxZDg4NjY2NDZiMDZiYWY0ODcyMDNmY2JjMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC00NiwxMiArNDYsMTQgQEAKICNp
bXBvcnQgPGxpYmtlcm4vT1NBdG9taWMuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5o
PgogI2ltcG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5n
Lmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2NmL0NGUnVu
TG9vcFNQSS5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9vYmpjU1BJLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0zMDYsOSArMzA4LDcgQEAgdm9pZCBXZWJUaHJlYWRS
dW5Pbk1haW5UaHJlYWQodm9pZCheZGVsZWdhdGVCbG9jaykoKSkKICAgICBKU0M6OkpTTG9jazo6
RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhXZWJDb3JlOjpjb21tb25WTSgpKTsKICAgICBfV2Vi
VGhyZWFkVW5sb2NrKCk7CiAKLSAgICB2b2lkICheZGVsZWdhdGVCbG9ja0NvcHkpKCkgPSBCbG9j
a19jb3B5KGRlbGVnYXRlQmxvY2spOwotICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgZGVsZWdhdGVCbG9ja0NvcHkpOwotICAgIEJsb2NrX3JlbGVhc2UoZGVsZWdh
dGVCbG9ja0NvcHkpOworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoU3luYyhtYWtlQmxv
Y2tQdHIoZGVsZWdhdGVCbG9jaykuZ2V0KCkpOwogCiAgICAgX1dlYlRocmVhZExvY2soKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAppbmRleCA5OWEyMjYyYjg0NGVjZDJiMTI4YjVhYmY3MDJhMGViY2Vl
MjM4OWRjLi5hYjdhYmMyNTc2NWFkNDI4ZjJhMTU3YzYxNzk0ZDIyNTg2MTdiYjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IK
ICAgICAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlQYXRo
KTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4oZmlsZW5hbWUsIElP
Q2hhbm5lbDo6VHlwZTo6Q3JlYXRlLCBXb3JrUXVldWU6OlFPUzo6RGVmYXVsdCk7Ci0gICAgICAg
IGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIG51bGxwdHIsIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCBpZGVudGlmaWVyXShpbnQgZXJyb3IpIG11dGFibGUgeworICAgICAgICBj
aGFubmVsLT53cml0ZSgwLCBkYXRhLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMsIHdlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZpZXJdKGludCBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MDUsNyArNTA1LDcgQEAgdm9p
ZCBFbmdpbmU6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgTmV0d28KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGNoYW5uZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSwgbnVsbHB0ciwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGlkZW50aWZp
ZXJdKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNoYW5u
ZWwtPnJlYWQoMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgV29ya1F1ZXVl
OjptYWluKCksIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBpZGVudGlmaWVy
XShjb25zdCBEYXRhJiBkYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIENhY2hlU3RvcmFnZSwgIkNhY2hlU3RvcmFnZTo6RW5n
aW5lOjpyZWFkRmlsZSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIGVycm9yKTsKIAogICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB0aGUgZGVjb2RpbmcgaW4gdGhlIGJhY2tncm91bmQg
dGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDhmMzFjOTg1NDc3ZjVi
Y2U1YzEzZDBlMGY3YzI1M2QyZjBjMzYxNTAuLmZjZWZiZjcxMjAzNGY3M2Q3NTRiODliMTlhMjQ3
NzE1MWYyNzdjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXUKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
Y2hhbm5lbCA9IElPQ2hhbm5lbDo6b3BlbihmaWxlbmFtZSwgSU9DaGFubmVsOjpUeXBlOjpSZWFk
KTsKLSAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpLCBudWxscHRyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBXb3Jr
UXVldWU6Om1haW4oKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGNvbnN0IERhdGEmIGRhdGEsIGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiQ2FjaGVzOjpy
ZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkgZmFpbGVkIHJlYWRpbmcgY2hhbm5lbCB3aXRoIGVy
cm9yICVkIiwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKaW5kZXggMDUzNWYyOTk5ZDZjYWZh
OTkwYzNkNzcxZWNhMGI3MTVhNWU1ZTNhZC4uMWQxZWFkYTNjMzU5NDBlNjZlNzVhNGVmNGFkNmM4
Yzg2NmM0MTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFVzaW5nIG51bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRv
IHRoZSBtYWluIHF1ZXVlLgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIFdvcmtRdWV1ZTo6
bWFpbigpIGluc3RlYWQuCi0gICAgdm9pZCByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCwgV29y
a1F1ZXVlKiwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYpOwotICAgIHZvaWQg
d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYsIFdvcmtRdWV1ZSosIEZ1bmN0aW9uPHZv
aWQgKGludCBlcnJvcik+JiYpOworICAgIHZvaWQgcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qs
IFdvcmtRdWV1ZSYsIEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiYmKTsKKyAgICB2
b2lkIHdyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmLCBXb3JrUXVldWUmLCBGdW5jdGlv
bjx2b2lkIChpbnQgZXJyb3IpPiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0aDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIElPQ2hhbm5lbChjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUsIE9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPik7
CiAKICNpZiBVU0UoR0xJQikKLSAgICB2b2lkIHJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90LCBXb3JrUXVldWUqLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4m
Jik7CisgICAgdm9pZCByZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCwgV29y
a1F1ZXVlJiwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYpOwogI2VuZGlmCiAK
ICAgICBTdHJpbmcgbV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5kZXgg
OTkzMDM5ZDE1MmEwMjZlODVlZGZiZWE0Y2IyNmRhNDQyOGMyYzE2Mi4uNWEzZDkyOTRiMTRkOWRm
MWZhNjk1NzJkYWYzYjJmNGM2YzY1ODkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29h
Lm1tCkBAIC05NiwxMiArOTYsMTEgQEAgSU9DaGFubmVsOjp+SU9DaGFubmVsKCkKICAgICBSRUxF
QVNFX0FTU0VSVCghbV93YXNEZWxldGVkLmV4Y2hhbmdlKHRydWUpKTsKIH0KIAotdm9pZCBJT0No
YW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUs
IEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1
ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWwodGhpcyk7CiAgICAgYm9v
bCBkaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIgPSBmYWxzZTsKLSAgICBhdXRvIGRpc3BhdGNoUXVl
dWUgPSBxdWV1ZSA/IHF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkgOiBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpOwotICAgIGRpc3BhdGNoX2lvX3JlYWQobV9kaXNwYXRjaElPLmdldCgpLCBvZmZzZXQs
IHNpemUsIGRpc3BhdGNoUXVldWUsIG1ha2VCbG9ja1B0cihbY2hhbm5lbCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyXShib29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCBmaWxlRGF0YSwgaW50IGVycm9yKSBtdXRh
YmxlIHsKKyAgICBkaXNwYXRjaF9pb19yZWFkKG1fZGlzcGF0Y2hJTy5nZXQoKSwgb2Zmc2V0LCBz
aXplLCBxdWV1ZS5kaXNwYXRjaFF1ZXVlKCksIG1ha2VCbG9ja1B0cihbY2hhbm5lbCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyXShib29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCBmaWxlRGF0YSwgaW50IGVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChkb25lLCBkb25lIHx8ICFkaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBpZiAoZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEyLDEyICsxMTEsMTEgQEAgdm9pZCBJT0NoYW5u
ZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEZ1
bmN0aW9uPHZvaWQKICAgICB9KS5nZXQoKSk7CiB9CiAKLXZvaWQgSU9DaGFubmVsOjp3cml0ZShz
aXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlv
bjx2b2lkIChpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBJT0NoYW5uZWw6
OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSYgcXVldWUs
IEZ1bmN0aW9uPHZvaWQgKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
UmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKICAgICBhdXRvIGRpc3BhdGNoRGF0YSA9
IGRhdGEuZGlzcGF0Y2hEYXRhKCk7Ci0gICAgYXV0byBkaXNwYXRjaFF1ZXVlID0gcXVldWUgPyBx
dWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpIDogZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKTsKLSAgICBk
aXNwYXRjaF9pb193cml0ZShtX2Rpc3BhdGNoSU8uZ2V0KCksIG9mZnNldCwgZGlzcGF0Y2hEYXRh
LCBkaXNwYXRjaFF1ZXVlLCBtYWtlQmxvY2tQdHIoW2NoYW5uZWwsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZG9uZSwgZGlzcGF0Y2hfZGF0YV90
IGZpbGVEYXRhLCBpbnQgZXJyb3IpIG11dGFibGUgeworICAgIGRpc3BhdGNoX2lvX3dyaXRlKG1f
ZGlzcGF0Y2hJTy5nZXQoKSwgb2Zmc2V0LCBkaXNwYXRjaERhdGEsIHF1ZXVlLmRpc3BhdGNoUXVl
dWUoKSwgbWFrZUJsb2NrUHRyKFtjaGFubmVsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShib29sIGRvbmUsIGRpc3BhdGNoX2RhdGFfdCBmaWxlRGF0YSwg
aW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChkb25lLCBkb25lKTsK
ICAgICAgICAgYXV0byBjYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAg
ICAgICBjYWxsYmFjayhlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDdXJsLmNwcAppbmRl
eCAyZmIzZTcxZTIyNTFlNjk2NWE1NThlMjI2MjdiYTA3OGFhYWY3ODAwLi5iNjc0ZGY0MDU0YWE5
ZGE3YjA2ODcxM2RjOTk2MGM0NjllNjQxZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ3Vy
bC5jcHAKQEAgLTU1LDIwICs1NSw5IEBAIElPQ2hhbm5lbDo6fklPQ2hhbm5lbCgpCiAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZURlc2NyaXB0b3IpOwogfQogCi1zdGF0aWMgaW5saW5l
IHZvaWQgcnVuVGFza0luUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2ssIFdvcmtRdWV1ZSog
cXVldWUpCit2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChEYXRhJiwgaW50IGVycm9yKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAocXVldWUpIHsKLSAgICAgICAgcXVldWUtPmRpc3Bh
dGNoKFdURk1vdmUodGFzaykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVXNp
bmcgbnVsbHB0ciBhcyBxdWV1ZSBzdWJtaXRzIHRoZSByZXN1bHQgdG8gdGhlIG1haW4gY29udGV4
dC4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZSh0YXNrKSk7Ci19Ci0KLXZv
aWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUq
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIHJ1blRhc2tJblF1ZXVlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG9mZnNldCwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0geworICAgIHF1ZXVlLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9mZnNldCwgc2l6ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBsb25nIGxvbmcgZmlsZVNpemU7CiAg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9maWxlRGVzY3JpcHRvciwgZmls
ZVNpemUpIHx8IGZpbGVTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkg
ewogICAgICAgICAgICAgRGF0YSBkYXRhOwpAQCAtODMsMTcgKzcyLDE3IEBAIHZvaWQgSU9DaGFu
bmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBG
dW5jdGlvbjx2b2lkCiAgICAgICAgIGVyciA9IGVyciA8IDAgPyBlcnIgOiAwOwogICAgICAgICBh
dXRvIGRhdGEgPSBEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRhdGEsIGVycik7Ci0gICAgfSwgcXVldWUpOworICAgIH0pOwogfQogCi12b2lkIElPQ2hh
bm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlKiBx
dWV1ZSwgRnVuY3Rpb248dm9pZChpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtR
dWV1ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoaW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBydW5UYXNrSW5RdWV1ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBvZmZzZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIHsKKyAgICBxdWV1ZS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBvZmZzZXQsIGRhdGEsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9m
aWxlRGVzY3JpcHRvciwgb2Zmc2V0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6QmVnaW5u
aW5nKTsKICAgICAgICAgaW50IGVyciA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZURl
c2NyaXB0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0
YS5zaXplKCkpOwogICAgICAgICBlcnIgPSBlcnIgPCAwID8gZXJyIDogMDsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXJyKTsKLSAgICB9LCBxdWV1ZSk7CisgICAgfSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIE5ldHdvcmtDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHAKaW5k
ZXggNWNkYTc1ZDc1YzQyOTc4ZTA2MDBlMjJhNGNiNTlhNGU0M2JmMzVkMC4uZjU0NmIzODhhOGU3
YmQwYzk2MjNiNWQxZWE3YzJmODI4OWJkOTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdM
aWIuY3BwCkBAIC02OCwxNyArNjgsNiBAQCBJT0NoYW5uZWw6On5JT0NoYW5uZWwoKQogICAgIFJF
TEVBU0VfQVNTRVJUKCFtX3dhc0RlbGV0ZWQuZXhjaGFuZ2UodHJ1ZSkpOwogfQogCi1zdGF0aWMg
aW5saW5lIHZvaWQgcnVuVGFza0luUXVldWUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2ssIFdvcmtR
dWV1ZSogcXVldWUpCi17Ci0gICAgaWYgKHF1ZXVlKSB7Ci0gICAgICAgIHF1ZXVlLT5kaXNwYXRj
aChXVEZNb3ZlKHRhc2spKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFVzaW5n
IG51bGxwdHIgYXMgcXVldWUgc3VibWl0cyB0aGUgcmVzdWx0IHRvIHRoZSBtYWluIGNvbnRleHQu
Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwotfQotCiBzdGF0
aWMgdm9pZCBmaWxsRGF0YUZyb21SZWFkQnVmZmVyKEdCeXRlcyogcmVhZEJ1ZmZlciwgc2l6ZV90
IHNpemUsIERhdGEmIGRhdGEpCiB7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsKQEAgLTEw
Myw3ICs5Miw3IEBAIHN0cnVjdCBSZWFkQXN5bmNEYXRhIHsKIAogICAgIFJlZlB0cjxJT0NoYW5u
ZWw+IGNoYW5uZWw7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsKLSAgICBSZWZQdHI8V29y
a1F1ZXVlPiBxdWV1ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBxdWV1ZTsKICAgICBzaXplX3QgYnl0
ZXNUb1JlYWQ7CiAgICAgRnVuY3Rpb248dm9pZChEYXRhJiwgaW50IGVycm9yKT4gY29tcGxldGlv
bkhhbmRsZXI7CiAgICAgRGF0YSBkYXRhOwpAQCAtMTE0LDE4ICsxMDMsMTYgQEAgc3RhdGljIHZv
aWQgaW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayhHSW5wdXRTdHJlYW0qIHN0cmVhbSwgR0Fz
eW5jUmVzdWx0KiByZXMKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZEFzeW5jRGF0YT4gYXN5bmNE
YXRhKHN0YXRpY19jYXN0PFJlYWRBc3luY0RhdGEqPih1c2VyRGF0YSkpOwogICAgIGdzc2l6ZSBi
eXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkX2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgbnVs
bHB0cik7CiAgICAgaWYgKGJ5dGVzUmVhZCA9PSAtMSkgewotICAgICAgICBXb3JrUXVldWUqIHF1
ZXVlID0gYXN5bmNEYXRhLT5xdWV1ZS5nZXQoKTsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW2Fz
eW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0geworICAgICAgICBhc3luY0RhdGEtPnF1ZXVl
LT5kaXNwYXRjaChbYXN5bmNEYXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7CiAgICAgICAgICAg
ICBhc3luY0RhdGEtPmNvbXBsZXRpb25IYW5kbGVyKGFzeW5jRGF0YS0+ZGF0YSwgLTEpOwotICAg
ICAgICB9LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKCFieXRlc1JlYWQpIHsKLSAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0
YS0+cXVldWUuZ2V0KCk7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZN
b3ZlKGFzeW5jRGF0YSldIHsKKyAgICAgICAgYXN5bmNEYXRhLT5xdWV1ZS0+ZGlzcGF0Y2goW2Fz
eW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0gewogICAgICAgICAgICAgYXN5bmNEYXRhLT5j
b21wbGV0aW9uSGFuZGxlcihhc3luY0RhdGEtPmRhdGEsIDApOwotICAgICAgICB9LCBxdWV1ZSk7
CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzQsMTAgKzEyMSw5
IEBAIHN0YXRpYyB2b2lkIGlucHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2soR0lucHV0U3RyZWFt
KiBzdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzCiAKICAgICBzaXplX3QgcGVuZGluZ0J5dGVzVG9S
ZWFkID0gYXN5bmNEYXRhLT5ieXRlc1RvUmVhZCAtIGFzeW5jRGF0YS0+ZGF0YS5zaXplKCk7CiAg
ICAgaWYgKCFwZW5kaW5nQnl0ZXNUb1JlYWQpIHsKLSAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSA9
IGFzeW5jRGF0YS0+cXVldWUuZ2V0KCk7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFthc3luY0Rh
dGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsKKyAgICAgICAgYXN5bmNEYXRhLT5xdWV1ZS0+ZGlz
cGF0Y2goW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0gewogICAgICAgICAgICAgYXN5
bmNEYXRhLT5jb21wbGV0aW9uSGFuZGxlcihhc3luY0RhdGEtPmRhdGEsIDApOwotICAgICAgICB9
LCBxdWV1ZSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDgs
MTQgKzEzNCwxNCBAQCBzdGF0aWMgdm9pZCBpbnB1dFN0cmVhbVJlYWRSZWFkeUNhbGxiYWNrKEdJ
bnB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlcwogICAgICAgICByZWludGVycHJl
dF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGlucHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2sp
LCBhc3luY0RhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90
IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0
YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIElPQ2hhbm5lbDo6cmVh
ZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248
dm9pZChEYXRhJiwgaW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQ
dHI8SU9DaGFubmVsPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghbV9pbnB1dFN0cmVh
bSkgewotICAgICAgICBydW5UYXNrSW5RdWV1ZShbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKKyAgICAgICAgcXVldWUuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgICAgICBEYXRhIGRhdGE7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihkYXRhLCAtMSk7Ci0gICAgICAgIH0sIHF1ZXVlKTsKKyAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE3NCwxMSArMTYwLDExIEBAIHZvaWQgSU9DaGFubmVsOjpy
ZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlv
bjx2b2lkCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oaW5w
dXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayksIGFzeW5jRGF0YSk7CiB9CiAKLXZvaWQgSU9DaGFu
bmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVl
dWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IHNpemUsIFdvcmtRdWV1ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBl
cnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBUaHJlYWQ6OmNyZWF0ZSgiSU9DaGFubmVsOjpyZWFkU3luYyIsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNpemUsIHF1ZXVlLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBU
aHJlYWQ6OmNyZWF0ZSgiSU9DaGFubmVsOjpyZWFkU3luYyIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNpemUsIHF1ZXVlID0gbWFrZVJlZihxdWV1ZSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAg
ICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IHN0ZDo6bWluKHNpemUsIGdEZWZhdWx0UmVhZEJ1ZmZl
clNpemUpOwogICAgICAgICB1aW50OF90KiBidWZmZXJEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGZhc3RNYWxsb2MoYnVmZmVyU2l6ZSkpOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gcmVh
ZEJ1ZmZlciA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhidWZmZXJEYXRh
LCBidWZmZXJTaXplLCBmYXN0RnJlZSwgYnVmZmVyRGF0YSkpOwpAQCAtMTg5LDEwICsxNzUsMTAg
QEAgdm9pZCBJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEYKICAgICAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgb2Zmc2V0LgogICAgICAgICAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFt
X3JlYWQobV9pbnB1dFN0cmVhbS5nZXQoKSwgY29uc3RfY2FzdDx2b2lkKj4oZ19ieXRlc19nZXRf
ZGF0YShyZWFkQnVmZmVyLmdldCgpLCBudWxscHRyKSksIGJ5dGVzVG9SZWFkLCBudWxscHRyLCBu
dWxscHRyKTsKICAgICAgICAgICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKLSAgICAgICAgICAg
ICAgICBydW5UYXNrSW5RdWV1ZShbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAg
ICAgICAgICAgICAgICBxdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgICAgICAgICAgICAgIERhdGEgZGF0YTsKICAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgLTEpOwotICAgICAgICAgICAgICAgIH0sIHF1ZXVl
KTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKQEAgLTIwNiwxMCArMTkyLDEwIEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkU3luY0lu
VGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGCiAg
ICAgICAgICAgICBieXRlc1RvUmVhZCA9IHN0ZDo6bWluKHBlbmRpbmdCeXRlc1RvUmVhZCwgZ19i
eXRlc19nZXRfc2l6ZShyZWFkQnVmZmVyLmdldCgpKSk7CiAgICAgICAgIH0gd2hpbGUgKHBlbmRp
bmdCeXRlc1RvUmVhZCk7CiAKLSAgICAgICAgcnVuVGFza0luUXVldWUoW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBidWZmZXIgPSBHUmVmUHRyPEdCeXRlcz4oZGF0YS5i
eXRlcygpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgYnVmZmVyID0gR1JlZlB0cjxHQnl0ZXM+KGRhdGEuYnl0ZXMo
KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBEYXRhIGRhdGEgPSB7IFdURk1vdmUoYnVmZmVyKSB9OwogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgMCk7Ci0gICAgICAgIH0sIHF1ZXVlKTsK
KyAgICAgICAgfSk7CiAgICAgfSktPmRldGFjaCgpOwogfQogCkBAIC0yMTgsNyArMjA0LDcgQEAg
c3RydWN0IFdyaXRlQXN5bmNEYXRhIHsKIAogICAgIFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWw7
CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsKLSAgICBSZWZQdHI8V29ya1F1ZXVlPiBxdWV1
ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBxdWV1ZTsKICAgICBGdW5jdGlvbjx2b2lkKGludCBlcnJv
cik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIApAQCAtMjI3LDE5ICsyMTMsMTcgQEAgc3RhdGlj
IHZvaWQgb3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNhbGxiYWNrKEdPdXRwdXRTdHJlYW0qIHN0cmVh
bSwgR0FzeW5jUmVzdWx0KgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXcml0ZUFzeW5jRGF0YT4gYXN5
bmNEYXRhKHN0YXRpY19jYXN0PFdyaXRlQXN5bmNEYXRhKj4odXNlckRhdGEpKTsKICAgICBnc3Np
emUgYnl0ZXNXcml0dGVuID0gZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2ZpbmlzaChzdHJlYW0sIHJl
c3VsdCwgbnVsbHB0cik7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewotICAgICAgICBX
b3JrUXVldWUqIHF1ZXVlID0gYXN5bmNEYXRhLT5xdWV1ZS5nZXQoKTsKLSAgICAgICAgcnVuVGFz
a0luUXVldWUoW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0geworICAgICAgICBhc3lu
Y0RhdGEtPnF1ZXVlLT5kaXNwYXRjaChbYXN5bmNEYXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7
CiAgICAgICAgICAgICBhc3luY0RhdGEtPmNvbXBsZXRpb25IYW5kbGVyKC0xKTsKLSAgICAgICAg
fSwgcXVldWUpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdz
c2l6ZSBwZW5kaW5nQnl0ZXNUb1dyaXRlID0gZ19ieXRlc19nZXRfc2l6ZShhc3luY0RhdGEtPmJ1
ZmZlci5nZXQoKSkgLSBieXRlc1dyaXR0ZW47CiAgICAgaWYgKCFwZW5kaW5nQnl0ZXNUb1dyaXRl
KSB7Ci0gICAgICAgIFdvcmtRdWV1ZSogcXVldWUgPSBhc3luY0RhdGEtPnF1ZXVlLmdldCgpOwot
ICAgICAgICBydW5UYXNrSW5RdWV1ZShbYXN5bmNEYXRhID0gV1RGTW92ZShhc3luY0RhdGEpXSB7
CisgICAgICAgIGFzeW5jRGF0YS0+cXVldWUtPmRpc3BhdGNoKFthc3luY0RhdGEgPSBXVEZNb3Zl
KGFzeW5jRGF0YSldIHsKICAgICAgICAgICAgIGFzeW5jRGF0YS0+Y29tcGxldGlvbkhhbmRsZXIo
MCk7Ci0gICAgICAgIH0sIHF1ZXVlKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTI1MCwyMSArMjM0LDIxIEBAIHN0YXRpYyB2b2lkIG91dHB1dFN0cmVhbVdyaXRl
UmVhZHlDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihvdXRwdXRTdHJlYW1Xcml0
ZVJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJT0NoYW5u
ZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVl
dWUsIEZ1bmN0aW9uPHZvaWQoaW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
SU9DaGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVl
dWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAo
IW1fb3V0cHV0U3RyZWFtICYmICFtX2lvU3RyZWFtKSB7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVl
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBxdWV1ZS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKC0xKTsKLSAgICAgICAgfSwgcXVldWUpOworICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIEdPdXRwdXRTdHJlYW0qIHN0cmVhbSA9IG1fb3V0cHV0U3Ry
ZWFtID8gbV9vdXRwdXRTdHJlYW0uZ2V0KCkgOiBnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVh
bShHX0lPX1NUUkVBTShtX2lvU3RyZWFtLmdldCgpKSk7CiAgICAgaWYgKCFzdHJlYW0pIHsKLSAg
ICAgICAgcnVuVGFza0luUXVldWUoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7Cisg
ICAgICAgIHF1ZXVlLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoLTEpOwotICAgICAgICB9LCBxdWV1ZSk7Cisg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApp
bmRleCBmMDNiMGZmNWY1OTFlOWQ0ZWRiN2Q0Y2RiMzgxMjhkYjNkODg2YjdlLi5lZGRjMGJlMjll
MGUyYzZkMjAyNWE5NmIyNWVjMWU1NmM0OGFmOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAg
LTczOCw3ICs3MzgsNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoUmVhZE9wZXJhdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8UmVhZE9wZXJhdGlvbj4gcmVhZE9wZXJhdGlvbgogICAgICAgICByZWFkT3Bl
cmF0aW9uLnRpbWluZ3MucmVjb3JkSU9TdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
IAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBJT0NoYW5uZWw6Om9wZW4ocmVjb3JkUGF0aCwgSU9D
aGFubmVsOjpUeXBlOjpSZWFkKTsKLSAgICAgICAgY2hhbm5lbC0+cmVhZCgwLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpLCAmaW9RdWV1ZSgpLCBbdGhpcywgJnJlYWRPcGVyYXRp
b25dKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBpbnQgZXJyb3IpIHsKKyAgICAgICAgY2hhbm5lbC0+
cmVhZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBpb1F1ZXVlKCksIFt0
aGlzLCAmcmVhZE9wZXJhdGlvbl0oY29uc3QgRGF0YSYgZmlsZURhdGEsIGludCBlcnJvcikgewog
ICAgICAgICAgICAgcmVhZE9wZXJhdGlvbi50aW1pbmdzLnJlY29yZElPRW5kVGltZSA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwogICAgICAgICAgICAgaWYgKCFlcnJvcikKICAgICAgICAgICAgICAg
ICByZWFkUmVjb3JkKHJlYWRPcGVyYXRpb24sIGZpbGVEYXRhKTsKQEAgLTg3Nyw3ICs4NzcsNyBA
QCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFdy
aXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogCiAgICAgICAgIGF1dG8gY2hhbm5lbCA9IElPQ2hh
bm5lbDo6b3BlbihyZWNvcmRQYXRoLCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSk7CiAgICAgICAg
IHNpemVfdCByZWNvcmRTaXplID0gcmVjb3JkRGF0YS5zaXplKCk7Ci0gICAgICAgIGNoYW5uZWwt
PndyaXRlKDAsIHJlY29yZERhdGEsIG51bGxwdHIsIFt0aGlzLCAmd3JpdGVPcGVyYXRpb24sIHJl
Y29yZFNpemVdKGludCBlcnJvcikgeworICAgICAgICBjaGFubmVsLT53cml0ZSgwLCByZWNvcmRE
YXRhLCBXb3JrUXVldWU6Om1haW4oKSwgW3RoaXMsICZ3cml0ZU9wZXJhdGlvbiwgcmVjb3JkU2l6
ZV0oaW50IGVycm9yKSB7CiAgICAgICAgICAgICAvLyBPbiBlcnJvciB0aGUgZW50cnkgc3RpbGwg
c3RheXMgaW4gdGhlIGNvbnRlbnRzIGZpbHRlciB1bnRpbCBuZXh0IHN5bmNocm9uaXphdGlvbi4K
ICAgICAgICAgICAgIG1fYXBwcm94aW1hdGVSZWNvcmRzU2l6ZSArPSByZWNvcmRTaXplOwogICAg
ICAgICAgICAgZmluaXNoV3JpdGVPcGVyYXRpb24od3JpdGVPcGVyYXRpb24sIGVycm9yKTsKQEAg
LTk4Niw3ICs5ODYsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgICAgICAgICAgKyt0
cmF2ZXJzZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIAogICAgICAgICAgICAgYXV0byBjaGFubmVs
ID0gSU9DaGFubmVsOjpvcGVuKHJlY29yZFBhdGgsIElPQ2hhbm5lbDo6VHlwZTo6UmVhZCk7Ci0g
ICAgICAgICAgICBjaGFubmVsLT5yZWFkKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCksIG51bGxwdHIsIFt0aGlzLCAmdHJhdmVyc2VPcGVyYXRpb24sIHdvcnRoLCBib2R5U2hh
cmVDb3VudF0oRGF0YSYgZmlsZURhdGEsIGludCkgeworICAgICAgICAgICAgY2hhbm5lbC0+cmVh
ZCgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBXb3JrUXVldWU6Om1haW4o
KSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlvbiwgd29ydGgsIGJvZHlTaGFyZUNvdW50XShEYXRh
JiBmaWxlRGF0YSwgaW50KSB7CiAgICAgICAgICAgICAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURh
dGE7CiAgICAgICAgICAgICAgICAgRGF0YSBoZWFkZXJEYXRhOwogICAgICAgICAgICAgICAgIGlm
IChkZWNvZGVSZWNvcmRIZWFkZXIoZmlsZURhdGEsIG1ldGFEYXRhLCBoZWFkZXJEYXRhLCBtX3Nh
bHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5p
dGlhbGl6ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRp
YWxpemVDb2NvYS5tbQppbmRleCAyMTcwNTk1ZDJmMTYyY2ZmNTU0ZmNjZTMyZWE3Mjg1Y2JlNzUx
YWY5Li4xODAwMzRkNzk5YmI3YTFiYWNlODE4ZDFlOTFlZWI1ZmUyZjhmNTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW0K
QEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgPG11dGV4PgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW1wb3J0IDx3dGYvUnVuTG9vcC5o
PgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFN5c3RlbUludGVyZmFjZS5oPgpAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIEluaXRpYWxpemVXZWJLaXQyKCkKICAgICAgICAgaWYgKFtOU1RocmVh
ZCBpc01haW5UaHJlYWRdIHx8IGxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpG
aXJzdFdpdGhJbml0aWFsaXplV2ViS2l0Mk1haW5UaHJlYWRBc3NlcnRpb24pKQogICAgICAgICAg
ICAgcnVuSW5pdGlhbGl6YXRpb25Db2RlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRp
c3BhdGNoX3N5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBudWxscHRyLCBydW5Jbml0
aWFsaXphdGlvbkNvZGUpOworICAgICAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hT
eW5jKFtdIHsgcnVuSW5pdGlhbGl6YXRpb25Db2RlKCk7IH0pOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQ
Q1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KaW5kZXggNzhl
YWZmNDUyMDQ4N2NjM2RjZTMwNWUwNTQ0MWIxNmM3NzgxNzQ1MC4uYjAxZDU3MjQ2Yjc2ZWUwOWM0
ZGYyYmMxNjQxNzkzMjA2ZDhmNDU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIFhQ
Q1NlcnZpY2VFdmVudEhhbmRsZXIoeHBjX2Nvbm5lY3Rpb25fdCBwZWVyKQogICAgICAgICAgICAg
ICAgIGlmIChmZCAhPSAtMSkKICAgICAgICAgICAgICAgICAgICAgZHVwMihmZCwgU1RERVJSX0ZJ
TEVOTyk7CiAKLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIF57CisgICAgICAgICAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hT
eW5jKFsmXSB7CiAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyRnVuY3Rpb25QdHIocGVl
ciwgZXZlbnQsIHByaW9yaXR5Qm9vc3RNZXNzYWdlLmdldCgpLmdldCgpKTsKIAogICAgICAgICAg
ICAgICAgICAgICBzZXRBcHBsZUxhbmd1YWdlc1ByZWZlcmVuY2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLm1tCmluZGV4IDA1MjU3MGVhNWY5NGQ1MGJhMzg4ZjRjNmMzY2YzMzlkZGQ0
OGNlOTkuLjQ4Yzc1MTBkNGI2MWE2ZDUyYWJmZTY5Y2QwYmNmMzdkMWFjOWI1ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtMTEwLDkgKzExMCw5IEBAICsgKHZvaWQpcmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDooTlNTdHJpbmcgKilzY2hlbWUKICAgICAgICAg
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1
c3RvbVByb3RvY29sSGFuZGxlcnMoc2NoZW1lKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhp
cyBjYW5ub3QgYmUgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoIGJlY2F1c2UgaXQgaXMgY2FsbGVk
IGJlZm9yZSB0aGUgbWFpbiBydW5sb29wIGlzIGluaXRpYWxpemVkLiAgU2VlIHJkYXI6Ly9wcm9i
bGVtLzczNjE1OTk5Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIG1ha2VCbG9ja1B0cihbc2NoZW1lID0gcmV0YWluUHRyKHNjaGVtZSldIHsKKyAgICAg
ICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3NjaGVtZSA9IHJldGFpblB0cihzY2hlbWUp
XSB7CiAgICAgICAgICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlckdsb2JhbFVS
TFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhzY2hlbWUuZ2V0KCkpOwotICAg
ICAgICB9KS5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApAQCAtMTIyLDkgKzEyMiw5
IEBAICsgKHZvaWQpdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOihOU1N0cmluZyAq
KXNjaGVtZQogICAgICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyR2xvYmFs
VVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKHNjaGVtZSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIC8vIFRoaXMgY2Fubm90IGJlIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaCBi
ZWNhdXNlIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIG1haW4gcnVubG9vcCBpcyBpbml0aWFsaXpl
ZC4gIFNlZSByZGFyOi8vcHJvYmxlbS83MzYxNTk5OQotICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3NjaGVtZSA9IHJldGFpblB0
cihzY2hlbWUpXSB7CisgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtzY2hlbWUg
PSByZXRhaW5QdHIoc2NoZW1lKV0gewogICAgICAgICAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6dW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVy
cyhzY2hlbWUuZ2V0KCkpOwotICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbQppbmRleCA0MGJmNDk4NjlkZjJjYmNkYzhlZWRjOTdhZWRiYzA3M2RkMmMyMjVhLi5j
OWQ5MDJkYThhNTUzOWFlMjU3NDJjMDFmNmRiMTdjNTc0ZTk4YTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNTIyLDcg
KzUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUo
KQogICAgICAgICAgICAgLy8gV2UgY2FuJ3QgY2FsbCBkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFu
Z2UgZGlyZWN0bHkgdW5kZXJuZWF0aCB0aGlzIGNvbW1pdCBoYW5kbGVyLCBiZWNhdXNlIGl0IGhh
cyBzaWRlLWVmZmVjdHMKICAgICAgICAgICAgIC8vIHRoYXQgbWF5IHJlc3VsdCBpbiBvdGhlciBm
cmFtZXdvcmtzIHRyeWluZyB0byBpbnN0YWxsIGNvbW1pdCBoYW5kbGVycyBmb3IgdGhlIHNhbWUg
cGhhc2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAgICAgLy8gU28sIGRpc3BhdGNo
X2FzeW5jIGhlcmU7IHdlIG9ubHkgY2FyZSB0aGF0IHRoZSBhY3Rpdml0eSBzdGF0ZSBjaGFuZ2Ug
ZG9lc24ndCBhcHBseSB1bnRpbCBhZnRlciB0aGUgYWN0aXZlIGNvbW1pdCBpcyBjb21wbGV0ZS4K
LSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFt3
ZWFrVGhpc10geworICAgICAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2goW3dlYWtU
aGlzXSB7CiAgICAgICAgICAgICAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3
ZWFrVGhpcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dL
UERGSFVEVmlldy5tbQppbmRleCAyM2Q4YjVkNzhlOWIyYTM0YmMwN2FkNTcwYzFjZTBiZTNlNDY1
NDI5Li5mMGYxZjU0NjFlOWIzNGVkNzhlYzQ0NTJmZjgzMDFhMzcyNDdkM2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcubW0KQEAgLTEwOSw3ICsxMDksNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBsdWdpbklkZW50
aWZpZXI6KFdlYktpdDo6UERGUGx1Z2luSQogICAgIFtzZWxmIHNldEZyYW1lOmZyYW1lXTsKIAog
ICAgIFdlYWtPYmpDUHRyPFdLUERGSFVEVmlldz4gd2Vha1NlbGYgPSBzZWxmOwotICAgIGRpc3Bh
dGNoX2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIChpbnQ2NF90KShpbml0
aWFsSGlkZVRpbWVJbnRlcnZhbCAqIE5TRUNfUEVSX1NFQykpLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBeeworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyB7
IGluaXRpYWxIaWRlVGltZUludGVydmFsIH0sIFt3ZWFrU2VsZl0gewogICAgICAgICBbd2Vha1Nl
bGYgX2hpZGVUaW1lckZpcmVkXTsKICAgICB9KTsKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggN2VjNzhlYzUwMzM3Y2MzMjE1NmQ5NjkzMTViNzI2ZTdkZjhkZmIyMi4uOTU4
Yjg0ZGU5N2VjNjA4YzFjZmQ4M2NmMDU1NDc5OGIyZGE5NjU2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTMwNSwxNCArMzA1LDE0IEBAIHN0YXRpYyBQcm9jZXNzQWNjZXNzVHlwZSBjb21wdXRlV2Vi
UHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhRmV0Y2goT3B0aW9uU2V0PFdlYnNpCiAKIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgRnVu
Y3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBmZXRjaERhdGFBbmRBcHBseShkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgbnVs
bHB0ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGZldGNoRGF0YUFuZEFwcGx5
KGRhdGFUeXBlcywgZmV0Y2hPcHRpb25zLCBXb3JrUXVldWU6Om1haW4oKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFu
ZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmUHRyPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSkK
K3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4g
ZmV0Y2hPcHRpb25zLCBSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3Rv
cjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KQogewogICAgIGNsYXNzIENhbGxiYWNrQWdn
cmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3Jl
Z2F0b3IsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUmVmPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKE9wdGlvblNl
dDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFJlZlB0cjxXb3JrUXVldWU+
JiYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBw
bHksIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKKyAgICAgICAgc3RhdGljIFJlZjxDYWxs
YmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4g
ZmV0Y2hPcHRpb25zLCBSZWY8V29ya1F1ZXVlPiYmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3Rv
cjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5LCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3Rv
cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhbGxiYWNr
QWdncmVnYXRvcihmZXRjaE9wdGlvbnMsIFdURk1vdmUocXVldWUpLCBXVEZNb3ZlKGFwcGx5KSwg
ZGF0YVN0b3JlKSk7CiAgICAgICAgIH0KQEAgLTMyNCwxNiArMzI0LDExIEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29y
ZHM7CiAgICAgICAgICAgICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV93ZWJzaXRl
RGF0YVJlY29yZHMuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV93
ZWJzaXRlRGF0YVJlY29yZHMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgcmVjb3Jkcy51bmNo
ZWNrZWRBcHBlbmQobV9xdWV1ZSA/IGNyb3NzVGhyZWFkQ29weShyZWNvcmQpIDogV1RGTW92ZShy
ZWNvcmQpKTsKKyAgICAgICAgICAgICAgICByZWNvcmRzLnVuY2hlY2tlZEFwcGVuZChtX3F1ZXVl
LnB0cigpICE9ICZXb3JrUXVldWU6Om1haW4oKSA/IGNyb3NzVGhyZWFkQ29weShyZWNvcmQpIDog
V1RGTW92ZShyZWNvcmQpKTsKIAotICAgICAgICAgICAgYXV0byBwcm9jZXNzUmVjb3JkcyA9IFth
cHBseSA9IFdURk1vdmUobV9hcHBseSksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFthcHBseSA9IFdURk1vdmUo
bV9hcHBseSksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBhcHBseShXVEZNb3ZlKHJlY29yZHMpKTsKLSAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgIGlmIChtX3F1ZXVlKQotICAgICAgICAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFdURk1vdmUocHJvY2Vzc1JlY29yZHMpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShwcm9jZXNzUmVjb3JkcykpOwor
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4mIGZldGNoT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZmV0
Y2hPcHRpb25zOyB9CkBAIC00MjYsNyArNDIxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpm
ZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8K
ICAgICAgICAgfQogCiBwcml2YXRlOgotICAgICAgICBDYWxsYmFja0FnZ3JlZ2F0b3IoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmUHRyPFdvcmtRdWV1
ZT4mJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBh
cHBseSwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorICAgICAgICBDYWxsYmFja0FnZ3Jl
Z2F0b3IoT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVm
PFdvcmtRdWV1ZT4mJiBxdWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNv
cmQ+KT4mJiBhcHBseSwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogICAgICAgICAgICAg
OiBtX2ZldGNoT3B0aW9ucyhmZXRjaE9wdGlvbnMpCiAgICAgICAgICAgICAsIG1fcXVldWUoV1RG
TW92ZShxdWV1ZSkpCiAgICAgICAgICAgICAsIG1fYXBwbHkoV1RGTW92ZShhcHBseSkpCkBAIC00
MzYsNyArNDMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBtX2ZldGNoT3B0aW9uczsKLSAgICAgICAgUmVm
UHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsK
ICAgICAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4gbV9hcHBs
eTsKIAogICAgICAgICBIYXNoTWFwPFN0cmluZywgV2Vic2l0ZURhdGFSZWNvcmQ+IG1fd2Vic2l0
ZURhdGFSZWNvcmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDQ4MjIxNmZhNDgyZjBhNTI1OWI0MGYzZWY5
ZTI0ZTg2MDE4ZjEwMzMuLmYyNzM3OGE2NTdkYzNlYmQ0ZGI3ODk2MzFjOTM1MzNkODNhM2ExZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTM1Nyw3ICszNTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRk
VGVzdERvbWFpbnMoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBmZXRjaERhdGFBbmRBcHBs
eShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRl
RGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKKyAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlv
blNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4s
IFJlZjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3Jk
Pik+JiYgYXBwbHkpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKICAgICB2b2lk
IHBsYXRmb3JtRGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UHJvY2Vzc0Fzc2VydGlvbklPUy5tbQppbmRleCBiZTM3MWRiMzZiMThlMDkwYzAzOTMwYTMyODRh
ZjY4ODNkMjU5MDM4Li5kZmNmMmI1MGJhZDllM2M1OGMwZjU5MmY4MDY4NDc4OTE5NzFmNzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklP
Uy5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQg
PHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrSGFzaFNldC5oPgorI2ltcG9ydCA8d3Rm
L1dvcmtRdWV1ZS5oPgogCiB1c2luZyBXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbjsKIApA
QCAtMTM1LDE1ICsxMzYsMTAgQEAgLSAodm9pZClfc2NoZWR1bGVSZWxlYXNlVGFzawogICAgICAg
ICByZXR1cm47CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV0tQ
cm9jZXNzQXNzZXJ0aW9uQmFja2dyb3VuZFRhc2tNYW5hZ2VyOiBfc2NoZWR1bGVSZWxlYXNlVGFz
ayBiZWNhdXNlIHRoZSBleHBpcmF0aW9uIGhhbmRsZXIgaGFzIGJlZW4gY2FsbGVkIiwgc2VsZik7
Ci0gICAgX3BlbmRpbmdUYXNrUmVsZWFzZVRhc2sgPSBkaXNwYXRjaF9ibG9ja19jcmVhdGUoKGRp
c3BhdGNoX2Jsb2NrX2ZsYWdzX3QpMCwgXnsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRj
aEFmdGVyKHJlbGVhc2VCYWNrZ3JvdW5kVGFza0FmdGVyRXhwaXJhdGlvbkRlbGF5LCBbc2VsZiwg
cmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSB7CiAgICAgICAgIF9wZW5kaW5nVGFza1Jl
bGVhc2VUYXNrID0gbmlsOwogICAgICAgICBbc2VsZiBfcmVsZWFzZUJhY2tncm91bmRUYXNrXTsK
ICAgICB9KTsKLSAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVf
Tk9XLCByZWxlYXNlQmFja2dyb3VuZFRhc2tBZnRlckV4cGlyYXRpb25EZWxheS52YWx1ZSgpICog
TlNFQ19QRVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgX3BlbmRpbmdUYXNrUmVs
ZWFzZVRhc2spOwotI2lmICFfX2hhc19mZWF0dXJlKG9iamNfYXJjKQotICAgIC8vIGRpc3BhdGNo
X2FzeW5jKCkgZG9lcyBhIEJsb2NrX2NvcHkoKSAvIEJsb2NrX3JlbGVhc2UoKSBvbiBiZWhhbGYg
b2YgdGhlIGNhbGxlci4KLSAgICBCbG9ja19yZWxlYXNlKF9wZW5kaW5nVGFza1JlbGVhc2VUYXNr
KTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9jYW5jZWxQZW5kaW5nUmVsZWFzZVRhc2sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IDFjNzEzOWU1NjEzZWRlNDg2Yjc0NTQ4NjZmYTI2MDc5ODA5MmJhMjguLmU0
NjczYjI2NmU1NjMxMzg3YjdlNDk4OTRjZjJiMzdmZmE1NDVlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtNDIyOSw4ICs0MjI5LDggQEAgLSAodm9pZClyZXF1ZXN0UmVjdHNUb0V2YWRlRm9yU2VsZWN0
aW9uQ29tbWFuZHNXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlMKICAgICB9CiAKICAg
ICAvLyBHaXZlIHRoZSBwYWdlIHNvbWUgdGltZSB0byBwcmVzZW50IGN1c3RvbSBlZGl0aW5nIFVJ
IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRldGVjdCBhbmQgZXZhZGUgaXQuCi0gICAgYXV0byBkZWxh
eUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyID0gKDAuMjVfcykubmFub3NlY29uZHMoKTsKLSAgICBk
aXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWxheUJlZm9y
ZVNob3dpbmdDYWxsb3V0QmFyKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2NvbXBsZXRp
b24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrU2VsZiA9IFdlYWtPYmpD
UHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSAoKSBtdXRhYmxlIHsKKyAgICBhdXRvIGRlbGF5QmVm
b3JlU2hvd2luZ0NhbGxvdXRCYXIgPSAwLjI1X3M7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlz
cGF0Y2hBZnRlcihkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyLCBbY29tcGxldGlvbiA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tD
b250ZW50Vmlldz4oc2VsZildICgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtTZWxmKSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggOWE5
OGZmYzBkMzU2MzU4ZWE3MGExOTA2YWU5OWNjYzQ1NTVjNjIyOC4uYmRjNTRiOWRlNzhjYmZiNmI4
Yjg1MzNmMmZkNjYwOTIwNTZmZTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xNTA1LDcgKzE1MDUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6d2lsbE9wZW5BcHBMaW5rKCkKICAgICAvLyBXZSBjaG9zZSAyNSBzZWNvbmRzIGJlY2F1
c2UgdGhlIHN5c3RlbSBvbmx5IGdpdmVzIHVzIDMwIHNlY29uZHMgYW5kIHdlIGRvbid0IHdhbnQg
dG8gZ2V0IHRvbyBjbG9zZSB0byB0aGF0IGxpbWl0CiAgICAgLy8gdG8gYXZvaWQgYXNzZXJ0aW9u
IGludmFsaWRhdGlvbiAob3IgZXZlbiB0ZXJtaW5hdGlvbikuCiAgICAgbV9vcGVuaW5nQXBwTGlu
a0FjdGl2aXR5ID0gcHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiT3Bl
bmluZyBBcHBMaW5rIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKLSAgICBkaXNwYXRjaF9hZnRlcihk
aXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAyNSAqIE5TRUNfUEVSX1NFQyksIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewor
ICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoMjVfcywgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdl
YWtUaGlzLT5tX29wZW5pbmdBcHBMaW5rQWN0aXZpdHkgPSBudWxscHRyOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZXJ2aWNlc0NvbnRyb2xsZXIubW0KaW5k
ZXggZWE1YzMyMzkyZDcxY2YzZDcyZGRlNDUyZGM0Y2IyNjg4NjM5YmRhNi4uNzk5YjBhMDJiNmE0
NzE0MzQ2NmU1YzAzODJhODJlZDYwZGI0ZTQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1NlcnZpY2VzQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvU2VydmljZXNDb250cm9sbGVyLm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9p
ZCBTZXJ2aWNlc0NvbnRyb2xsZXI6OnJlZnJlc2hFeGlzdGluZ1NlcnZpY2VzKGJvb2wgcmVmcmVz
aEltbWVkaWF0ZWx5KQogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
QXR0cmlidXRlZFN0cmluZz4+IGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnQ7CiAgICAg
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50
T25jZUZsYWc7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKGF0dHJpYnV0ZWRTdHJpbmdXaXRoUmlj
aENvbnRlbnRPbmNlRmxhZywgWyZdIHsKLSAgICAgICAgICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgWyZdIHsKKyAgICAgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigp
LmRpc3BhdGNoU3luYyhbJl0gewogICAgICAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGFk
b3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICAgICAg
YXV0byBjZWxsID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnRDZWxsIGFsbG9jXSBpbml0SW1h
Z2VDZWxsOmltYWdlXSk7CiAgICAgICAgICAgICAgICAgW2F0dGFjaG1lbnQgc2V0QXR0YWNobWVu
dENlbGw6Y2VsbC5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkRvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJEb3du
bG9hZC5tbQppbmRleCAyZmNiMDBhZGIyNGFjYjY1ZGNmMzc5YjFhZmZkMjdmNzk0N2Q5NTcxLi42
ZTZjOWQ2OTZkYTY2Y2RhYzlhNzU5ZTE4YmNkNDkxNmUwNGVmZjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvTlNVUkxEb3dubG9hZFNQSS5oPgogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1
ZXVlLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJLmg+CiAKIHN0YXRpYyBib29s
IHNob3VsZENhbGxPbk5ldHdvcmtUaHJlYWQoKQpAQCAtNjUsOCArNjYsMTEgQEAgc3RhdGljIHZv
aWQgY2FsbE9uRGVsZWdhdGVUaHJlYWRBbmRXYWl0KENhbGxhYmxlJiYgd29yaykKIHsKICAgICBp
ZiAoc2hvdWxkQ2FsbE9uTmV0d29ya1RocmVhZCgpIHx8IGlzTWFpblRocmVhZCgpKQogICAgICAg
ICB3b3JrKCk7Ci0gICAgZWxzZQotICAgICAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIHdvcmspOworICAgIGVsc2UgeworICAgICAgICBXb3JrUXVldWU6Om1haW4o
KS5kaXNwYXRjaFN5bmMoW3dvcmsgPSBXVEZNb3ZlKHdvcmspXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgd29yaygpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDk4MzZhNzk4MDlkMjFhNTg0ZDFmYjJlNDc0ZDFmOTIyOGQzOThjZmUuLjAzNWFiMjI3YWJk
MjdiZTAzOThiYjE4NjI0MjVmOTM3M2Q1NDE5NGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMy0xMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrUXVl
dWU6Om1haW4oKSB0byBnZXQgdGhlIG1haW4gdGhyZWFkJ3Mgd29yayBxdWV1ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMDg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtRdWV1
ZTo6bWFpbigpIHRvIGdldCB0aGUgbWFpbiB0aHJlYWQncyB3b3JrIHF1ZXVlLiBUaGlzIGFsbG93
cyB1cyB0byBwb3J0IHNvbWUgbW9yZSBjb2RlIGZyb20KKyAgICAgICAgZGlzcGF0Y2hfcXVldWUg
dG8gV29ya1F1ZXVlLiBJdCBhbHNvIHNpbXBsaWZpZXMgc29tZSBjb2RlIHRoYXQgaGFzIHRvIGRl
YWwgdGhhdCBzb21ldGltZXMgbmVlZHMgdG8gcnVuIG9uCisgICAgICAgIHRoZSBtYWluIHRocmVh
ZCBhbmQgb3RoZXIgdGltZXMgb24gYSBiYWNrZ3JvdW5kIHF1ZXVlLiBIYXZpbmcgYSBzaW5nbGUg
V29ya1F1ZXVlIHR5cGUgdG8gcmVwcmVzZW50IGJvdGggdGhlCisgICAgICAgIG1haW4gdGhyZWFk
IGFuZCBhIGJhY2tncm91bmQgcXVldWUgbWFrZXMgd3JpdGluZyBzdWNoIGNvZGUgbW9yZSBjb252
ZW5pZW50LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpkb0FzeW5jVGFz
ayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAg
ICAgICAoLVtEdW1wUmVuZGVyVHJlZSBfd2ViVGhyZWFkSW52b2tlZF0pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6ZG9Bc3luY1Rhc2spOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2YXRlRGF0YUxpc3RTdWdnZXN0aW9uKToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyTWFjOjpyZW1vdmVWaWV3RnJvbVdpbmRvdyk6CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6YWRkVmlld1RvV2luZG93KToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6YWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rp
b24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmNob29zZU1lbnVBY3Rp
b24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2YXRlQXRQb2lu
dCk6CisKIDIwMjEtMDMtMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSB0YWdnZWQgcG9pbnRlcnMgaW4gbW9yZSBwbGFjZXMgaW4gdGhlIE1ldGFBbGxvY2F0
b3IgY29kZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tCmluZGV4IGExZWYyZWQwOTc5MDEyMTQ3ZjY5ZTA5NDUzZjZlZWNlODBhM2Y0ZjQu
LjA1YjliOGUzMzc1OTdiNDM2Y2MyMzIwYWYxMzQwMmRkODk4YjBkZTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMzQsNiAr
MzQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVl
dWUuaD4KIAogZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3PiBnV2Vi
QnJvd3NlclZpZXc7CiBleHRlcm4gUmV0YWluUHRyPER1bXBSZW5kZXJUcmVlV2ViU2Nyb2xsVmll
dz4gZ1dlYlNjcm9sbFZpZXc7CkBAIC00OSwxOSArNTAsMTggQEAgdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXJJT1M6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgdW5zaWdu
ZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywg
Q2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKICAg
ICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29u
dGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAgfSkuZ2V0KCkpOworICAg
IH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVRvU2NhbGUoZG91Ymxl
IHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQg
PSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5v
blBlcnNpc3RlbnQpOwogCi0gICAgUmVmUHRyPFVJU2NyaXB0Q29udHJvbGxlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNjYWxlLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIFtnV2ViU2Ny
b2xsVmlldyB6b29tVG9TY2FsZTpzY2FsZSBhbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
SURdIHsKICAgICAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCBiNTFl
MWFlZmUyZGZmNmFjZWViNzY0M2IzYjQzMmYyMWU0MDc5YmFlLi5mNGUwYjk4Yjg1NzlkNzU1YmRi
OWU1MDczYTVjOWRjODU2NTFmNGEwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCkBAIC0xMDUsNiArMTA1LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9VbmlxdWVBcnJheS5o
PgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL0NyYXNoUmVw
b3J0ZXIuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTIzOCw3ICsxMjM5LDcgQEAgLSAodm9pZClfd2Vi
VGhyZWFkRXZlbnRMb29wSGFzUnVuCiAtICh2b2lkKV93ZWJUaHJlYWRJbnZva2VkCiB7CiAgICAg
QVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtz
ZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgW3NlbGYgX3dl
YlRocmVhZEV2ZW50TG9vcEhhc1J1bl07CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBlMTFmYTMyY2VjNmEw
ODRiYTAxZDk3ZWM4MWJkNjYyMTUyZDNhYTVkLi5mMjgzM2EyYjJjNDE0MjcyZjcwOTg0MGQ1ZDQ4
ODRiNjAxOGY2ZDc4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlw
dENvbnRyb2xsZXJNYWMubW0KQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJQ
cmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL21hYy9OU1RleHRJbnB1dENvbnRleHRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a1B0ci5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIApA
QCAtNTEsMTEgKzUxLDExIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpkb0FzeW5jVGFz
ayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2Nv
bnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNp
c3RlbnQpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bWFrZUJsb2NrUHRyKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
SURdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBs
ZXRlKGNhbGxiYWNrSUQpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0QXRSYW5nZShKU1N0cmluZ1JlZiB0ZXh0LCBp
bnQgbG9jYXRpb24sIGludCBsZW5ndGgpCkBAIC0xMDcsMTEgKzEwNywxMSBAQCB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlck1hYzo6YWN0aXZhdGVEYXRhTGlzdFN1Z2dlc3Rpb24odW5zaWduZWQgaW5k
ZXgsIEpTVmFsdWVSZQogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAKICAgICB1bnNpZ25lZCBj
YWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxs
YmFja1R5cGVOb25QZXJzaXN0ZW50KTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKICAgICAgICAg
aWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fY29udGV4dC0+
YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwog
fQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3Ry
aW5nUmVmIHByZWZlcmVuY2VSZWYsIEpTU3RyaW5nUmVmIHZhbHVlUmVmKQpAQCAtMTMwLDExICsx
MzAsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlbW92ZVZpZXdGcm9tV2luZG93
KEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUg
d2ViVmlld107CiAgICAgW3dlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAKLSAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMs
IHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFdvcmtRdWV1
ZTo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNhbGxiYWNrSURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0g
ICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6
YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYgY2FsbGJhY2spCkBAIC0xNDQsMTEgKzE0NCwxMSBA
QCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6YWRkVmlld1RvV2luZG93KEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CiAg
ICAgW1ttYWluV2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXddOwogCi0gICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFt0
aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrSURdIHsKKyAgICBXb3Jr
UXVldWU6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjYWxsYmFja0lEXSB7CiAgICAgICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQp
OwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJN
YWM6OnRvZ2dsZUNhcHNMb2NrKEpTVmFsdWVSZWYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggYmFiZTk1
N2QxMWIyMDQ2ZDVmMzZlZDRkZGM3MWJiZDdkNmU2MDYxYi4uMWZjMzg1YjIxMmE1MzQ1MmI3MmJh
MGZiZTlhOGI3NDFjMzQ1OGM1NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtNDUsNiArNDUsNyBAQAogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYv
V29ya1F1ZXVlLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCkBAIC0xNTEsNyArMTUyLDcgQEAgdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OmFjdGl2YXRlRGF0YUxpc3RTdWdnZXN0aW9uKHVuc2ln
bmVkIGluZGV4LCBKU1ZhbHVlUmUKICAgICBbdGFibGUgc2VsZWN0Um93SW5kZXhlczpbTlNJbmRl
eFNldCBpbmRleFNldFdpdGhJbmRleDppbmRleF0gYnlFeHRlbmRpbmdTZWxlY3Rpb246Tk9dOwog
CiAgICAgLy8gU2VuZCB0aGUgYWN0aW9uIGFmdGVyIGEgc2hvcnQgZGVsYXkgdG8gc2ltdWxhdGUg
bm9ybWFsIHVzZXIgaW50ZXJhY3Rpb24uCi0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGlt
ZShESVNQQVRDSF9USU1FX05PVywgKGludDY0X3QpKDAuMDUgKiBOU0VDX1BFUl9TRUMpKSwgZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KCp0aGlzKSwgY2FsbGJhY2tJRCwgdGFibGVdIHsKKyAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNw
YXRjaEFmdGVyKDUwX21zLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIoKnRoaXMp
LCBjYWxsYmFja0lELCB0YWJsZV0gewogICAgICAgICBpZiAoW3RhYmxlIHdpbmRvd10pCiAgICAg
ICAgICAgICBbdGFibGUgc2VuZEFjdGlvbjpbdGFibGUgYWN0aW9uXSB0bzpbdGFibGUgdGFyZ2V0
XV07CiAKQEAgLTIxMCwxMSArMjExLDExIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpj
aG9vc2VNZW51QWN0aW9uKEpTU3RyaW5nUmVmIGpzQWN0aW9uLCBKU1ZhbHVlUmVmIGNhCiAgICAg
ICAgIFthY3RpdmVNZW51IGNhbmNlbFRyYWNraW5nXTsKICAgICB9CiAKLSAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIHN0cm9u
Z1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0geworICAgIFdvcmtRdWV1ZTo6bWFp
bigpLmRpc3BhdGNoKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
SURdIHsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAgfSkuZ2V0
KCkpOworICAgIH0pOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6YmVnaW5CYWNr
U3dpcGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKQEAgLTI4NywxMSArMjg4LDExIEBAIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyTWFjOjphY3RpdmF0ZUF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFs
dWVSZWYgY2FsbGJhY2spCiAgICAgZXZlbnRTZW5kZXItPm1vdXNlRG93bigwLCAwKTsKICAgICBl
dmVudFNlbmRlci0+bW91c2VVcCgwLCAwKTsKIAotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjYWxsYmFja0lEXSB7CisgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2go
W3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gewogICAgICAg
ICBpZiAoIW1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9jb250ZXh0
LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKLSAgICB9KS5nZXQoKSk7CisgICAgfSk7
CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpjb3B5VGV4dChKU1N0cmluZ1JlZiB0
ZXh0KQo=
</data>
<flag name="commit-queue"
          id="442238"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>