<?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>91602</bug_id>
          
          <creation_ts>2012-07-18 01:18:36 -0700</creation_ts>
          <short_desc>[EFL][WK2] EFL should use DownloadSoup instead of defining DownloadEfl</short_desc>
          <delta_ts>2012-07-18 14:32:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>91598</dependson>
          <blocked>61838</blocked>
    
    <blocked>91345</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>d-r</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>keunsoon.lee</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672114</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 01:18:36 -0700</bug_when>
    <thetext>The EFL port is using libsoup and therefore we should reuse DownloadSoup.cpp in WK2-EFL instead of defining our own (empty) DownloadEfl.cpp.

The only issue with that is that currently DownloadSoup.cpp includes &quot;ErrorsGtk.h&quot;. We need to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672199</commentid>
    <comment_count>1</comment_count>
    <who name="Keunsoon Lee">keunsoon.lee</who>
    <bug_when>2012-07-18 03:36:28 -0700</bug_when>
    <thetext>I don&apos;t think we need to use DownloadSoup.cpp instead of DownloadEfl.cpp on WebKit2/WebProcess/Downloads/efl.
Because Download itself should not depend on Loader or Soup port.

By the way, I&apos;m going to upstream the core of DownloadEfl.cpp soon.
(https://bugs.webkit.org/show_bug.cgi?id=88077)

What do you think so?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672207</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 03:44:29 -0700</bug_when>
    <thetext>Actually it depend(In reply to comment #1)
&gt; I don&apos;t think we need to use DownloadSoup.cpp instead of DownloadEfl.cpp on WebKit2/WebProcess/Downloads/efl.
&gt; Because Download itself should not depend on Loader or Soup port.
&gt; 
&gt; By the way, I&apos;m going to upstream the core of DownloadEfl.cpp soon.
&gt; (https://bugs.webkit.org/show_bug.cgi?id=88077)
&gt; 
&gt; What do you think so?

Actually, it depends on soup for the response (it is a SoupMessage). Otherwise, why would GTK port put the implementation in a soup folder instead of GTK.
I don&apos;t want to duplicate the code in EFL for no reason. We are using soup and there is a DownloadSoup, therefore we should use it.

My patch to use DownloadSoup in WebKit2-EFL is almost ready and it is small. I think it is the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672248</commentid>
    <comment_count>3</comment_count>
      <attachid>152987</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 04:51:52 -0700</bug_when>
    <thetext>Created attachment 152987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672254</commentid>
    <comment_count>4</comment_count>
      <attachid>152987</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-18 05:02:22 -0700</bug_when>
    <thetext>Comment on attachment 152987
Patch

Attachment 152987 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13284469</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672276</commentid>
    <comment_count>5</comment_count>
      <attachid>152996</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 05:25:51 -0700</bug_when>
    <thetext>Created attachment 152996
Patch

Attempt to make gtk-ews happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672280</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-18 05:35:24 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I don&apos;t think we need to use DownloadSoup.cpp instead of DownloadEfl.cpp on WebKit2/WebProcess/Downloads/efl.
&gt; Because Download itself should not depend on Loader or Soup port.
&gt; 
&gt; By the way, I&apos;m going to upstream the core of DownloadEfl.cpp soon.
&gt; (https://bugs.webkit.org/show_bug.cgi?id=88077)
&gt; 
&gt; What do you think so?

Keunsoon, do you have any features DownloadSoup can&apos;t support ? Basically, this is a way to go I think. So, I&apos;d like to know if there is any reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672286</commentid>
    <comment_count>7</comment_count>
      <attachid>152998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 05:45:41 -0700</bug_when>
    <thetext>Created attachment 152998
Patch

Fix a small typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672553</commentid>
    <comment_count>8</comment_count>
      <attachid>152998</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-18 11:18:37 -0700</bug_when>
    <thetext>Comment on attachment 152998
Patch

good point, rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672593</commentid>
    <comment_count>9</comment_count>
      <attachid>152998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 11:50:41 -0700</bug_when>
    <thetext>Comment on attachment 152998
Patch

Clearing cq flag for now as I need the dependency to land first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672679</commentid>
    <comment_count>10</comment_count>
      <attachid>153073</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-18 13:10:52 -0700</bug_when>
    <thetext>Created attachment 153073
Patch for landing

Rebase on master now that the dependency landed. Could someone please cq+ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672761</commentid>
    <comment_count>11</comment_count>
      <attachid>153073</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 14:31:48 -0700</bug_when>
    <thetext>Comment on attachment 153073
Patch for landing

Clearing flags on attachment: 153073

Committed r123019: &lt;http://trac.webkit.org/changeset/123019&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672763</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 14:32:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152987</attachid>
            <date>2012-07-18 04:51:52 -0700</date>
            <delta_ts>2012-07-18 05:25:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91602_use_downloadsoup.patch</filename>
            <type>text/plain</type>
            <size>24431</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkMmE5YzQ0Li5hYmQwNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEVGTCBzaG91bGQgdXNlIERvd25sb2FkU291cCBp
bnN0ZWFkIG9mIGRlZmluaW5nIERvd25sb2FkRWZsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJldXNlIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcCBpbiBFRkwgcG9ydAorICAgICAgICBpbnN0ZWFkIG9mIHJlZGVmaW5pbmcg
b3VyIG93biBEb3dubG9hZEVmbC5jcHAuIFRoZSBFRkwgcG9ydAorICAgICAgICBpcyBhbHNvIHVz
aW5nIGxpYnNvdXAgc28gaXQgaXMgYmVzdCB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKERvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9lZmwvRG93bmxvYWRFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3Ip
OgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2Fk
ZXJFZmwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93
bmxvYWRTb3VwRXJyb3JzR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKToKKyAgICAgICAgKFdlYktp
dDo6cGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcDogTWFrZSB0aGUgY29kZQorICAgICAg
ICBjb21waWxlIGZvciBvdGhlciBwb3J0cyB0aGFuIEdUSy4KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91
dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6Y2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3Nv
dXAvRG93bmxvYWRTb3VwRXJyb3JzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKwogMjAx
Mi0wNy0xNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgog
CiAgICAgICAgIFtFRkxdIFJlcGxhY2UgMCBieSBOVUxMIGluIHB1YmxpYyBoZWFkZXJzIGRvY3Vt
ZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU5MzQ4ZGUuLmJkOTE2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTIwLDcgKzkyMCw5IEBAIHdl
YmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXBFcnJv
cnMuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dl
YkZ1bGxTY3JlZW5NYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggZjMyN2UyNi4uMDg0ZjEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKQEAgLTcwLDggKzcwLDggQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCiAgICAg
V2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5jcHAKIAot
ICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZEVmbC5jcHAKLSAgICBXZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwuY3BwCisgICAgV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAKKyAgICBXZWJQcm9jZXNzL0Rv
d25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKIAogICAgIFdlYlByb2Nlc3MvZWZsL1dlYlBy
b2Nlc3NFZmwuY3BwCiAgICAgV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCkBA
IC0xMDgsNyArMTA4LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L3NvdXAiCi0gICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbCIKKyAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3Mv
c291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRl
eCAyNjg4YjcyLi5kNzUxMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTM4LDcgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU1VSTERvd25s
b2FkOwogT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFu
ZGxlQ2xpZW50Lmg+CiAjZW5kaWYKQEAgLTQ3LDEwICs0Nyw2IEBAIE9CSkNfQ0xBU1MgV0tEb3du
bG9hZEFzRGVsZWdhdGU7CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMRG93bmxvYWRQcml2Lmg+
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlIDxGaWxlRG93bmxvYWRlckVm
bC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBEYXRhUmVmZXJl
bmNlOwogfQpAQCAtNzMsMTAgKzY5LDYgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFF0RmlsZURv
d25sb2FkZXI7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKLWNsYXNzIEZpbGVEb3dubG9h
ZGVyRWZsOwotI2VuZGlmCi0KIGNsYXNzIERvd25sb2FkIDogcHVibGljIENvcmVJUEM6Ok1lc3Nh
Z2VTZW5kZXI8RG93bmxvYWQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9hZCk7
CiBwdWJsaWM6CkBAIC0xNTAsMTMgKzE0MiwxMCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFFU
KQogICAgIFF0RmlsZURvd25sb2FkZXIqIG1fcXREb3dubG9hZGVyOwogI2VuZGlmCi0jaWYgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgIE93blB0
cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShFRkwpCi0gICAgT3duUHRyPEZpbGVEb3dubG9hZGVyRWZsPiBtX2ZpbGVE
b3dubG9hZGVyOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRFZmwu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ODI4YzJiLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZEVmbC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQot
ICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkRvd25sb2FkLmgiCi0KLSNpbmNsdWRlICJGaWxlRG93bmxv
YWRlckVmbC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIERvd25sb2Fk
OjpzdGFydChXZWJQYWdlKiBpbml0aWF0aW5nV2ViUGFnZSkKLXsKLSAgICBtX2ZpbGVEb3dubG9h
ZGVyID0gRmlsZURvd25sb2FkZXJFZmw6OmNyZWF0ZSh0aGlzKTsKLSAgICBtX2ZpbGVEb3dubG9h
ZGVyLT5zdGFydChpbml0aWF0aW5nV2ViUGFnZSwgbV9yZXF1ZXN0KTsKLX0KLQotdm9pZCBEb3du
bG9hZDo6c3RhcnRXaXRoSGFuZGxlKFdlYlBhZ2UqIGluaXRpYXRpbmdQYWdlLCBSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpjYW5jZWwoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6ZGlkRGVjaWRl
RGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0
ZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpwbGF0Zm9y
bURpZEZpbmlzaCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9h
ZDo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZFJlcXVlc3RU
b0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIERvd25sb2FkOjp1c2VDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY29uc3QgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQotCi12b2lkIERvd25sb2FkOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZGVhM2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRTb3Vw
RXJyb3JzRWZsLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG93bmxvYWRTb3VwRXJyb3JzLmgiCisKKyNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCisvLyBGSVhNRTogVXNlIEVycm9yc0VmbC5oIHdoZSBhdmFpbGFibGUKK3N0YXRpYyBjaGFy
IGVycm9yRG9tYWluRG93bmxvYWRbXSA9ICJXZWJLaXREb3dubG9hZEVycm9yIjsKKworZW51bSBE
b3dubG9hZEVycm9yIHsKKyAgICBEb3dubG9hZEVycm9yTmV0d29yayA9IDQ5OSwKKyAgICBEb3du
bG9hZEVycm9yRGVzdGluYXRpb24gPSA0MDEKK307CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitS
ZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwg
Y29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0
aW9uKQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERv
d25sb2FkRXJyb3JOZXR3b3JrLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7Cit9
CisKK1Jlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9y
RGVzdGluYXRpb24sIHJlc3BvbnNlLnVybCgpLCBtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9lZmwvRmlsZURvd25sb2FkZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOGYxNzg0MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
ODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJGaWxlRG93bmxvYWRlckVmbC5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVBhc3NPd25QdHI8RmlsZURvd25sb2FkZXJFZmw+IEZpbGVEb3dubG9hZGVyRWZsOjpjcmVhdGUo
RG93bmxvYWQqIGRvd25sb2FkKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZURvd25s
b2FkZXJFZmwoZG93bmxvYWQpKTsKLX0KLQotRmlsZURvd25sb2FkZXJFZmw6OkZpbGVEb3dubG9h
ZGVyRWZsKERvd25sb2FkKiBkb3dubG9hZCkKLSAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCi17
Ci0gICAgQVNTRVJUKGRvd25sb2FkKTsKLX0KLQotRmlsZURvd25sb2FkZXJFZmw6On5GaWxlRG93
bmxvYWRlckVmbCgpCi17Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJFZmw6OnN0YXJ0KFdlYlBh
Z2UqLCBSZXNvdXJjZVJlcXVlc3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRmlsZURvd25sb2FkZXJFZmw6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgRmlsZURvd25sb2FkZXJFZmw6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciosIGludCwgaW50KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgRmlsZURvd25sb2FkZXJFZmw6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBk
b3VibGUpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGaWxlRG93bmxvYWRl
ckVmbDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLWJvb2wgRmlsZURvd25sb2FkZXJFZmw6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikKLXsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJFZmw6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZpbGVEb3dubG9hZGVyRWZs
OjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
Ci12b2lkIEZpbGVEb3dubG9hZGVyRWZsOjpyZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9GaWxlRG93bmxvYWRlckVmbC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4Zjk5OGIuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQot
ICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBG
aWxlRG93bmxvYWRlckVmbF9oCi0jZGVmaW5lIEZpbGVEb3dubG9hZGVyRWZsX2gKLQotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLWNsYXNzIFJlc291cmNl
RXJyb3I7Ci1jbGFzcyBSZXNvdXJjZUhhbmRsZTsKLWNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50
OwotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIERvd25sb2FkOwotY2xhc3MgV2ViUGFnZTsKLQot
Y2xhc3MgRmlsZURvd25sb2FkZXJFZmwgOiBwdWJsaWMgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGVEb3dubG9hZGVyRWZs
PiBjcmVhdGUoRG93bmxvYWQqKTsKLSAgICB2aXJ0dWFsIH5GaWxlRG93bmxvYWRlckVmbCgpOwot
Ci0gICAgdm9pZCBzdGFydChXZWJQYWdlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0K
LSAgICAvLyAgY2FsbGJhY2tzIGZvciBSZXNvdXJjZUhhbmRsZUNsaWVudCwgd2hpY2ggYXJlIGNh
bGxlZCBieSBSZXNvdXJjZUhhbmRsZQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZl
ZENhbmNlbGxhdGlvbihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZURv
d25sb2FkZXJFZmwoRG93bmxvYWQqKTsKLQotICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBGaWxlRG93bmxvYWRlckVmbF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93
bmxvYWRTb3VwRXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL2d0ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjBkMjNlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcApAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRG93bmxvYWRTb3VwRXJyb3JzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0
ay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1Jlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24pCit7CisgICAgcmV0dXJuIGRvd25sb2FkTmV0d29ya0Vycm9yKFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5Eb3dubG9hZCwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNj
cmlwdGlvbikpOworfQorCitSZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlv
bkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgcmV0dXJuIGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwg
bWVzc2FnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmlu
ZGV4IDVjOTZlYmEuLmJiMjk1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTI4LDE1ICsyOCwx
OCBAQAogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNpbmNsdWRlICJEb3dubG9hZFNvdXBF
cnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgot
I2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC02MCw4ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9kb3dubG9hZC0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIAogICAgICAgICBpZiAocmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA+PSA0MDApIHsKLSAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKGRvd25sb2Fk
TmV0d29ya0Vycm9yKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNl
Lmh0dHBTdGF0dXNUZXh0KCkpKSk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9y
bURvd25sb2FkTmV0d29ya0Vycm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzYsOSArNzgsMTMgQEAgcHVibGljOgogICAgICAg
ICBib29sIG92ZXJ3cml0ZTsKICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJJID0gbV9kb3du
bG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmls
ZW5hbWUudXRmOCgpLmRhdGEoKSwgb3ZlcndyaXRlKTsKICAgICAgICAgaWYgKGRlc3RpbmF0aW9u
VVJJLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR093blB0cjxjaGFyPiBlcnJvck1lc3NhZ2Uo
Z19zdHJkdXBfcHJpbnRmKF8oIkNhbm5vdCBkZXRlcm1pbmUgZGVzdGluYXRpb24gVVJJIGZvciBk
b3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAlcyIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lLnV0
ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKGRvd25sb2FkRGVzdGlu
YXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3JNZXNzYWdlLmdldCgpKSk7CisjaWYgUExBVEZPUk0o
R1RLKQorICAgICAgICAgICAgR093blB0cjxjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKF8o
IkNhbm5vdCBkZXRlcm1pbmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dl
c3RlZCBmaWxlbmFtZSAlcyIpLCBzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIu
Z2V0KCkpOworI2Vsc2UKKyAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJDYW5ub3QgZGV0ZXJtaW5lIGRlc3RpbmF0aW9uIFVSSSBmb3IgZG93bmxvYWQgd2l0aCBz
dWdnZXN0ZWQgZmlsZW5hbWUgIiwgc3VnZ2VzdGVkRmlsZW5hbWUpOworI2VuZGlmCisgICAgICAg
ICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNw
b25zZSwgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtODYsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICAgICAgbV9vdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19maWxlX3JlcGxhY2UoZmlsZS5n
ZXQoKSwgMCwgVFJVRSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsK
ICAgICAgICAgaWYgKCFtX291dHB1dFN0cmVhbSkgewotICAgICAgICAgICAgZG93bmxvYWRGYWls
ZWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHJlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOwor
ICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJy
b3IocmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtOTksNyArMTA1LDcgQEAgcHVibGljOgogICAgICAgICBHT3duUHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoR19PVVRQVVRfU1RS
RUFNKG1fb3V0cHV0U3RyZWFtLmdldCgpKSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAw
LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGRv
d25sb2FkRmFpbGVkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihSZXNvdXJjZVJlc3BvbnNlKG1f
cmVzcG9uc2UuZ2V0KCkpLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICAgICAgZG93bmxvYWRG
YWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoUmVzb3VyY2VSZXNwb25zZSht
X3Jlc3BvbnNlLmdldCgpKSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBtX2Rvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0
ZW4pOwpAQCAtMTEzLDcgKzExOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIHsKLSAgICAgICAg
ZG93bmxvYWRGYWlsZWQoZG93bmxvYWROZXR3b3JrRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgZG93
bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihlcnJvci5lcnJvckNvZGUo
KSwgZXJyb3IuZmFpbGluZ1VSTCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSk7CiAg
ICAgfQogCiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikKQEAgLTE5OCw0ICsy
MDQsMTkgQEAgdm9pZCBEb3dubG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW8KICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCit2b2lkIERvd25sb2FkOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBEb3dubG9hZDo6dXNlQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IGNvbnN0IENyZWRlbnRpYWwmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
RG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cEVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5ZTIzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cEVycm9ycy5oCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRG93bmxvYWRTb3VwRXJyb3Jz
X2gKKyNkZWZpbmUgRG93bmxvYWRTb3VwRXJyb3JzX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5l
dHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0
IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBw
bGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBEb3dubG9hZFNvdXBFcnJvcnNfaAo=
</data>
<flag name="commit-queue"
          id="161811"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152996</attachid>
            <date>2012-07-18 05:25:51 -0700</date>
            <delta_ts>2012-07-18 05:45:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91602_use_downloadsoup.patch</filename>
            <type>text/plain</type>
            <size>25096</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkMmE5YzQ0Li5lZjNiMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEVGTCBzaG91bGQgdXNlIERvd25sb2FkU291cCBp
bnN0ZWFkIG9mIGRlZmluaW5nIERvd25sb2FkRWZsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJldXNlIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcCBpbiBFRkwgcG9ydAorICAgICAgICBpbnN0ZWFkIG9mIHJlZGVmaW5pbmcg
b3VyIG93biBEb3dubG9hZEVmbC5jcHAuIFRoZSBFRkwgcG9ydAorICAgICAgICBpcyBhbHNvIHVz
aW5nIGxpYnNvdXAgc28gaXQgaXMgYmVzdCB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKERvd25sb2FkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRFZmwuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJv
cnNFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OnBs
YXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURv
d25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
ZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2FkTmV0
d29ya0Vycm9yKToKKyAgICAgICAgKFdlYktpdDo6cGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9u
RXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcDogTWFrZSB0aGUgY29kZQorICAgICAgICBjb21waWxlIGZvciBvdGhlciBwb3J0cyB0aGFu
IEdUSy4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNy0xNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFJlcGxhY2UgMCBieSBO
VUxMIGluIHB1YmxpYyBoZWFkZXJzIGRvY3VtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5k
ZXggM2UyZWNhZS4uOTEwOGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTYzLDYgKzYzLDcg
QEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RL
X0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0JhdHRlcnkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVl
biBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbiBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTkzNDhkZS4uYmQ5MTY5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC05MjAsNyArOTIwLDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZEF1dGhlbnRpY2F0
aW9uQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9n
dGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cEVycm9ycy5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBmMzI3ZTI2Li4wODRmMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsOCAr
NzAsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCi0gICAgV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcAotICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9G
aWxlRG93bmxvYWRlckVmbC5jcHAKKyAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxv
YWRTb3VwRXJyb3JzRWZsLmNwcAorICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxv
YWRTb3VwLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBX
ZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKLSAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsIgorICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDI2ODhiNzIuLmQ3NTEwODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApA
QCAtMzgsNyArMzgsNyBAQCBPQkpDX0NMQVNTIE5TVVJMRG93bmxvYWQ7CiBPQkpDX0NMQVNTIFdL
RG93bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhh
bmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNlbmRp
ZgpAQCAtNDcsMTAgKzQ3LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oRUZMKQotI2luY2x1ZGUgPEZpbGVEb3dubG9hZGVyRWZsLmg+Ci0jZW5kaWYKLQogbmFt
ZXNwYWNlIENvcmVJUEMgewogICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC03MywxMCAr
NjksNiBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUXRGaWxlRG93bmxvYWRlcjsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oRUZMKQotY2xhc3MgRmlsZURvd25sb2FkZXJFZmw7Ci0jZW5kaWYKLQog
Y2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjxEb3dubG9hZD4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkKTsKIHB1YmxpYzoKQEAgLTE1MCwx
MyArMTQyLDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUXRGaWxlRG93bmxv
YWRlciogbV9xdERvd25sb2FkZXI7CiAjZW5kaWYKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgT3duUHRyPFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkK
LSAgICBPd25QdHI8RmlsZURvd25sb2FkZXJFZmw+IG1fZmlsZURvd25sb2FkZXI7Ci0jZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDk4MjhjMmIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWQuaCIKLQotI2luY2x1ZGUgIkZpbGVEb3dubG9hZGVyRWZsLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KFdlYlBhZ2UqIGlu
aXRpYXRpbmdXZWJQYWdlKQotewotICAgIG1fZmlsZURvd25sb2FkZXIgPSBGaWxlRG93bmxvYWRl
ckVmbDo6Y3JlYXRlKHRoaXMpOwotICAgIG1fZmlsZURvd25sb2FkZXItPnN0YXJ0KGluaXRpYXRp
bmdXZWJQYWdlLCBtX3JlcXVlc3QpOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5k
bGUoV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93
bmxvYWQ6OnVzZUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6
OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9E
b3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTVkZWEzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEb3dubG9hZFNvdXBFcnJvcnMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIEZJWE1FOiBVc2Ug
RXJyb3JzRWZsLmggd2hlIGF2YWlsYWJsZQorc3RhdGljIGNoYXIgZXJyb3JEb21haW5Eb3dubG9h
ZFtdID0gIldlYktpdERvd25sb2FkRXJyb3IiOworCitlbnVtIERvd25sb2FkRXJyb3IgeworICAg
IERvd25sb2FkRXJyb3JOZXR3b3JrID0gNDk5LAorICAgIERvd25sb2FkRXJyb3JEZXN0aW5hdGlv
biA9IDQwMQorfTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Jlc291cmNlRXJyb3IgcGxhdGZv
cm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCit7CisgICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgRG93bmxvYWRFcnJvck5ldHdvcmss
IGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKK30KKworUmVzb3VyY2VFcnJvciBw
bGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JEZXN0aW5hdGlvbiwgcmVzcG9u
c2UudXJsKCksIG1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9GaWxlRG93bmxvYWRl
ckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURv
d25sb2FkZXJFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjE3ODQwLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9GaWxl
RG93bmxvYWRlckVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZpbGVEb3dubG9hZGVyRWZs
LmgiCi0KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxGaWxlRG93
bmxvYWRlckVmbD4gRmlsZURvd25sb2FkZXJFZmw6OmNyZWF0ZShEb3dubG9hZCogZG93bmxvYWQp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGaWxlRG93bmxvYWRlckVmbChkb3dubG9hZCkp
OwotfQotCi1GaWxlRG93bmxvYWRlckVmbDo6RmlsZURvd25sb2FkZXJFZmwoRG93bmxvYWQqIGRv
d25sb2FkKQotICAgIDogbV9kb3dubG9hZChkb3dubG9hZCkKLXsKLSAgICBBU1NFUlQoZG93bmxv
YWQpOwotfQotCi1GaWxlRG93bmxvYWRlckVmbDo6fkZpbGVEb3dubG9hZGVyRWZsKCkKLXsKLX0K
LQotdm9pZCBGaWxlRG93bmxvYWRlckVmbDo6c3RhcnQoV2ViUGFnZSosIFJlc291cmNlUmVxdWVz
dCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGaWxlRG93bmxvYWRlckVm
bDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGaWxlRG93bmxvYWRl
ckVmbDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBp
bnQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGaWxlRG93bmxvYWRlckVm
bDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZpbGVEb3dubG9hZGVyRWZsOjpkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotYm9vbCBGaWxlRG93bmxvYWRlckVmbDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoUmVzb3VyY2VIYW5kbGUqKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBGaWxl
RG93bmxvYWRlckVmbDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJFZmw6OmRpZENhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2Fk
ZXJFZmw6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDhmOTk4Yi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIEZpbGVEb3dubG9hZGVyRWZsX2gK
LSNkZWZpbmUgRmlsZURvd25sb2FkZXJFZmxfaAotCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFJlc291
cmNlSGFuZGxlOwotY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7Ci1jbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgRG93bmxvYWQ7Ci1jbGFzcyBXZWJQYWdlOwotCi1jbGFzcyBGaWxlRG93bmxvYWRl
ckVmbCA6IHB1YmxpYyBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8RmlsZURvd25sb2FkZXJFZmw+IGNyZWF0ZShEb3dubG9hZCop
OwotICAgIHZpcnR1YWwgfkZpbGVEb3dubG9hZGVyRWZsKCk7Ci0KLSAgICB2b2lkIHN0YXJ0KFdl
YlBhZ2UqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLQotICAgIC8vICBjYWxsYmFja3Mg
Zm9yIFJlc291cmNlSGFuZGxlQ2xpZW50LCB3aGljaCBhcmUgY2FsbGVkIGJ5IFJlc291cmNlSGFu
ZGxlCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBGaWxlRG93bmxvYWRlckVmbChEb3dubG9h
ZCopOwotCi0gICAgRG93bmxvYWQqIG1fZG93bmxvYWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIEZpbGVEb3dubG9hZGVyRWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291
cEVycm9yc0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyM2U2
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L2d0ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb3dubG9hZFNvdXBF
cnJvcnMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVzb3VyY2VFcnJvciBwbGF0
Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKK3sKKyAgICByZXR1
cm4gZG93bmxvYWROZXR3b3JrRXJyb3IoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2Fk
LCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKSk7Cit9CisKK1Jl
c291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1
cm4gZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHJlc3BvbnNlLCBtZXNzYWdlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXggNWM5NmViYS4uYmIyOTVl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9E
b3dubG9hZFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtMjgsMTUgKzI4LDE4IEBACiAjaW5jbHVkZSAiRG93
bmxvYWQuaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0Vycm9yc0d0ay5oPgorI2luY2x1ZGUgIkRvd25sb2FkU291cEVycm9ycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8Z2xpYi9naTE4
bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lm
IFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2VuZGlmCisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDggKzYz
LDcgQEAgcHVibGljOgogICAgICAgICBtX2Rvd25sb2FkLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UpOwogCiAgICAgICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkg
ewotICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQoZG93bmxvYWROZXR3b3JrRXJyb3IoUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkp
KTsKKyAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKHBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJy
b3IocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJl
c3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC03Niw5ICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgb3ZlcndyaXRlOwog
ICAgICAgICBTdHJpbmcgZGVzdGluYXRpb25VUkkgPSBtX2Rvd25sb2FkLT5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgp
LCBvdmVyd3JpdGUpOwogICAgICAgICBpZiAoZGVzdGluYXRpb25VUkkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBHT3duUHRyPGNoYXI+IGVycm9yTWVzc2FnZShnX3N0cmR1cF9wcmludGYoXygi
Q2Fubm90IGRldGVybWluZSBkZXN0aW5hdGlvbiBVUkkgZm9yIGRvd25sb2FkIHdpdGggc3VnZ2Vz
dGVkIGZpbGVuYW1lICVzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUudXRmOCgpLmRhdGEoKSkpOwotICAg
ICAgICAgICAgZG93bmxvYWRGYWlsZWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHJlc3BvbnNl
LCBlcnJvck1lc3NhZ2UuZ2V0KCkpKTsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgICAgICBH
T3duUHRyPGNoYXI+IGJ1ZmZlcihnX3N0cmR1cF9wcmludGYoXygiQ2Fubm90IGRldGVybWluZSBk
ZXN0aW5hdGlvbiBVUkkgZm9yIGRvd25sb2FkIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICVzIiks
IHN1Z2dlc3RlZEZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CisjZWxzZQorICAg
ICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIkNhbm5vdCBkZXRlcm1p
bmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAi
LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisjZW5kaWYKKyAgICAgICAgICAgIGRvd25sb2FkRmFpbGVk
KHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHJlc3BvbnNlLCBlcnJvck1lc3NhZ2Up
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC04Niw3ICs5Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBtX291dHB1dFN0
cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShmaWxlLmdldCgpLCAwLCBUUlVFLCBHX0ZJ
TEVfQ1JFQVRFX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICBpZiAoIW1fb3V0
cHV0U3RyZWFtKSB7Ci0gICAgICAgICAgICBkb3dubG9hZEZhaWxlZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IocmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgICAgICBkb3dubG9h
ZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3It
Pm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05OSw3ICsx
MDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAg
Z19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChHX09VVFBVVF9TVFJFQU0obV9vdXRwdXRTdHJlYW0u
Z2V0KCkpLCBkYXRhLCBsZW5ndGgsICZieXRlc1dyaXR0ZW4sIDAsICZlcnJvci5vdXRQdHIoKSk7
CiAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQoZG93bmxv
YWREZXN0aW5hdGlvbkVycm9yKFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZS5nZXQoKSksIGVy
cm9yLT5tZXNzYWdlKSk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25s
b2FkRGVzdGluYXRpb25FcnJvcihSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UuZ2V0KCkpLCBl
cnJvci0+bWVzc2FnZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IG1fZG93bmxvYWQtPmRpZFJlY2VpdmVEYXRhKGJ5dGVzV3JpdHRlbik7CkBAIC0xMTMsNyArMTE5
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgewotICAgICAgICBkb3dubG9hZEZhaWxlZChkb3du
bG9hZE5ldHdvcmtFcnJvcihlcnJvcikpOworICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9y
bURvd25sb2FkTmV0d29ya0Vycm9yKGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci5mYWlsaW5nVVJM
KCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpKTsKICAgICB9CiAKICAgICB2b2lkIHdh
c0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKQpAQCAtMTk4LDQgKzIwNCwxOSBAQCB2b2lkIERvd25s
b2FkOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpbwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRG93bmxvYWQ6
OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERvd25sb2FkOjp1c2VDcmVk
ZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBEb3dubG9hZDo6Y2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNv
dXBFcnJvcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwRXJyb3JzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODll
MjNlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBEb3dubG9hZFNvdXBFcnJvcnNfaAorI2RlZmluZSBEb3dubG9h
ZFNvdXBFcnJvcnNfaAorCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWREZXN0
aW5hdGlvbkVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIERvd25s
b2FkU291cEVycm9yc19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152998</attachid>
            <date>2012-07-18 05:45:41 -0700</date>
            <delta_ts>2012-07-18 13:10:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>91602_use_downloadsoup.patch</filename>
            <type>text/plain</type>
            <size>25097</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkMmE5YzQ0Li5lZjNiMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEVGTCBzaG91bGQgdXNlIERvd25sb2FkU291cCBp
bnN0ZWFkIG9mIGRlZmluaW5nIERvd25sb2FkRWZsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJldXNlIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcCBpbiBFRkwgcG9ydAorICAgICAgICBpbnN0ZWFkIG9mIHJlZGVmaW5pbmcg
b3VyIG93biBEb3dubG9hZEVmbC5jcHAuIFRoZSBFRkwgcG9ydAorICAgICAgICBpcyBhbHNvIHVz
aW5nIGxpYnNvdXAgc28gaXQgaXMgYmVzdCB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKERvd25sb2FkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRFZmwuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJv
cnNFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OnBs
YXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURv
d25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
ZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybURvd25sb2FkTmV0
d29ya0Vycm9yKToKKyAgICAgICAgKFdlYktpdDo6cGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9u
RXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcDogTWFrZSB0aGUgY29kZQorICAgICAgICBjb21waWxlIGZvciBvdGhlciBwb3J0cyB0aGFu
IEdUSy4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwRXJyb3JzLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNy0xNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFJlcGxhY2UgMCBieSBO
VUxMIGluIHB1YmxpYyBoZWFkZXJzIGRvY3VtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5k
ZXggM2UyZWNhZS4uOTEwOGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTYzLDYgKzYzLDcg
QEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RL
X0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0JhdHRlcnkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVl
biBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbiBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTkzNDhkZS4uYmQ5MTY5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC05MjAsNyArOTIwLDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZEF1dGhlbnRpY2F0
aW9uQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9n
dGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cEVycm9ycy5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIu
aCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBmMzI3ZTI2Li4wODRmMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsOCAr
NzAsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCi0gICAgV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcAotICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9G
aWxlRG93bmxvYWRlckVmbC5jcHAKKyAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxv
YWRTb3VwRXJyb3JzRWZsLmNwcAorICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxv
YWRTb3VwLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc0VmbC5jcHAKICAgICBX
ZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBM
SVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKLSAgICAiJHtXRUJL
SVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsIgorICAgICIke1dFQktJVDJfRElSfS9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNz
L2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dFQktJ
VDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDI2ODhiNzIuLmQ3NTEwODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApA
QCAtMzgsNyArMzgsNyBAQCBPQkpDX0NMQVNTIE5TVVJMRG93bmxvYWQ7CiBPQkpDX0NMQVNTIFdL
RG93bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhh
bmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNlbmRp
ZgpAQCAtNDcsMTAgKzQ3LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oRUZMKQotI2luY2x1ZGUgPEZpbGVEb3dubG9hZGVyRWZsLmg+Ci0jZW5kaWYKLQogbmFt
ZXNwYWNlIENvcmVJUEMgewogICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC03MywxMCAr
NjksNiBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUXRGaWxlRG93bmxvYWRlcjsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oRUZMKQotY2xhc3MgRmlsZURvd25sb2FkZXJFZmw7Ci0jZW5kaWYKLQog
Y2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjxEb3dubG9hZD4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkKTsKIHB1YmxpYzoKQEAgLTE1MCwx
MyArMTQyLDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUXRGaWxlRG93bmxv
YWRlciogbV9xdERvd25sb2FkZXI7CiAjZW5kaWYKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgT3duUHRyPFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkK
LSAgICBPd25QdHI8RmlsZURvd25sb2FkZXJFZmw+IG1fZmlsZURvd25sb2FkZXI7Ci0jZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZEVmbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDk4MjhjMmIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRG93bmxvYWQuaCIKLQotI2luY2x1ZGUgIkZpbGVEb3dubG9hZGVyRWZsLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KFdlYlBhZ2UqIGlu
aXRpYXRpbmdXZWJQYWdlKQotewotICAgIG1fZmlsZURvd25sb2FkZXIgPSBGaWxlRG93bmxvYWRl
ckVmbDo6Y3JlYXRlKHRoaXMpOwotICAgIG1fZmlsZURvd25sb2FkZXItPnN0YXJ0KGluaXRpYXRp
bmdXZWJQYWdlLCBtX3JlcXVlc3QpOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5k
bGUoV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0K
LQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENyZWRlbnRp
YWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6cmVj
ZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93
bmxvYWQ6OnVzZUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBj
cmVkZW50aWFsKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6
OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9E
b3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTk4YWNiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEb3dubG9hZFNvdXBFcnJvcnMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIEZJWE1FOiBVc2Ug
RXJyb3JzRWZsLmggd2hlbiBhdmFpbGFibGUKK3N0YXRpYyBjaGFyIGVycm9yRG9tYWluRG93bmxv
YWRbXSA9ICJXZWJLaXREb3dubG9hZEVycm9yIjsKKworZW51bSBEb3dubG9hZEVycm9yIHsKKyAg
ICBEb3dubG9hZEVycm9yTmV0d29yayA9IDQ5OSwKKyAgICBEb3dubG9hZEVycm9yRGVzdGluYXRp
b24gPSA0MDEKK307CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZXNvdXJjZUVycm9yIHBsYXRm
b3JtRG93bmxvYWROZXR3b3JrRXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWls
aW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQoreworICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluRG93bmxvYWQsIERvd25sb2FkRXJyb3JOZXR3b3Jr
LCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7Cit9CisKK1Jlc291cmNlRXJyb3Ig
cGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBEb3dubG9hZEVycm9yRGVzdGluYXRpb24sIHJlc3Bv
bnNlLnVybCgpLCBtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2Fk
ZXJFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0ZpbGVE
b3dubG9hZGVyRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYxNzg0MC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmls
ZURvd25sb2FkZXJFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlRG93bmxvYWRlckVm
bC5oIgotCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NPd25QdHI8RmlsZURv
d25sb2FkZXJFZmw+IEZpbGVEb3dubG9hZGVyRWZsOjpjcmVhdGUoRG93bmxvYWQqIGRvd25sb2Fk
KQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZURvd25sb2FkZXJFZmwoZG93bmxvYWQp
KTsKLX0KLQotRmlsZURvd25sb2FkZXJFZmw6OkZpbGVEb3dubG9hZGVyRWZsKERvd25sb2FkKiBk
b3dubG9hZCkKLSAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCi17Ci0gICAgQVNTRVJUKGRvd25s
b2FkKTsKLX0KLQotRmlsZURvd25sb2FkZXJFZmw6On5GaWxlRG93bmxvYWRlckVmbCgpCi17Ci19
Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJFZmw6OnN0YXJ0KFdlYlBhZ2UqLCBSZXNvdXJjZVJlcXVl
c3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJF
Zmw6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2Fk
ZXJFZmw6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCwg
aW50KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJF
Zmw6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBGaWxlRG93bmxvYWRlckVmbDo6ZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLWJvb2wgRmlsZURvd25sb2FkZXJFZmw6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKFJlc291cmNlSGFuZGxlKikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRmls
ZURvd25sb2FkZXJFZmw6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIEZpbGVEb3dubG9hZGVyRWZsOjpkaWRDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZpbGVEb3dubG9h
ZGVyRWZsOjpyZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RG93bmxvYWRzL2VmbC9GaWxlRG93bmxvYWRlckVmbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4Zjk5OGIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BICAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBGaWxlRG93bmxvYWRlckVmbF9o
Ci0jZGVmaW5lIEZpbGVEb3dubG9hZGVyRWZsX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNv
dXJjZUhhbmRsZTsKLWNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwotY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIERvd25sb2FkOwotY2xhc3MgV2ViUGFnZTsKLQotY2xhc3MgRmlsZURvd25sb2Fk
ZXJFZmwgOiBwdWJsaWMgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbGVEb3dubG9hZGVyRWZsPiBjcmVhdGUoRG93bmxvYWQq
KTsKLSAgICB2aXJ0dWFsIH5GaWxlRG93bmxvYWRlckVmbCgpOwotCi0gICAgdm9pZCBzdGFydChX
ZWJQYWdlKiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0KLSAgICAvLyAgY2FsbGJhY2tz
IGZvciBSZXNvdXJjZUhhbmRsZUNsaWVudCwgd2hpY2ggYXJlIGNhbGxlZCBieSBSZXNvdXJjZUhh
bmRsZQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0
b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgT1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZURvd25sb2FkZXJFZmwoRG93bmxv
YWQqKTsKLQotICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBGaWxlRG93bmxvYWRlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNv
dXBFcnJvcnNHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMjNl
NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG93bmxvYWRTb3Vw
RXJyb3JzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Jlc291cmNlRXJyb3IgcGxh
dGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZh
aWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCit7CisgICAgcmV0
dXJuIGRvd25sb2FkTmV0d29ya0Vycm9yKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9h
ZCwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikpOworfQorCitS
ZXNvdXJjZUVycm9yIHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcmV0
dXJuIGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgbWVzc2FnZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDVjOTZlYmEuLmJiMjk1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAv
RG93bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTI4LDE1ICsyOCwxOCBAQAogI2luY2x1ZGUgIkRv
d25sb2FkLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9FcnJvcnNHdGsuaD4KKyNpbmNsdWRlICJEb3dubG9hZFNvdXBFcnJvcnMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIvZ2kx
OG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw4ICs2
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKIAogICAgICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAp
IHsKLSAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKGRvd25sb2FkTmV0d29ya0Vycm9yKFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkp
KSk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vy
cm9yKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCBy
ZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtNzYsOSArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBib29sIG92ZXJ3cml0ZTsK
ICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJJID0gbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUudXRmOCgpLmRhdGEo
KSwgb3ZlcndyaXRlKTsKICAgICAgICAgaWYgKGRlc3RpbmF0aW9uVVJJLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgR093blB0cjxjaGFyPiBlcnJvck1lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKF8o
IkNhbm5vdCBkZXRlcm1pbmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dl
c3RlZCBmaWxlbmFtZSAlcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKLSAg
ICAgICAgICAgIGRvd25sb2FkRmFpbGVkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25z
ZSwgZXJyb3JNZXNzYWdlLmdldCgpKSk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAg
R093blB0cjxjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKF8oIkNhbm5vdCBkZXRlcm1pbmUg
ZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAlcyIp
LCBzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgICAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0KCkpOworI2Vsc2UKKyAg
ICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDYW5ub3QgZGV0ZXJt
aW5lIGRlc3RpbmF0aW9uIFVSSSBmb3IgZG93bmxvYWQgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUg
Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOworI2VuZGlmCisgICAgICAgICAgICBkb3dubG9hZEZhaWxl
ZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3JNZXNzYWdl
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODYsNyArOTIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgbV9vdXRwdXRT
dHJlYW0gPSBhZG9wdEdSZWYoZ19maWxlX3JlcGxhY2UoZmlsZS5nZXQoKSwgMCwgVFJVRSwgR19G
SUxFX0NSRUFURV9OT05FLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAgaWYgKCFtX291
dHB1dFN0cmVhbSkgewotICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKHJlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICAgICAgZG93bmxv
YWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IocmVzcG9uc2UsIGVycm9y
LT5tZXNzYWdlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTksNyAr
MTA1LDcgQEAgcHVibGljOgogICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAg
IGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoR19PVVRQVVRfU1RSRUFNKG1fb3V0cHV0U3RyZWFt
LmdldCgpKSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAmZXJyb3Iub3V0UHRyKCkp
OwogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKGRvd25s
b2FkRGVzdGluYXRpb25FcnJvcihSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UuZ2V0KCkpLCBl
cnJvci0+bWVzc2FnZSkpOworICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3du
bG9hZERlc3RpbmF0aW9uRXJyb3IoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlLmdldCgpKSwg
ZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBtX2Rvd25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwpAQCAtMTEzLDcgKzEx
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIHsKLSAgICAgICAgZG93bmxvYWRGYWlsZWQoZG93
bmxvYWROZXR3b3JrRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZv
cm1Eb3dubG9hZE5ldHdvcmtFcnJvcihlcnJvci5lcnJvckNvZGUoKSwgZXJyb3IuZmFpbGluZ1VS
TCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSk7CiAgICAgfQogCiAgICAgdm9pZCB3
YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikKQEAgLTE5OCw0ICsyMDQsMTkgQEAgdm9pZCBEb3du
bG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGF1dGhlbnRpY2F0aW8KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIERvd25sb2Fk
Ojpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBEb3dubG9hZDo6dXNlQ3Jl
ZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwm
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRG93bmxvYWQ6OmNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRT
b3VwRXJyb3JzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cEVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5
ZTIzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25s
b2Fkcy9zb3VwL0Rvd25sb2FkU291cEVycm9ycy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRG93bmxvYWRTb3VwRXJyb3JzX2gKKyNkZWZpbmUgRG93bmxv
YWRTb3VwRXJyb3JzX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkNvcmU6OlJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24pOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkRGVz
dGluYXRpb25FcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBEb3du
bG9hZFNvdXBFcnJvcnNfaAo=
</data>
<flag name="review"
          id="161829"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="161830"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153073</attachid>
            <date>2012-07-18 13:10:52 -0700</date>
            <delta_ts>2012-07-18 14:31:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>91602_use_downloadsoup.patch</filename>
            <type>text/plain</type>
            <size>24920</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMWM1M2MxLi42ZTQ0ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDUg
QEAKIDIwMTItMDctMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEVGTCBzaG91bGQgdXNlIERvd25sb2FkU291cCBp
bnN0ZWFkIG9mIGRlZmluaW5nIERvd25sb2FkRWZsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFJldXNlIFdlYlByb2Nlc3MvRG93bmxv
YWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBpbiBFRkwgcG9ydAorICAgICAgICBpbnN0ZWFkIG9m
IHJlZGVmaW5pbmcgb3VyIG93biBEb3dubG9hZEVmbC5jcHAuIFRoZSBFRkwgcG9ydAorICAgICAg
ICBpcyBhbHNvIHVzaW5nIGxpYnNvdXAgc28gaXQgaXMgYmVzdCB0byBhdm9pZCBjb2RlIGR1cGxp
Y2F0aW9uLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KERvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRF
ZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OnBsYXRmb3JtRG93bmxvYWROZXR3b3JrRXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3Rr
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9y
bURvd25sb2FkTmV0d29ya0Vycm9yKToKKyAgICAgICAgKFdlYktpdDo6cGxhdGZvcm1Eb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAv
RG93bmxvYWRTb3VwLmNwcDogTWFrZSB0aGUgY29kZQorICAgICAgICBjb21waWxlIGZvciBvdGhl
ciBwb3J0cyB0aGFuIEdUSy4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwRXJy
b3JzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKworMjAxMi0wNy0xOCAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCiAgICAgICAgIFtFRkxdIEFk
ZCBjZW50cmFsIGVycm9yIG1hbmFnZW1lbnQgdG8gRUZMIHBvcnQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTk4CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0K
aW5kZXggM2UyZWNhZS4uOTEwOGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTYzLDYgKzYz
LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lU
R1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0JhdHRlcnkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNj
cmVlbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
biBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMzk5MjkzNS4uNjY2ZTIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC05MjYsNyArOTI2LDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZEF1dGhlbnRp
Y2F0aW9uQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cEVycm9ycy5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFn
ZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCA5OTA0OTVjLi45N2Y3MDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzEs
OCArNzEsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0Nv
b2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKICAgICBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCi0gICAgV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcAotICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL2Vm
bC9GaWxlRG93bmxvYWRlckVmbC5jcHAKKyAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93
bmxvYWRTb3VwRXJyb3JzRWZsLmNwcAorICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcAogCiAgICAgV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc0VmbC5jcHAKICAg
ICBXZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKLSAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsIgorICAgICIke1dFQktJVDJfRElS
fS9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9zb3VwIgogICAgICIke1dF
QktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDI2ODhiNzIuLmQ3NTEw
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aApAQCAtMzgsNyArMzgsNyBAQCBPQkpDX0NMQVNTIE5TVVJMRG93bmxvYWQ7CiBPQkpDX0NMQVNT
IFdLRG93bmxvYWRBc0RlbGVnYXRlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KICNl
bmRpZgpAQCAtNDcsMTAgKzQ3LDYgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxEb3dubG9hZFByaXYuaD4KICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oRUZMKQotI2luY2x1ZGUgPEZpbGVEb3dubG9hZGVyRWZsLmg+Ci0jZW5kaWYKLQog
bmFtZXNwYWNlIENvcmVJUEMgewogICAgIGNsYXNzIERhdGFSZWZlcmVuY2U7CiB9CkBAIC03Mywx
MCArNjksNiBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUXRGaWxlRG93bmxvYWRlcjsKICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oRUZMKQotY2xhc3MgRmlsZURvd25sb2FkZXJFZmw7Ci0jZW5kaWYK
LQogY2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlcjxEb3dubG9h
ZD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkKTsKIHB1YmxpYzoKQEAgLTE1
MCwxMyArMTQyLDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgUXRGaWxlRG93
bmxvYWRlciogbV9xdERvd25sb2FkZXI7CiAjZW5kaWYKLSNpZiBQTEFURk9STShHVEspCisjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgT3duUHRyPFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZT4gbV9yZXNvdXJjZUhhbmRsZTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEVG
TCkKLSAgICBPd25QdHI8RmlsZURvd25sb2FkZXJFZmw+IG1fZmlsZURvd25sb2FkZXI7Ci0jZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZEVmbC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDk4MjhjMmIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRG93bmxvYWQuaCIKLQotI2luY2x1ZGUgIkZpbGVEb3dubG9hZGVyRWZsLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgRG93bmxvYWQ6OnN0YXJ0KFdlYlBhZ2Uq
IGluaXRpYXRpbmdXZWJQYWdlKQotewotICAgIG1fZmlsZURvd25sb2FkZXIgPSBGaWxlRG93bmxv
YWRlckVmbDo6Y3JlYXRlKHRoaXMpOwotICAgIG1fZmlsZURvd25sb2FkZXItPnN0YXJ0KGluaXRp
YXRpbmdXZWJQYWdlLCBtX3JlcXVlc3QpOwotfQotCi12b2lkIERvd25sb2FkOjpzdGFydFdpdGhI
YW5kbGUoV2ViUGFnZSogaW5pdGlhdGluZ1BhZ2UsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpkaWREZWNpZGVEZXN0aW5hdGlvbihjb25z
dCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtRGlkRmluaXNoKCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIERvd25sb2FkOjpyZWNlaXZlZENyZWRl
bnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0
Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBEb3dubG9hZDo6
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQg
RG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxv
YWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci19Ci0KLXZvaWQgRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2Vm
bC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDFiYTU4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEb3dubG9hZFNvdXBFcnJvcnMuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRXJy
b3JzRWZsLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKGludCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbikKK3sKKyAgICByZXR1cm4gZG93bmxvYWROZXR3b3JrRXJyb3IoUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpbkRvd25sb2FkLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKSk7Cit9CisKK1Jlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZERlc3Rp
bmF0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHJlc3Bv
bnNlLCBtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2FkZXJFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0ZpbGVEb3dubG9h
ZGVyRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYxNzg0MC4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25s
b2FkZXJFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGaWxlRG93bmxvYWRlckVmbC5oIgot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NPd25QdHI8RmlsZURvd25sb2Fk
ZXJFZmw+IEZpbGVEb3dubG9hZGVyRWZsOjpjcmVhdGUoRG93bmxvYWQqIGRvd25sb2FkKQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmlsZURvd25sb2FkZXJFZmwoZG93bmxvYWQpKTsKLX0K
LQotRmlsZURvd25sb2FkZXJFZmw6OkZpbGVEb3dubG9hZGVyRWZsKERvd25sb2FkKiBkb3dubG9h
ZCkKLSAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCi17Ci0gICAgQVNTRVJUKGRvd25sb2FkKTsK
LX0KLQotRmlsZURvd25sb2FkZXJFZmw6On5GaWxlRG93bmxvYWRlckVmbCgpCi17Ci19Ci0KLXZv
aWQgRmlsZURvd25sb2FkZXJFZmw6OnN0YXJ0KFdlYlBhZ2UqLCBSZXNvdXJjZVJlcXVlc3QmKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJFZmw6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJFZmw6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCwgaW50KQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgRmlsZURvd25sb2FkZXJFZmw6OmRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCi17Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLX0KLQotdm9pZCBGaWxlRG93bmxvYWRlckVmbDo6ZGlkRmFpbChSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLWJvb2wgRmlsZURvd25sb2FkZXJFZmw6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJl
c291cmNlSGFuZGxlKikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRmlsZURvd25s
b2FkZXJFZmw6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQotCi12b2lkIEZpbGVEb3dubG9hZGVyRWZsOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIEZpbGVEb3dubG9hZGVyRWZs
OjpyZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxv
YWRzL2VmbC9GaWxlRG93bmxvYWRlckVmbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQ4Zjk5OGIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvZWZsL0ZpbGVEb3dubG9hZGVyRWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BICAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBGaWxlRG93bmxvYWRlckVmbF9oCi0jZGVm
aW5lIEZpbGVEb3dubG9hZGVyRWZsX2gKLQotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJv
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZUhh
bmRsZTsKLWNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIERvd25sb2FkOwotY2xhc3MgV2ViUGFnZTsKLQotY2xhc3MgRmlsZURvd25sb2FkZXJFZmwg
OiBwdWJsaWMgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQgewotcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPEZpbGVEb3dubG9hZGVyRWZsPiBjcmVhdGUoRG93bmxvYWQqKTsKLSAg
ICB2aXJ0dWFsIH5GaWxlRG93bmxvYWRlckVmbCgpOwotCi0gICAgdm9pZCBzdGFydChXZWJQYWdl
KiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0KLSAgICAvLyAgY2FsbGJhY2tzIGZvciBS
ZXNvdXJjZUhhbmRsZUNsaWVudCwgd2hpY2ggYXJlIGNhbGxlZCBieSBSZXNvdXJjZUhhbmRsZQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIGRvdWJsZSBmaW5pc2hUaW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikg
T1ZFUlJJREU7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZURvd25sb2FkZXJFZmwoRG93bmxvYWQqKTsK
LQotICAgIERvd25sb2FkKiBtX2Rvd25sb2FkOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBGaWxlRG93bmxvYWRlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBFcnJv
cnNHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMjNlNmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsv
RG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG93bmxvYWRTb3VwRXJyb3Jz
LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Jlc291cmNlRXJyb3IgcGxhdGZvcm1E
b3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdV
UkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCit7CisgICAgcmV0dXJuIGRv
d25sb2FkTmV0d29ya0Vycm9yKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Eb3dubG9hZCwgZXJy
b3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikpOworfQorCitSZXNvdXJj
ZUVycm9yIHBsYXRmb3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIGRv
d25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgbWVzc2FnZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
b3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDVjOTZlYmEuLmJiMjk1ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxv
YWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHAKQEAgLTI4LDE1ICsyOCwxOCBAQAogI2luY2x1ZGUgIkRvd25sb2Fk
LmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9FcnJv
cnNHdGsuaD4KKyNpbmNsdWRlICJEb3dubG9hZFNvdXBFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFU
Rk9STShHVEspCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw4ICs2Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKIAogICAgICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKLSAg
ICAgICAgICAgIGRvd25sb2FkRmFpbGVkKGRvd25sb2FkTmV0d29ya0Vycm9yKFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW5Eb3dubG9hZCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpKSk7Cisg
ICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25sb2FkTmV0d29ya0Vycm9yKHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCByZXNwb25z
ZS5odHRwU3RhdHVzVGV4dCgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtNzYsOSArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBib29sIG92ZXJ3cml0ZTsKICAgICAg
ICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJJID0gbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgb3Zl
cndyaXRlKTsKICAgICAgICAgaWYgKGRlc3RpbmF0aW9uVVJJLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgR093blB0cjxjaGFyPiBlcnJvck1lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKF8oIkNhbm5v
dCBkZXRlcm1pbmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBm
aWxlbmFtZSAlcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICAgICAg
ICAgIGRvd25sb2FkRmFpbGVkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJy
b3JNZXNzYWdlLmdldCgpKSk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICAgICAgR093blB0
cjxjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKF8oIkNhbm5vdCBkZXRlcm1pbmUgZGVzdGlu
YXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAlcyIpLCBzdWdn
ZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgICAgICBTdHJpbmcgZXJyb3JN
ZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0KCkpOworI2Vsc2UKKyAgICAgICAg
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJDYW5ub3QgZGV0ZXJtaW5lIGRl
c3RpbmF0aW9uIFVSSSBmb3IgZG93bmxvYWQgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIiwgc3Vn
Z2VzdGVkRmlsZW5hbWUpOworI2VuZGlmCisgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0
Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3JNZXNzYWdlKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODYsNyArOTIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgbV9vdXRwdXRTdHJlYW0g
PSBhZG9wdEdSZWYoZ19maWxlX3JlcGxhY2UoZmlsZS5nZXQoKSwgMCwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAgaWYgKCFtX291dHB1dFN0
cmVhbSkgewotICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQoZG93bmxvYWREZXN0aW5hdGlvbkVy
cm9yKHJlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICAgICAgZG93bmxvYWRGYWls
ZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IocmVzcG9uc2UsIGVycm9yLT5tZXNz
YWdlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTksNyArMTA1LDcg
QEAgcHVibGljOgogICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGdfb3V0
cHV0X3N0cmVhbV93cml0ZV9hbGwoR19PVVRQVVRfU1RSRUFNKG1fb3V0cHV0U3RyZWFtLmdldCgp
KSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAmZXJyb3Iub3V0UHRyKCkpOwogICAg
ICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKGRvd25sb2FkRGVz
dGluYXRpb25FcnJvcihSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UuZ2V0KCkpLCBlcnJvci0+
bWVzc2FnZSkpOworICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlLmdldCgpKSwgZXJyb3It
Pm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX2Rv
d25sb2FkLT5kaWRSZWNlaXZlRGF0YShieXRlc1dyaXR0ZW4pOwpAQCAtMTEzLDcgKzExOSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogICAgIHsKLSAgICAgICAgZG93bmxvYWRGYWlsZWQoZG93bmxvYWRO
ZXR3b3JrRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3du
bG9hZE5ldHdvcmtFcnJvcihlcnJvci5lcnJvckNvZGUoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSk7CiAgICAgfQogCiAgICAgdm9pZCB3YXNCbG9j
a2VkKFJlc291cmNlSGFuZGxlKikKQEAgLTE5OCw0ICsyMDQsMTkgQEAgdm9pZCBEb3dubG9hZDo6
cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW8KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIERvd25sb2FkOjpjb250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBEb3dubG9hZDo6dXNlQ3JlZGVudGlh
bChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwRXJy
b3JzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2Fk
U291cEVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZTIzZTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cEVycm9ycy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRG93bmxvYWRTb3VwRXJyb3JzX2gKKyNkZWZpbmUgRG93bmxvYWRTb3Vw
RXJyb3JzX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvcmU6
OlJlc291cmNlRXJyb3IgcGxhdGZvcm1Eb3dubG9hZE5ldHdvcmtFcnJvcihpbnQgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24pOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRp
b25FcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBEb3dubG9hZFNv
dXBFcnJvcnNfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>