<?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>128169</bug_id>
          
          <creation_ts>2014-02-04 02:27:35 -0800</creation_ts>
          <short_desc>[SOUP] Remove custom URI schemes implementation</short_desc>
          <delta_ts>2014-10-10 05:50:06 -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>Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>128177</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>p.jacquemart</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976257</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-02-04 02:27:35 -0800</bug_when>
    <thetext>In favor of using custom protocols. All ports based on soup should switch to custom protocols, now that there&apos;s a soup implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040572</commentid>
    <comment_count>1</comment_count>
      <attachid>239544</attachid>
    <who name="Pascal Jacquemart">p.jacquemart</who>
    <bug_when>2014-10-09 09:37:38 -0700</bug_when>
    <thetext>Created attachment 239544
Checking if we can fully remove this CUSTOM_PROTOCOLS flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040707</commentid>
    <comment_count>2</comment_count>
    <who name="Pascal Jacquemart">p.jacquemart</who>
    <bug_when>2014-10-09 15:06:04 -0700</bug_when>
    <thetext>Do you think we could safely remove this CUSTOM_PROTOCOLS compilation switch?
Shall we ask first on the mailing list if anyone would object?
I have serious doubts about the Win bot. Would windows port be affected by this cleanup?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040818</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-09 23:21:37 -0700</bug_when>
    <thetext>Pascal, thanks for working on this. What I&apos;m sure is that we can remove the old soup implementation, which is what this bug is about. So, I would submit a patch here to remove the soup code, and file a new bug report for the flag removal, sending an email to webkit-dev as well, to let everybody know and in case someone may object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040871</commentid>
    <comment_count>4</comment_count>
      <attachid>239614</attachid>
    <who name="Pascal Jacquemart">p.jacquemart</who>
    <bug_when>2014-10-10 03:19:45 -0700</bug_when>
    <thetext>Created attachment 239614
Remove custom URI schemes implementation

At least I am glad to see that all ports can now compile with this CUSTOM_PROTOCOLS flag removal
This patch removes old custom URI schemes implementation, still keeping the CUSTOM_PROTOCOLS flag

The policy applied is as follow:
#if USE(SOUP) &amp;&amp; !ENABLE(CUSTOM_PROTOCOLS) -&gt; Remove
#if !ENABLE(CUSTOM_PROTOCOLS) inside a soup related file -&gt; Remove
#if USE(SOUP) &amp;&amp; ENABLE(CUSTOM_PROTOCOLS) -&gt; Keep
#if ENABLE(CUSTOM_PROTOCOLS) -&gt; keep</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040901</commentid>
    <comment_count>5</comment_count>
      <attachid>239614</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 05:49:59 -0700</bug_when>
    <thetext>Comment on attachment 239614
Remove custom URI schemes implementation

Clearing flags on attachment: 239614

Committed r174584: &lt;http://trac.webkit.org/changeset/174584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040902</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-10 05:50:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239544</attachid>
            <date>2014-10-09 09:37:38 -0700</date>
            <delta_ts>2014-10-10 03:19:45 -0700</delta_ts>
            <desc>Checking if we can fully remove this CUSTOM_PROTOCOLS flag</desc>
            <filename>0001-Removing-CUSTOM_PROTOCOLS-compilation-switch.patch</filename>
            <type>text/plain</type>
            <size>65437</size>
            <attacher name="Pascal Jacquemart">p.jacquemart</attacher>
            
              <data encoding="base64">RnJvbSBmMTQ3NTUyZTdjYWU5MjJhYTgwMWY3ZjRhMTY5MWQwZWJjZWYwODQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiAicC5qYWNxdWVtYXJ0IiA8cC5qYWNxdWVtYXJ0QHNhbXN1bmcu
Y29tPgpEYXRlOiBUaHUsIDkgT2N0IDIwMTQgMTc6MzQ6NDIgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBSZW1vdmluZyBDVVNUT01fUFJPVE9DT0xTIGNvbXBpbGF0aW9uIHN3aXRjaAoKLS0tCiBDaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKwog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcw
ICsrKysrKysKIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCAgIHwgICAgMiAtCiAuLi4vQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gICAg
ICAgICAgICB8ICAgIDQgLQogLi4uL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaCAgICAgICAgfCAgICA0IC0KIC4uLi9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMu
aW4gICAgICAgICAgICAgIHwgICAgNCAtCiAuLi4vc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJ
bXBsLmNwcCAgICAgICAgICAgICB8ICAgIDQgLQogLi4uL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VySW1wbC5oICAgICAgICAgICAgICAgfCAgICA0IC0KIC4uLi9zb3VwL0N1c3RvbVByb3RvY29s
TWFuYWdlclNvdXAuY3BwICAgICAgICAgICAgIHwgICAgNCAtCiAuLi4vTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgICB8ICAgIDQgLQogLi4uL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAgICAgfCAgICAyIC0KIC4uLi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgICAgICAgIHwgICAxMSAtLQogLi4uL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAgfCAgICA1IC0KIC4u
Li9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCAgIHwgICAgNCAt
CiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcCB8ICAg
NDEgLS0tLS0KIC4uLi9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5j
cHAgIHwgICAgOSAtCiAuLi4vVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFn
ZXIuY3BwICB8ICAgNTcgLS0tLS0tCiAuLi4vQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmggICB8ICAgIDQgLQogLi4uL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluICAgICAgICAgfCAgICA0IC0KIC4uLi9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNYWMubW0gICAgICAgICAgIHwgICAgNCAtCiAuLi4vc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwICAgICAgICB8ICAgIDQgLQogLi4uL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwICAgfCAgICA0IC0KIC4uLi9zb3VwL1dlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggICAgIHwgICAgNCAtCiAuLi4vV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwICB8ICAgIDQgLQogLi4uL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmggICAgfCAgICA0IC0KIC4u
Li9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAgICAgIHwgICAgMiAt
CiAuLi4vVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oICAgICAgICB8ICAg
IDggKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCAgICAgICAgICAg
IHwgICAxNyArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCAgICAgICAg
ICAgICAgfCAgICAzIC0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
ICAgICAgICAgIHwgICAxMSAtLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oICAgICAgICAgICAgfCAgICA0IC0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gIHwgICAgNyAtCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCAgICAgICB8ICAgIDIgLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0gICAgICB8ICAgIDQgLQogLi4uL1VJUHJvY2Vzcy9z
b3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgfCAgIDQyIC0tLS0tCiAuLi4vVUlQ
cm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwICB8ICAxMjggLS0tLS0t
LS0tLS0tLQogLi4uL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4g
ICAgfCAgIDI1IC0tLQogU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oICAgICAgICAgICAg
ICAgICAgICAgfCAgICAzIC0KIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgICAgICAgICAgIHwgICAxMSAtLQogLi4uL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWMuY3BwICAgfCAgIDEzIC0tCiAuLi4vV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0R2VuZXJpYy5oICAgICB8ICAgIDggKy0KIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAgIHwgICAgOSAtCiAuLi4vV2ViUHJvY2Vzcy9zb3Vw
L1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAgICAgICB8ICAxOTQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIC4uLi9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5tZXNzYWdlcy5pbiAgICAgICAgIHwg
ICAyOCAtLS0KIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMSAtCiA0NiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCA3MTQgZGVs
ZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnQuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVz
c2FnZXMuaW4KCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMWJmNTRk
Mi4uMDIxNjIwNyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE0LTEwLTA5ICBQYXNjYWwgSmFjcXVlbWFydCAgPHAuamFjcXVlbWFydEBz
YW1zdW5nLmNvbT4KKworICAgICAgICBSZW1vdmluZyBDVVNUT01fUFJPVE9DT0xTIGNvbXBpbGF0
aW9uIGZsYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyODE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6CisKIDIwMTQtMTAtMDcgIFBhc2NhbCBK
YWNxdWVtYXJ0ICA8cC5qYWNxdWVtYXJ0QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEVu
YWJsZSBjdXN0b20gVVJJIHNjaGVtZXMgd2l0aCBDdXN0b21Qcm90b2NvbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBhMmUyYjk2Yi4uZWMyYTIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE0LTEw
LTA5ICBQYXNjYWwgSmFjcXVlbWFydCAgPHAuamFjcXVlbWFydEBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBSZW1vdmluZyBDVVNUT01fUFJPVE9DT0xTIGNvbXBpbGF0aW9uIGZsYWcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODE2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9D
b2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKiBTaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICog
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9D
dXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmg6CisgICAgICAg
ICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyU291cC5jcHA6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQ
SUNhc3RTb3VwLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291
cC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKToKKyAgICAgICAgKFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9z
b3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpXZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6dW5yZWdpc3Rl
ckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlVVJJUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291
cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9z
b3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYktpdDJQcmVmaXguaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmNwcDoKKyAgICAgICAg
KHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NlbmRBc3luYyk6CisgICAgICAgICh3ZWJraXRTb3Vw
UmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RHZW5lcmljLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlBy
b2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1
ZXN0TWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNv
dXBSZXF1ZXN0TWFuYWdlci5tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKwogMjAxNC0xMC0wOCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
VXNlIHRoZSBQYWdlTG9hZFN0YXRlIG9ic2VydmVyIGFsc28gdG8gbW9uaXRvciB0aXRsZSBhbmQg
ZXN0aW1hdGVkIGxvYWQgcHJvZ3Jlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxM2U2NGM1Li5hOGRkNzhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC03Niw5
ICs3Niw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcygpCiAKICAgICBhZGRTdXBw
bGVtZW50PEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4oKTsKICAgICBhZGRTdXBwbGVtZW50PFdlYkNv
b2tpZU1hbmFnZXI+KCk7Ci0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgYWRkU3Vw
cGxlbWVudDxDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7Ci0jZW5kaWYKIH0KIAogTmV0d29ya1By
b2Nlc3M6On5OZXR3b3JrUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29j
b2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggZmZiNGQxZS4uM2U0M2UyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJDb2NvYS5tbQpAQCAtMjYsOCArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKIAotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xT
KQotCiAjaW1wb3J0ICJDaGlsZFByb2Nlc3MuaCIKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFu
YWdlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0yNzQsNSArMjcyLDMgQEAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IEN1
c3RvbVByb3RvY29sTWFuYWdlcjo6cHJvdG9jb2xGb3JJRCh1aW50NjRfdCBjdXN0b20KIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09M
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBmNGI5NjQ2
Li44MDIzNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCkBA
IC0yNiw4ICsyNiw2IEBACiAjaWZuZGVmIEN1c3RvbVByb3RvY29sTWFuYWdlcl9oCiAjZGVmaW5l
IEN1c3RvbVByb3RvY29sTWFuYWdlcl9oCiAKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
LQogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBs
ZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgpAQCAtMTE5LDYgKzEx
Nyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5B
QkxFKENVU1RPTV9QUk9UT0NPTFMpCi0KICNlbmRpZiAvLyBDdXN0b21Qcm90b2NvbE1hbmFnZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggMjM3NmQ5Mi4uNDVkMDgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yMCw4ICsyMCw2IEBACiAj
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKLQogbWVzc2FnZXMgLT4gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyIHsKICAgICBE
aWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCiAgICAgRGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCkBAIC0zMSw1ICsyOSwzIEBAIG1lc3NhZ2VzIC0+
IEN1c3RvbVByb3RvY29sTWFuYWdlciB7CiAgICAgUmVnaXN0ZXJTY2hlbWUoU3RyaW5nIG5hbWUp
CiAgICAgVW5yZWdpc3RlclNjaGVtZShTdHJpbmcgbmFtZSkKIH0KLQotI2VuZGlmIC8vIEVOQUJM
RShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNwcAppbmRleCA5OGM1NWUxLi5hMzgzYmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9D
dXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmNw
cApAQCAtMjAsOCArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1c3Rv
bVByb3RvY29sTWFuYWdlckltcGwuaCIKIAotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQot
CiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKQEAgLTIwMyw1
ICsyMDEsMyBAQCBHSW5wdXRTdHJlYW0qIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGw6OmZpbmlz
aChHVGFzayogdGFzaywgR0Vycm9yKiogZXJyb3IpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90
b2NvbE1hbmFnZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsLmgKaW5kZXggMWQ0NDI0MS4u
ZTY1ZmQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29s
TWFuYWdlckltcGwuaApAQCAtMjAsOCArMjAsNiBAQAogI2lmbmRlZiBDdXN0b21Qcm90b2NvbE1h
bmFnZXJJbXBsX2gKICNkZWZpbmUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VySW1wbF9oCiAKLSNpZiBF
TkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtNjksNiArNjcsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAotI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotCiAjZW5kaWYgLy8gQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1
c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDZiNzFhYzAuLjUyNDY4ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclNvdXAu
Y3BwCkBAIC0yMCw4ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLQog
I2luY2x1ZGUgIkNoaWxkUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdl
ckltcGwuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgpAQCAt
MTA5LDUgKzEwNywzIEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggNWZhMzAzMi4uMzljYjdjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTAsOSArNTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29k
ZXIpIGNvbgogICAgIGVuY29kZXIgPDwgcGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Np
b247Ci0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgZW5jb2RlciA8PCB1cmxTY2hl
bWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sczsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGVuY29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CiAgICAgZW5jb2RlciA8PCB1
aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwpAQCAtOTQsMTAgKzkyLDggQEAgYm9vbCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBOZXQKICNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3Vs
ZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBF
TkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51
cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnBhcmVudFByb2Nlc3NOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggM2EwZjRjZDEuLjM4ODg0Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNjksOSArNjksNyBAQCBzdHJ1Y3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAgICAgYm9vbCBzaG91bGRV
c2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykK
ICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
czsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIHBhcmVudFByb2Nl
c3NOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDFkOGY5ODcuLmRhNzEzYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTg0LDEzICs4NCw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2Fj
aGVQYXJ0aXRpb25lZDsKICNlbmRpZgotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAg
IGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7Ci0jZW5k
aWYKICNpZiBVU0UoU09VUCkKLSNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAgZW5j
b2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZDsKLSNlbmRpZgogICAgIGVuY29kZXIgPDwgY29v
a2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShjb29raWVBY2NlcHRQb2xpY3kp
OwpAQCAtMTk1LDE1ICsxOTAsOSBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvYwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0
aXRpb25lZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgotI2lmIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hl
bWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZgogI2lmIFVTRShTT1VQKQotI2lmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50
U3RvcmFnZVR5cGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNDdhOWVlZS4uMjc5NzlmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBA
IC05MSwxMyArOTEsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAj
aWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZDsKICNlbmRpZgotI2lmIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzOwotI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0jaWYgIUVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQotICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkOwot
I2VuZGlmCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICB1aW50
MzJfdCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU7CiAgICAgSFRUUENvb2tpZUFjY2VwdFBv
bGljeSBjb29raWVBY2NlcHRQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKaW5kZXggMDMzMzMzNS4uZDc3MjY3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNv
dXAuaApAQCAtMzUsMTEgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjsKIGNsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5OwogCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIpCi0jZWxzZQotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cFJl
cXVlc3RNYW5hZ2VyUmVmLCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSkKLSNlbmRpZgogCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29u
dGV4dFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250
ZXh0U291cC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDIxZjkuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291
cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXS0NvbnRleHRTb3VwLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCi0KLS8vIFN1cHBsZW1lbnRzCi0jaW5jbHVkZSAiV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgV0tDb250ZXh0R2V0U291cFJlcXVlc3RNYW5hZ2VyKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmKQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1
cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCkpOwotfQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IDk1YjFmODEuLmQ1
ZDM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIu
Y3BwCkBAIC0zMywxOSArMzMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tUeXBl
SUQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpCiB7Ci0jaWYg
RU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgcmV0dXJuIHRvQVBJKFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpBUElUeXBlKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0j
ZW5kaWYKIH0KIAogdm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xp
ZW50KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5h
Z2VyUmVmLCBjb25zdCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFz
ZSogd2tDbGllbnQpCiB7Ci0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgdG9JbXBs
KHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oc291cFJlcXVlc3RNYW5hZ2VyUmVmKTsKLSAgICBVTlVTRURf
UEFSQU0od2tDbGllbnQpOwotI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZmYyOGMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
LVdLVHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OkFQSVR5cGUpOwotfQotCi12b2lkIFdL
U291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBS
ZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3
a0NsaWVudCkKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6
ZUNsaWVudCh3a0NsaWVudCk7Ci19Ci0KLXZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3Rl
clVSSVNjaGVtZShXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYs
IFdLU3RyaW5nUmVmIHNjaGVtZVJlZikKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2Vy
UmVmKS0+cmVnaXN0ZXJVUklTY2hlbWUodG9XVEZTdHJpbmcoc2NoZW1lUmVmKSk7Ci19Ci0KLXZv
aWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tEYXRhUmVmIGRhdGEsIHVpbnQ2NF90
IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBlUmVmLCB1aW50NjRfdCByZXF1ZXN0
SUQpCi17Ci0gICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPmRpZEhhbmRsZVVSSVJl
cXVlc3QodG9JbXBsKGRhdGEpLCBjb250ZW50TGVuZ3RoLCB0b1dURlN0cmluZyhtaW1lVHlwZVJl
ZiksIHJlcXVlc3RJRCk7Ci19Ci0KLXZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZl
VVJJUmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2Vy
UmVmLCBXS0RhdGFSZWYgZGF0YSwgdWludDY0X3QgcmVxdWVzdElEKQotewotICAgIHRvSW1wbChz
b3VwUmVxdWVzdE1hbmFnZXJSZWYpLT5kaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEodG9JbXBsKGRh
dGEpLCByZXF1ZXN0SUQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaAppbmRleCAyNWE5NjcwLi5lYTQ4NjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaApAQCAtMjYsOCAr
MjYsNiBAQAogI2lmbmRlZiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eV9oCiAjZGVmaW5lIEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5X2gKIAotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xT
KQotCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTY3LDYgKzY1LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNl
bmRpZiAvLyBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLQogI2VuZGlmIC8vIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9D
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3YWVmMGUwLi45M2Mw
YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMCwxMSArMjAsNyBAQAogIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NP
TFMpCi0KIG1lc3NhZ2VzIC0+IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IHsKICAgICBTdGFy
dExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QpCiAgICAgU3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkK
IH0KLQotI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0K
aW5kZXggN2QwZWZjYS4uNTFmMTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCkBAIC0yNiw4ICsyNiw2
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5LmgiCiAKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLQogI2ltcG9ydCAiQ2hpbGRQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0xNDksNSArMTQ3LDMgQEAgdm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9D
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IGE2YjQzN2QuLmY4YmYyZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjAsOCArMjAsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAKLSNpZiBF
TkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLQogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC01MCw1ICs0OCwzIEBAIHZv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKENVU1RPTV9QUk9UT0NPTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKaW5k
ZXggNTllMjU4OS4uNTYyMWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApA
QCAtMjAsOCArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RP
Q09MUykKLQogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKQEAgLTE0Niw1ICsxNDQs
MyBAQCB2b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvYwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmgKaW5kZXggYTE0MDkyNS4uMmUxYjlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oCkBAIC0yMCw4ICsyMCw2IEBACiAjaWZuZGVmIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyX2gKICNkZWZpbmUgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaAogCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0KICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgiCkBAIC04Myw2ICs4MSw0IEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gRU5BQkxFKENV
U1RPTV9QUk9UT0NPTFMpCi0KICNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKaW5k
ZXggODBkNDNjNS4uMzVhYWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50LmNwcApAQCAtMjAsOCArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgiCiAKLSNpZiBF
TkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyhXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogc291cFJlcXVlc3RNYW5hZ2VyLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCkBAIC00MSw1ICszOSwzIEBAIHZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaAppbmRleCBlMTQzMzIxLi5k
ZWJiMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKQEAgLTIw
LDggKzIwLDYgQEAKICNpZm5kZWYgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJD
bGllbnRfaAogI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVu
dF9oCiAKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLQogI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIuaCIKQEAgLTQ5LDYgKzQ3LDQgQEAgcHVibGljOgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotCiAj
ZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA0OTY2N2I5Li4zNjBkOTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
NTUsOSArNTUsNyBAQCBQYXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0JiB3ZWJDb250ZQogTmV0d29ya1Byb2Nlc3NQcm94
eTo6TmV0d29ya1Byb2Nlc3NQcm94eShXZWJDb250ZXh0JiB3ZWJDb250ZXh0KQogICAgIDogbV93
ZWJDb250ZXh0KHdlYkNvbnRleHQpCiAgICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVz
dHMoMCkKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICAsIG1fY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkodGhpcywgd2ViQ29udGV4dCkKLSNlbmRpZgogewogICAgIGNvbm5lY3Qo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAppbmRleCBjOTJiOThmLi44ZTI1OWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBA
IC0yOSwxNSArMjksMTIgQEAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCiAjaW5jbHVk
ZSAiQ2hpbGRQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0jaW5jbHVkZSAiQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaCIKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1
ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKICNlbmRpZgpAQCAtOTgsMTAgKzk1LDcgQEAgcHJpdmF0
ZToKICAgICBEZXF1ZTxSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVw
bGllczsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZFByb3h5TWFwPiBtX2Rvd25sb2Fk
UHJveHlNYXA7Ci0KLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OwotI2VuZGlmCiAg
ICAgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzQXNzZXJ0
aW9uPiBtX2Fzc2VydGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApp
bmRleCBiNGQ1Yzc4Li4zYjEyYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSUhpc3RvcnlDbGllbnQuaCIKKyNp
bmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCkBAIC05MSwyMCArOTIsMTIgQEAKICNpbmNsdWRlICJTZXJ2aWNlc0NvbnRy
b2xsZXIuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0jaW5jbHVk
ZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVj
dG9yLmg+CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9D
T0xTKQogI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0j
ZWxzZQotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0jZW5kaWYKICNl
bmRpZgogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMjEwLDExICsyMDMsNyBAQCBXZWJDb250ZXh0OjpX
ZWJDb250ZXh0KFdlYkNvbnRleHRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgYWRk
U3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXJQcm94eT4oKTsKICNlbmRpZgogI2lmIFVTRShT
T1VQKQotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIGFkZFN1cHBsZW1lbnQ8V2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCk7Ci0jZWxzZQotICAgIGFkZFN1cHBs
ZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+KCk7Ci0jZW5kaWYKICNlbmRpZgogI2lm
IEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBhZGRTdXBwbGVtZW50PFdlYkJhdHRlcnlNYW5h
Z2VyUHJveHk+KCk7CkBAIC0xMDE5LDcgKzEwMDgsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1l
QXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpKTsKIH0KIAotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9D
T0xTKQogSGFzaFNldDxTdHJpbmc+JiBXZWJDb250ZXh0OjpnbG9iYWxVUkxTY2hlbWVzV2l0aEN1
c3RvbVByb3RvY29sSGFuZGxlcnMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PFN0cmluZz4+IHNldDsKQEAgLTEwNDcsNyArMTAzNSw2IEBAIHZvaWQgV2ViQ29udGV4dDo6
dW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhj
b25zdCBTCiAgICAgZm9yIChhdXRvKiBjb250ZXh0IDogYWxsQ29udGV4dHMoKSkKICAgICAgICAg
Y29udGV4dC0+dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZUxvd2VyKTsK
IH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKIHZvaWQgV2ViQ29u
dGV4dDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJiB1
cmxTY2hlbWUpCkBAIC0xNDA1LDcgKzEzOTIsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldFBsdWdJ
bkF1dG9TdGFydE9yaWdpbnNGaWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUoSW1tdQog
ICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuc2V0QXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmlu
Z091dEVudHJpZXNBZGRlZEFmdGVyVGltZShkaWN0aW9uYXJ5LCB0aW1lKTsKIH0KIAotI2lmIEVO
QUJMRShDVVNUT01fUFJPVE9DT0xTKQogdm9pZCBXZWJDb250ZXh0OjpyZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIHNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OlJlZ2lzdGVyU2No
ZW1lKHNjaGVtZSkpOwpAQCAtMTQxNSw3ICsxNDAxLDYgQEAgdm9pZCBXZWJDb250ZXh0Ojp1bnJl
Z2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAg
ICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6VW5yZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiB2b2lkIFdlYkNvbnRleHQ6OnBsdWdpbkluZm9TdG9yZURpZExv
YWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSogc3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAppbmRleCA5ZTIzNDBhLi5jYmNiYzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmgKQEAgLTMzNCwxNSArMzM0LDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpIGNvbnN0OwogICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKLQotI2lm
IEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIHZvaWQgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0
b21Qcm90b2NvbChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBIYXNoU2V0PFN0cmlu
Zz4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygpOwogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhh
bmRsZXJzKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJHbG9iYWxV
UkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJik7Ci0j
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc1N1cHBy
ZXNzaW9uU3RhdGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMTkwYzkxNS4uZmI2ZDU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExMywxMCArMTEzLDYgQEAKICNpbmNsdWRlICJBcmd1bWVu
dENvZGVyc0d0ay5oIgogI2VuZGlmCiAKLSNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01f
UFJPVE9DT0xTKQotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0jZW5k
aWYKLQogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHku
aCIKICNlbmRpZgpAQCAtNTA0MywxMyArNTAzOSw2IEBAIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90
PiBXZWJQYWdlUHJveHk6OnRha2VWaWV3U25hcHNob3QoKQogfQogI2VuZGlmCiAKLSNpZiBVU0Uo
U09VUCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkK
LXsKLSAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5PigpLT5kaWRSZWNlaXZlVVJJUmVxdWVzdCh1cmlTdHJpbmcsIHRoaXMsIHJlcXVl
c3RJRCk7Ci19Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlvblVu
ZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNl
bGVjdGlvbkVuZCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBs
YWNlbWVudFJhbmdlRW5kKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IGYwYjc4MjcuLmMwYzBhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTEyNTMsMTAgKzEyNTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5
UmV2ZWFsZWRTZWxlY3Rpb24oKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKLSNpZiBVU0Uo
U09VUCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotICAgIHZvaWQgZGlkUmVjZWl2ZVVS
SVJlcXVlc3QoU3RyaW5nIHVyaVN0cmluZywgdWludDY0X3QgcmVxdWVzdElEKTsKLSNlbmRpZgot
CiAgICAgdm9pZCBjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKTsKIAogICAgIHZvaWQgcGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBXZWJDb3JlOjpE
cmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggMGY0NTVlNy4uOWVjZThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNjYsMTMgKzM2Niw2IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBW
ZWN0b3I8U3RyaW5nPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5n
IG5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiByZXN1bHQpCiAKLSNpZiBVU0UoU09VUCkKLSNpZiAh
RU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAgIyBTb3VwIGN1c3RvbSBVUkkgcmVxdWVzdCBt
ZXNzYWdlcwotICAgIERpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7Ci0jZW5kaWYKLSNlbmRpZgotCiAgICAgU2F2ZVBERlRvRmlsZUluRG93
bmxvYWRzRm9sZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5n
VVJMU3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4
YTZiNTgzLi5iMjBjMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtOTIsOSArOTIsNyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQ
cm94eShXZWJDb250ZXh0JiBjb250ZXh0KQogICAgIDogbV9yZXNwb25zaXZlbmVzc1RpbWVyKHRo
aXMpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbihmYWxzZSkKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09M
UykKICAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkodGhpcywgY29udGV4dCkKLSNl
bmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICwgbV9wcm9jZXNzU3VwcHJlc3Npb25FbmFi
bGVkKGZhbHNlKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKaW5kZXggZWEzNDgwYS4uYjYzZjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJU2Vz
c2lvbi5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
SW5mb1N0b3JlLmgiCkBAIC00MywxMCArNDQsNiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIEVOQUJMRShDVVNUT01fUFJP
VE9DT0xTKQotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCi0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjZW5k
aWYKQEAgLTIyNCwxMCArMjIxLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkUHJveHlNYXA+IG1fZG93bmxvYWRQcm94eU1h
cDsKLQotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAgIEN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk7Ci0jZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fcHJvY2Vzc1N1cHByZXNzaWJs
ZVBhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
CmluZGV4IGNkODhiMDkuLjJmNmI2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTIwOCwxMCArMjA4LDggQEAgdm9pZCBXZWJDb250ZXh0
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmEKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICghbV91c2VzTmV0
d29ya1Byb2Nlc3MpIHsKICNlbmRpZgotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9t
UHJvdG9jb2xIYW5kbGVycygpKQogICAgICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKLSNlbmRpZgogI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgfQogI2VuZGlmCkBAIC0yNDUsMTAgKzI0Myw4IEBA
IHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFt
ZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFt
ZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
YnVuZGxlSWRlbnRpZmllcl07CiAKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9j
b2xIYW5kbGVycygpKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwotI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJz
Lmh0dHBQcm94eSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHN0cmlu
Z0ZvcktleTpXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXldOwogICAgIHBhcmFtZXRlcnMuaHR0
cHNQcm94eSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHN0cmluZ0Zv
cktleTpXZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDBkMDViLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVu
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQ6OmRpZFJl
Y2VpdmVVUklSZXF1ZXN0KFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KiBzb3VwUmVxdWVzdE1h
bmFnZXIsIEFQSTo6VVJMKiB1cmwsIFdlYlBhZ2VQcm94eSogaW5pdGlhaW5nUGFnZSwgdWludDY0
X3QgcmVxdWVzdElEKQotewotICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVVSSVJlcXVlc3Qp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVVUklSZXF1
ZXN0KHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIHRvQVBJKHVybCksIHRvQVBJKGluaXRpYWlu
Z1BhZ2UpLCByZXF1ZXN0SUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50OjpkaWRGYWlsVG9M
b2FkVVJJUmVxdWVzdChXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSogc291cFJlcXVlc3RNYW5h
Z2VyLCB1aW50NjRfdCByZXF1ZXN0SUQpCi17Ci0gICAgaWYgKG1fY2xpZW50LmRpZEZhaWxUb0xv
YWRVUklSZXF1ZXN0KQotICAgICAgICBtX2NsaWVudC5kaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCh0
b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIpLCByZXF1ZXN0SUQsIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDBhZjE4Li4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHkuaCIKLQotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJXZWJD
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jb25zdCBjaGFyKiBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6c3Vw
cGxlbWVudE5hbWUoKQotewotICAgIHJldHVybiAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHki
OwotfQotCi1QYXNzUmVmUHRyPFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PiBXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eShjb250ZXh0KSk7Ci19
Ci0KLVdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94
eShXZWJDb250ZXh0KiBjb250ZXh0KQotICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQoY29udGV4
dCkKLSAgICAsIG1fbG9hZEZhaWxlZChmYWxzZSkKLXsKLSAgICBXZWJDb250ZXh0U3VwcGxlbWVu
dDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotV2ViU291
cFJlcXVlc3RNYW5hZ2VyUHJveHk6On5XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSgpCi17Ci19
Ci0KLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmluaXRpYWxpemVDbGllbnQoY29u
c3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgbV9jbGll
bnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi0vLyBXZWJDb250ZXh0U3VwcGxlbWVudAotCi12
b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKCkKLXsKLX0K
LQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlBy
b2Nlc3NQcm94eSopCi17Ci19Ci0KLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OnJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KCkKLXsKLSAgICBBUEk6Ok9iamVjdDo6cmVmKCk7Ci19Ci0K
LXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1l
bnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwotfQotCi12b2lkIFdlYlNvdXBSZXF1
ZXN0TWFuYWdlclByb3h5OjpyZWdpc3RlclVSSVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkK
LXsKLSAgICBpZiAoIWNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dCgp
LT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6
V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpSZWdpc3RlclVSSVNjaGVtZShzY2hlbWUpKTsKLQotICAg
IEFTU0VSVCghbV9yZWdpc3RlcmVkVVJJU2NoZW1lcy5jb250YWlucyhzY2hlbWUpKTsKLSAgICBt
X3JlZ2lzdGVyZWRVUklTY2hlbWVzLmFwcGVuZChzY2hlbWUpOwotfQotCi12b2lkIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRIYW5kbGVVUklSZXF1ZXN0KGNvbnN0IEFQSTo6RGF0YSog
cmVxdWVzdERhdGEsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLXsKLSAgICBpZiAoIWNvbnRleHQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlNvdXBSZXF1ZXN0TWFuYWdlcjo6RGlkSGFuZGxlVVJJUmVxdWVzdChyZXF1ZXN0RGF0YS0+ZGF0
YVJlZmVyZW5jZSgpLCBjb250ZW50TGVuZ3RoLCBtaW1lVHlwZSwgcmVxdWVzdElEKSk7Ci19Ci0K
LXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0
YShjb25zdCBBUEk6OkRhdGEqIHJlcXVlc3REYXRhLCB1aW50NjRfdCByZXF1ZXN0SUQpCi17Ci0g
ICAgaWYgKCFjb250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2xvYWRGYWls
ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OkRpZFJlY2VpdmVVUklSZXF1ZXN0RGF0
YShyZXF1ZXN0RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLCByZXF1ZXN0SUQpKTsKLX0KLQotdm9pZCBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVVSSVJlcXVlc3QoY29uc3QgU3Ry
aW5nJiB1cmlTdHJpbmcsIFdlYlBhZ2VQcm94eSogaW5pdGlhaW5nUGFnZSwgdWludDY0X3QgcmVx
dWVzdElEKQotewotICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVVSSVJlcXVlc3QodGhpcywg
QVBJOjpVUkw6OmNyZWF0ZSh1cmlTdHJpbmcpLmdldCgpLCBpbml0aWFpbmdQYWdlLCByZXF1ZXN0
SUQpKQotICAgICAgICBkaWRIYW5kbGVVUklSZXF1ZXN0KEFQSTo6RGF0YTo6Y3JlYXRlKDAsIDAp
LmdldCgpLCAwLCBTdHJpbmcoKSwgcmVxdWVzdElEKTsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eTo6ZGlkRmFpbFRvTG9hZFVSSVJlcXVlc3QodWludDY0X3QgcmVxdWVzdElE
KQotewotICAgIG1fbG9hZEZhaWxlZCA9IHRydWU7Ci0gICAgbV9jbGllbnQuZGlkRmFpbFRvTG9h
ZFVSSVJlcXVlc3QodGhpcywgcmVxdWVzdElEKTsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eTo6ZGlkRmFpbFVSSVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLXsKLSAgICBpZiAoIWNvbnRleHQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9sb2FkRmFpbGVkID0gdHJ1ZTsKLSAgICBjb250ZXh0KCkt
PnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpEaWRG
YWlsVVJJUmVxdWVzdChlcnJvciwgcmVxdWVzdElEKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
c291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTgwNThmNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
L2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBT
LkwuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0j
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2Vz
IC0+IFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5IHsKLSAgICBEaWRGYWlsVG9Mb2FkVVJJUmVx
dWVzdCh1aW50NjRfdCByZXF1ZXN0SUQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmluZGV4IDg4
ZDA3MzcuLjkyOTE2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQcmVmaXgu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTQyLDggKzQyLDYgQEAK
IAogI2RlZmluZSBFTkFCTEVfTUVNT1JZX1NBTVBMRVIgMQogCi0jZGVmaW5lIEVOQUJMRV9DVVNU
T01fUFJPVE9DT0xTIDEKLQogI2RlZmluZSBFTkFCTEVfU0hBUkVBQkxFX1JFU09VUkNFIDEKIAog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CkBAIC04MCw3ICs3OCw2
IEBACiAKICNpZiBQTEFURk9STShHVEspCiAjZGVmaW5lIEVOQUJMRV9ORVRXT1JLX1BST0NFU1Mg
MQotI2RlZmluZSBFTkFCTEVfQ1VTVE9NX1BST1RPQ09MUyAxCiAjZW5kaWYKIAogLyogV2hlbiBD
KysgZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQsIHRoZSBDKysgbGlicmFyeSBkZWZpbmVzIHx0cnl8
IGFuZCB8Y2F0Y2h8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA3YzE3MGIwLi4yNzY2NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTEwMCw5ICsxMDAsNyBAQAogI2luY2x1ZGUgIlNlY0l0ZW1TaGltLmgiCiAjZW5k
aWYKIAotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQogI2luY2x1ZGUgIkN1c3RvbVByb3Rv
Y29sTWFuYWdlci5oIgotI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICNp
bmNsdWRlICJXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKQEAgLTEyOCwxMCArMTI2
LDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRp
ZgogCi0jaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLSNpbmNsdWRl
ICJXZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTE5OCwxNSArMTkyLDEwIEBAIFdlYlBy
b2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgYWRkU3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25N
YW5hZ2VyPigpOwogI2VuZGlmCi0jaWYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgYWRk
U3VwcGxlbWVudDxDdXN0b21Qcm90b2NvbE1hbmFnZXI+KCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUo
QkFUVEVSWV9TVEFUVVMpCiAgICAgYWRkU3VwcGxlbWVudDxXZWJCYXR0ZXJ5TWFuYWdlcj4oKTsK
ICNlbmRpZgotI2lmIFVTRShTT1VQKSAmJiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAg
YWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXI+KCk7Ci0jZW5kaWYKICAgICBtX3Bs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5hZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5j
cHAKaW5kZXggNTVjNTAzNy4uZGRlMmY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKQEAgLTIy
LDExICsyMiw2IEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiAhRU5B
QkxFKENVU1RPTV9QUk9UT0NPTFMpCi0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUg
IldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLCB3ZWJraXRfc291
cF9yZXF1ZXN0X2dlbmVyaWMsIFNPVVBfVFlQRV9SRVFVRVNUKQpAQCAtNTEsMjUgKzQ2LDE3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX3JlcXVlc3RfZ2VuZXJpY19pbml0KFdlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCkKIAogc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RH
ZW5lcmljU2VuZEFzeW5jKFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCBHQ2FuY2VsbGFibGUqIGNhbmNl
bGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkK
IHsKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKICAgICBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJJbXBsKiBjdXN0b21Qcm90b2NvbE1hbmFnZXIgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVS
SUNfR0VUX0NMQVNTKHJlcXVlc3QpLT5jdXN0b21Qcm90b2NvbE1hbmFnZXI7CiAgICAgQVNTRVJU
KGN1c3RvbVByb3RvY29sTWFuYWdlcik7CiAgICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zZW5k
KGdfdGFza19uZXcocmVxdWVzdCwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwot
I2Vsc2UKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5zdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0
TWFuYWdlcj4oKS0+c2VuZChnX3Rhc2tfbmV3KHJlcXVlc3QsIGNhbmNlbGxhYmxlLCBjYWxsYmFj
aywgdXNlckRhdGEpKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgR0lucHV0U3RyZWFtKiB3ZWJraXRT
b3VwUmVxdWVzdEdlbmVyaWNTZW5kRmluaXNoKFNvdXBSZXF1ZXN0KiByZXF1ZXN0LCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoZ190YXNrX2lzX3ZhbGlkKHJlc3VsdCwgcmVxdWVzdCksIDApOwotI2lmIEVOQUJMRShDVVNU
T01fUFJPVE9DT0xTKQogICAgIEN1c3RvbVByb3RvY29sTWFuYWdlckltcGwqIGN1c3RvbVByb3Rv
Y29sTWFuYWdlciA9IFdFQktJVF9TT1VQX1JFUVVFU1RfR0VORVJJQ19HRVRfQ0xBU1MocmVxdWVz
dCktPmN1c3RvbVByb3RvY29sTWFuYWdlcjsKICAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyKTsKICAgICByZXR1cm4gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5maW5pc2goR19UQVNLKHJl
c3VsdCksIGVycm9yKTsKLSNlbHNlCi0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1
cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5maW5pc2goR19UQVNLKHJlc3VsdCks
IGVycm9yKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgZ29mZnNldCB3ZWJraXRTb3VwUmVxdWVzdEdl
bmVyaWNHZXRDb250ZW50TGVuZ3RoKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJp
Yy5oCmluZGV4IDVjNWQzYWQuLmVkZjdmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgKQEAgLTIwLDEz
ICsyMCwxMSBAQAogI2lmbmRlZiBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNfaAogI2RlZmluZSBX
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VySW1wbC5oIgorCiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDxsaWJzb3Vw
L3NvdXAuaD4KIAotI2lmIEVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotI2luY2x1ZGUgIkN1c3Rv
bVByb3RvY29sTWFuYWdlckltcGwuaCIKLSNlbmRpZgotCiBHX0JFR0lOX0RFQ0xTCiAKICNkZWZp
bmUgV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMgICAgICAgICAgICAod2Via2l0X3Nv
dXBfcmVxdWVzdF9nZW5lcmljX2dldF90eXBlKCkpCkBAIC00OSw5ICs0Nyw3IEBAIHN0cnVjdCBf
V2ViS2l0U291cFJlcXVlc3RHZW5lcmljIHsKIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RHZW5l
cmljQ2xhc3MgewogICAgIFNvdXBSZXF1ZXN0Q2xhc3MgcGFyZW50OwogCi0jaWYgRU5BQkxFKENV
U1RPTV9QUk9UT0NPTFMpCiAgICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJJbXBsKiBj
dXN0b21Qcm90b2NvbE1hbmFnZXI7Ci0jZW5kaWYKIH07CiAKIEdUeXBlIHdlYmtpdF9zb3VwX3Jl
cXVlc3RfZ2VuZXJpY19nZXRfdHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKaW5kZXggMGFhYTM1Yy4uODRmN2M0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCkBA
IC00NCwxMCArNDQsNiBAQAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKLSNpZiAhRU5BQkxFKENVU1RPTV9QUk9U
T0NPTFMpCi0jaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgiCi0jZW5kaWYKLQogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyB1aW50NjRfdCBnZXRDYWNoZURpc2tGcmVlU2l6ZShT
b3VwQ2FjaGUqIGNhY2hlKQpAQCAtMTcwLDExICsxNjYsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycwogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQogICAgICAgICBz
ZXRTb3VwU2Vzc2lvbkFjY2VwdExhbmd1YWdlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKTsKIAotI2lm
ICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBh
cmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQuc2l6ZSgpOyBpKyspCi0gICAgICAgIHN1cHBs
ZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5yZWdpc3RlclVSSVNjaGVtZShwYXJhbWV0
ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkW2ldKTsKLSNlbmRpZgotCiAgICAgc2V0SWdub3JlVExT
RXJyb3JzKHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzKTsKIAogICAgIFdlYkNvcmU6OmFkZExh
bmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodGhpcywgbGFuZ3VhZ2VDaGFuZ2VkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MWVlNDAuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViU291
cFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVk
ZSAiV2ViRXJyb3JzLmgiCi0jaW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RHZW5lcmljLmgiCi0j
aW5jbHVkZSAiV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oIgotI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldl
YlNvdXBSZXF1ZXN0TWFuYWdlck1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvU291cE5ldHdvcmtTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVNvdXBSZXF1ZXN0SUQoKQotewotICAgIHN0YXRp
YyB1aW50NjRfdCB1bmlxdWVTb3VwUmVxdWVzdElEID0gMTsKLSAgICByZXR1cm4gdW5pcXVlU291
cFJlcXVlc3RJRCsrOwotfQotCi1zdHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGEgewotICAg
IFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdUYXNrKiB0YXNrLCBXZWJLaXRTb3VwUmVxdWVzdEdl
bmVyaWMqIHJlcXVlc3RHZW5lcmljKQotICAgICAgICA6IHRhc2sodGFzaykKLSAgICAgICAgLCBy
ZXF1ZXN0KHJlcXVlc3RHZW5lcmljKQotICAgICAgICAsIGNhbmNlbGxhYmxlKGdfdGFza19nZXRf
Y2FuY2VsbGFibGUodGFzaykpCi0gICAgewotICAgICAgICAvLyBJZiB0aGUgc3RydWN0IGNvbnRh
aW5zIGEgbnVsbCByZXF1ZXN0LCBpdCBpcyBiZWNhdXNlIHRoZSByZXF1ZXN0IGZhaWxlZC4KLSAg
ICAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVChyZXF1ZXN0KSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7Ci0gICAgfQotCi0gICAgfldlYlNvdXBSZXF1
ZXN0QXN5bmNEYXRhKCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXF1ZXN0KQotICAgICAgICAgICAg
Z19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRlcihHX09CSkVDVChyZXF1ZXN0KSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZyZXF1ZXN0KSk7Ci0gICAgfQotCi0gICAgYm9vbCByZXF1ZXN0RmFp
bGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBnX2NhbmNlbGxhYmxlX2lzX2NhbmNlbGxlZChj
YW5jZWxsYWJsZS5nZXQoKSkgfHwgIXJlcXVlc3Q7Ci0gICAgfQotCi0gICAgR1JlZlB0cjxHVGFz
az4gcmVsZWFzZVRhc2soKQotICAgIHsKLSAgICAgICAgR1Rhc2sqIHJldHVyblZhbHVlID0gdGFz
azsKLSAgICAgICAgdGFzayA9IDA7Ci0gICAgICAgIHJldHVybiBhZG9wdEdSZWYocmV0dXJuVmFs
dWUpOwotICAgIH0KLQotICAgIEdUYXNrKiB0YXNrOwotICAgIFdlYktpdFNvdXBSZXF1ZXN0R2Vu
ZXJpYyogcmVxdWVzdDsKLSAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gY2FuY2VsbGFibGU7Ci0g
ICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IHN0cmVhbTsKLX07Ci0KLWNvbnN0IGNoYXIqIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQotewotICAgIHJldHVybiAiV2ViU291
cFJlcXVlc3RNYW5hZ2VyIjsKLX0KLQotV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpXZWJTb3VwUmVx
dWVzdE1hbmFnZXIoV2ViUHJvY2VzcyogcHJvY2VzcykKLSAgICA6IG1fcHJvY2Vzcyhwcm9jZXNz
KQotICAgICwgbV9zY2hlbWVzKGFkb3B0R1JlZihnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1
bmMoZ19mcmVlKSkpCi17Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7
Ci19Ci0KLVdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6fldlYlNvdXBSZXF1ZXN0TWFuYWdlcigpCi17
Ci19Ci0KLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclVSSVNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAobV9zY2hlbWVzLT5sZW4pCi0gICAgICAgIGdf
cHRyX2FycmF5X3JlbW92ZV9pbmRleF9mYXN0KG1fc2NoZW1lcy5nZXQoKSwgbV9zY2hlbWVzLT5s
ZW4gLSAxKTsKLSAgICBnX3B0cl9hcnJheV9hZGQobV9zY2hlbWVzLmdldCgpLCBnX3N0cmR1cChz
Y2hlbWUudXRmOCgpLmRhdGEoKSkpOwotICAgIGdfcHRyX2FycmF5X2FkZChtX3NjaGVtZXMuZ2V0
KCksIDApOwotCi0gICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkuc291cFNlc3Npb24oKTsKLSAgICBTb3VwUmVxdWVz
dENsYXNzKiBnZW5lcmljUmVxdWVzdENsYXNzID0gc3RhdGljX2Nhc3Q8U291cFJlcXVlc3RDbGFz
cyo+KGdfdHlwZV9jbGFzc19yZWYoV0VCS0lUX1RZUEVfU09VUF9SRVFVRVNUX0dFTkVSSUMpKTsK
LSAgICBnZW5lcmljUmVxdWVzdENsYXNzLT5zY2hlbWVzID0gY29uc3RfY2FzdDxjb25zdCBjaGFy
Kio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcioqPihtX3NjaGVtZXMtPnBkYXRhKSk7Ci0gICAgc291
cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgV0VCS0lUX1RZUEVfU09VUF9S
RVFVRVNUX0dFTkVSSUMpOwotfQotCi12b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkSGFu
ZGxlVVJJUmVxdWVzdChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlcXVlc3REYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50NjRfdCByZXF1
ZXN0SUQpCi17Ci0gICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEqIGRhdGEgPSBtX3JlcXVlc3RN
YXAuZ2V0KHJlcXVlc3RJRCk7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEdSZWZQdHI8R1Rhc2s+
IHRhc2sgPSBkYXRhLT5yZWxlYXNlVGFzaygpOwotICAgIEFTU0VSVCh0YXNrLmdldCgpKTsKLQot
ICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCA9IFdFQktJVF9TT1VQX1JFUVVF
U1RfR0VORVJJQyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOwotICAgIHdl
YmtpdFNvdXBSZXF1ZXN0R2VuZXJpY1NldENvbnRlbnRMZW5ndGgocmVxdWVzdCwgY29udGVudExl
bmd0aCA/IGNvbnRlbnRMZW5ndGggOiAtMSk7Ci0gICAgd2Via2l0U291cFJlcXVlc3RHZW5lcmlj
U2V0Q29udGVudFR5cGUocmVxdWVzdCwgIW1pbWVUeXBlLmlzRW1wdHkoKSA/IG1pbWVUeXBlLnV0
ZjgoKS5kYXRhKCkgOiAwKTsKLQotICAgIEdJbnB1dFN0cmVhbSogZGF0YVN0cmVhbTsKLSAgICBp
ZiAoIXJlcXVlc3REYXRhLnNpemUoKSkgewotICAgICAgICAvLyBFbXB0eSByZXBseSwganVzdCBj
cmVhdGUgYW5kIGVtcHR5IEdNZW1vcnlJbnB1dFN0cmVhbS4KLSAgICAgICAgZGF0YVN0cmVhbSA9
IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXcoKTsKLSAgICAgICAgbV9yZXF1ZXN0TWFwLnJlbW92
ZShyZXF1ZXN0SUQpOwotICAgIH0gZWxzZSBpZiAocmVxdWVzdERhdGEuc2l6ZSgpID09IGNvbnRl
bnRMZW5ndGgpIHsKLSAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IG1vcmUgZGF0YSwgc28gd2Ug
Y2FuIGp1c3QgY3JlYXRlIGEgR01lbW9yeUlucHV0U3RyZWFtIHdpdGggYWxsIHRoZSBkYXRhLgot
ICAgICAgICBkYXRhU3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2RhdGEo
Z19tZW1kdXAocmVxdWVzdERhdGEuZGF0YSgpLCByZXF1ZXN0RGF0YS5zaXplKCkpLCBjb250ZW50
TGVuZ3RoLCBnX2ZyZWUpOwotICAgICAgICBtX3JlcXVlc3RNYXAucmVtb3ZlKHJlcXVlc3RJRCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gV2UgZXhwZWN0IG1vcmUgZGF0YSBjaHVua3MgZnJv
bSB0aGUgVUkgcHJvY2Vzcy4KLSAgICAgICAgZGF0YVN0cmVhbSA9IHdlYmtpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW1OZXcoY29udGVudExlbmd0aCk7Ci0gICAgICAgIGRhdGEtPnN0cmVhbSA9IGRh
dGFTdHJlYW07Ci0gICAgICAgIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRhKFdF
QktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRhdGFTdHJlYW0pLCByZXF1ZXN0RGF0YS5k
YXRhKCksIHJlcXVlc3REYXRhLnNpemUoKSk7Ci0gICAgfQotICAgIGdfdGFza19yZXR1cm5fcG9p
bnRlcih0YXNrLmdldCgpLCBkYXRhU3RyZWFtLCBnX29iamVjdF91bnJlZik7Ci19Ci0KLXZvaWQg
V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXF1ZXN0RGF0YSwgdWludDY0X3QgcmVxdWVzdElEKQotewotICAg
IFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKiBkYXRhID0gbV9yZXF1ZXN0TWFwLmdldChyZXF1ZXN0
SUQpOwotICAgIC8vIFRoZSBkYXRhIG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHJl
cXVlc3QgbWFwIGlmIGEgcHJldmlvdXMgY2h1bmsgZmFpbGVkCi0gICAgLy8gYW5kIGEgbmV3IG1l
c3NhZ2Ugd2FzIHNlbnQgYnkgdGhlIFVJIHByb2Nlc3MgYmVmb3JlIGJlaW5nIG5vdGlmaWVkIGFi
b3V0IHRoZSBmYWlsdXJlLgotICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIEFT
U0VSVChkYXRhLT5zdHJlYW0uZ2V0KCkpOwotCi0gICAgaWYgKGRhdGEtPnJlcXVlc3RGYWlsZWQo
KSkgewotICAgICAgICAvLyBSZXNvdXJjZVJlcXVlc3QgZmFpbGVkIG9yIGl0IHdhcyBjYW5jZWxs
ZWQuIEl0IGRvZXNuJ3QgbWF0dGVyIGhlcmUgdGhlIGVycm9yIG9yIGlmIGl0IHdhcyBjYW5jZWxs
ZWQsCi0gICAgICAgIC8vIGJlY2F1c2UgdGhhdCdzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgcmVz
b3VyY2UgaGFuZGxlIGNsaWVudCwgd2UganVzdCB3YW50IHRvIG5vdGlmeSB0aGUgVUkgcHJvY2Vz
cwotICAgICAgICAvLyB0byBzdG9wIHJlYWRpbmcgZGF0YSBmcm9tIHRoZSB1c2VyIGlucHV0IHN0
cmVhbS4gSWYgVUkgcHJvY2VzcyBhbHJlYWR5IHNlbnQgYWxsIHRoZSBkYXRhIHdlIHNpbXBseQot
ICAgICAgICAvLyBmaW5pc2ggc2lsZW50bHkuCi0gICAgICAgIGlmICghd2Via2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbUZpbmlzaGVkKFdFQktJVF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGRh
dGEtPnN0cmVhbS5nZXQoKSkpKQotICAgICAgICAgICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6
RGlkRmFpbFRvTG9hZFVSSVJlcXVlc3QocmVxdWVzdElEKSwgMCk7Ci0gICAgICAgIG1fcmVxdWVz
dE1hcC5yZW1vdmUocmVxdWVzdElEKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUFkZERhdGEoV0VCS0lUX1NPVVBfUkVRVUVTVF9J
TlBVVF9TVFJFQU0oZGF0YS0+c3RyZWFtLmdldCgpKSwgcmVxdWVzdERhdGEuZGF0YSgpLCByZXF1
ZXN0RGF0YS5zaXplKCkpOwotICAgIGlmICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmlu
aXNoZWQoV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0YS0+c3RyZWFtLmdldCgp
KSkpCi0gICAgICAgIG1fcmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsKLX0KLQotdm9pZCBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxVUklSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yLCB1aW50NjRfdCByZXF1ZXN0SUQpCi17Ci0gICAgV2ViU291cFJl
cXVlc3RBc3luY0RhdGEqIGRhdGEgPSBtX3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3RJRCk7Ci0gICAg
QVNTRVJUKGRhdGEpOwotICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBkYXRhLT5yZWxlYXNlVGFz
aygpOwotICAgIEFTU0VSVCh0YXNrLmdldCgpKTsKLQotICAgIGdfdGFza19yZXR1cm5fbmV3X2Vy
cm9yKHRhc2suZ2V0KCksIGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3IuZG9tYWluKCkudXRmOCgp
LmRhdGEoKSksCi0gICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCAiJXMiLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fcmVxdWVzdE1hcC5yZW1vdmUo
cmVxdWVzdElEKTsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQoR1Rhc2sq
IHRhc2spCi17Ci0gICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0ID0gV0VCS0lU
X1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfdGFza19nZXRfc291cmNlX29iamVjdCh0YXNrKSk7Ci0g
ICAgU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0ID0gU09VUF9SRVFVRVNUKHJlcXVlc3QpOwotICAg
IEdVbmlxdWVQdHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3JlcXVl
c3RfZ2V0X3VyaShzb3VwUmVxdWVzdCksIEZBTFNFKSk7Ci0KLSAgICB1aW50NjRfdCByZXF1ZXN0
SUQgPSBnZW5lcmF0ZVNvdXBSZXF1ZXN0SUQoKTsKLSAgICBtX3JlcXVlc3RNYXAuc2V0KHJlcXVl
c3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YT4odGFzaywgcmVx
dWVzdCkpOwotCi0gICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdChzb3VwUmVxdWVzdCkuaW5pdGlhdGluZ1BhZ2VJRCgpOwotICAgIG1fcHJvY2Vz
cy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRSZWNlaXZlVVJJUmVxdWVzdChTdHJpbmc6OmZyb21VVEY4KHVyaVN0cmluZy5nZXQoKSks
IHJlcXVlc3RJRCksIGluaXRpYXRpbmdQYWdlSUQpOwotfQotCi1HSW5wdXRTdHJlYW0qIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlcjo6ZmluaXNoKEdUYXNrKiB0YXNrLCBHRXJyb3IqKiBlcnJvcikKLXsK
LSAgICBncG9pbnRlciBpbnB1dFN0cmVhbSA9IGdfdGFza19wcm9wYWdhdGVfcG9pbnRlcih0YXNr
LCBlcnJvcik7Ci0gICAgcmV0dXJuIGlucHV0U3RyZWFtID8gR19JTlBVVF9TVFJFQU0oaW5wdXRT
dHJlYW0pIDogMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdl
ci5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRhZmE5NS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RN
YW5hZ2VyLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2ViU291cFJlcXVlc3RNYW5hZ2VyIHsKLSAgICBS
ZWdpc3RlclVSSVNjaGVtZShTdHJpbmcgdXJpU2NoZW1lKTsKLSAgICBEaWRIYW5kbGVVUklSZXF1
ZXN0KElQQzo6RGF0YVJlZmVyZW5jZSByZXF1ZXN0RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0
aCwgU3RyaW5nIG1pbWVUeXBlLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotICAgIERpZFJlY2VpdmVV
UklSZXF1ZXN0RGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgcmVxdWVzdERhdGEsIHVpbnQ2NF90IHJl
cXVlc3RJRCk7Ci0gICAgRGlkRmFpbFVSSVJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBl
cnJvciwgdWludDY0X3QgcmVxdWVzdElEKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXggY2M5
MzlkMC4uNzVhZWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTMwOCw3ICszMDgsNiBAQCBp
ZiAoRU5BQkxFX0ZUTF9KSVQpCiAgICAgc2V0KEhBVkVfTExWTSBPTikKIGVuZGlmICgpCiAKLWFk
ZF9kZWZpbml0aW9ucygtREVOQUJMRV9DVVNUT01fUFJPVE9DT0xTPTEpCiAKICMgW0VdV2ViS2l0
MiB0ZXN0cyBuZWVkIGEgaGludCB0byBmaW5kIG91dCB3aGVyZSBwcm9jZXNzZXMgc3VjaCBhcyBX
ZWJQcm9jZXNzIGFyZSBsb2NhdGVkIGF0LgogYWRkX2RlZmluaXRpb25zKC1EV0VCS0lUX0VYRUNf
UEFUSD1cIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfVwiKQotLSAKMS43LjEwLjQK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239614</attachid>
            <date>2014-10-10 03:19:45 -0700</date>
            <delta_ts>2014-10-10 05:49:59 -0700</delta_ts>
            <desc>Remove custom URI schemes implementation</desc>
            <filename>0001-SOUP-Remove-custom-URI-schemes-implementation.patch</filename>
            <type>text/plain</type>
            <size>35920</size>
            <attacher name="Pascal Jacquemart">p.jacquemart</attacher>
            
              <data encoding="base64">RnJvbSA1NjNhNDY0NDFlOGUwNDc2ZjNjMDIzOWJiYTAwMWQ3MGVkOWQ3ZDdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiAicC5qYWNxdWVtYXJ0IiA8cC5qYWNxdWVtYXJ0QHNhbXN1bmcu
Y29tPgpEYXRlOiBGcmksIDEwIE9jdCAyMDE0IDExOjA4OjAxICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gW1NPVVBdIFJlbW92ZSBjdXN0b20gVVJJIHNjaGVtZXMgaW1wbGVtZW50YXRpb24KCi0tLQog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMz
ICsrKysKIC4uLi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgICAgICAg
IHwgICAgNyAtCiAuLi4vV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oICB8ICAgIDMgLQogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0
U291cC5oICAgfCAgICAyIC0KIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29u
dGV4dFNvdXAuY3BwIHwgICA0MSAtLS0tLQogLi4uL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cFJlcXVlc3RNYW5hZ2VyLmNwcCAgfCAgIDU3IC0tLS0tLQogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwICAgICAgICAgICAgfCAgIDEyICstCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgMTEgLS0KIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgICAgIHwgICAgNCAtCiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluICB8ICAgIDcgLQogLi4u
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgfCAgIDQyIC0t
LS0tCiAuLi4vVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwICB8
ICAxMjggLS0tLS0tLS0tLS0tLQogLi4uL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gICAgfCAgIDI1IC0tLQogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCAgICAgICAgICAgfCAgICA3IC0KIC4uLi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0
U291cFJlcXVlc3RHZW5lcmljLmNwcCAgIHwgICAgOSArLQogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcCAgfCAgICA5IC0KIC4uLi9XZWJQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcCAgICAgIHwgIDE5NCAtLS0tLS0tLS0tLS0tLS0t
LS0tLQogLi4uL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluICAgICAgICAg
fCAgIDI4IC0tLQogMTggZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgNTgzIGRlbGV0
aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQ29udGV4dFNvdXAuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3Nh
Z2VzLmluCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGEyZTJiOTZiLi4wZjMyODVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTQtMTAtMTAgIFBhc2NhbCBKYWNxdWVtYXJ0ICA8cC5qYWNxdWVtYXJ0
QHNhbXN1bmcuY29tPgorCisgICAgICAgIFtTT1VQXSBSZW1vdmUgY3VzdG9tIFVSSSBzY2hlbWVz
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjgxNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpXZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVVJJUmVxdWVzdCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW46IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHA6CisgICAgICAgICh3ZWJraXRTb3Vw
UmVxdWVzdEdlbmVyaWNTZW5kQXN5bmMpOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RHZW5l
cmljU2VuZEZpbmlzaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdl
ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlci5tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKwogMjAxNC0xMC0wOCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVXNlIHRoZSBQ
YWdlTG9hZFN0YXRlIG9ic2VydmVyIGFsc28gdG8gbW9uaXRvciB0aXRsZSBhbmQgZXN0aW1hdGVk
IGxvYWQgcHJvZ3Jlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAxZDhmOTg3Li5kN2RmNTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCkBAIC04OCw5ICs4OCw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAjZW5kaWYKICNp
ZiBVU0UoU09VUCkKLSNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAgZW5jb2RlciA8
PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZDsKLSNlbmRpZgogICAgIGVuY29kZXIgPDwgY29va2llUGVy
c2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3Jh
Z2VUeXBlOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShjb29raWVBY2NlcHRQb2xpY3kpOwpAQCAt
MjAwLDEwICsxOTcsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvYwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NP
TFMpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llUGVy
c2lzdGVudFN0b3JhZ2VUeXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDQ3YTllZWUuLmZiOGJkOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtOTUsOSArOTUsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90
b2NvbHM7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKLSNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NP
TFMpCi0gICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWQ7Ci0jZW5kaWYKICAg
ICBTdHJpbmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIHVpbnQzMl90IGNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKICAgICBIVFRQQ29va2llQWNjZXB0UG9saWN5IGNvb2tp
ZUFjY2VwdFBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9z
b3VwL1dLQVBJQ2FzdFNvdXAuaAppbmRleCAwMzMzMzM1Li5mODQ1MDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCkBAIC0z
Nyw4ICszNyw2IEBAIGNsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OwogCiAjaWYgRU5B
QkxFKENVU1RPTV9QUk9UT0NPTFMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIpCi0jZWxzZQotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBX
ZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eSkKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGQyMWY5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tDb250ZXh0U291cC5o
IgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dC5oIgotCi0v
LyBTdXBwbGVtZW50cwotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIFdLQ29u
dGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKLXsKLSAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5zdXBwbGVtZW50PFdlYlNvdXBSZXF1
ZXN0TWFuYWdlclByb3h5PigpKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2ZmMjhjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLU291cFJl
cXVlc3RNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJT
b3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1X
S1R5cGVJRCBXS1NvdXBSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRv
QVBJKFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpBUElUeXBlKTsKLX0KLQotdm9pZCBXS1Nv
dXBSZXF1ZXN0TWFuYWdlclNldENsaWVudChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVx
dWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSogd2tD
bGllbnQpCi17Ci0gICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPmluaXRpYWxpemVD
bGllbnQod2tDbGllbnQpOwotfQotCi12b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVnaXN0ZXJV
UklTY2hlbWUoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBX
S1N0cmluZ1JlZiBzY2hlbWVSZWYpCi17Ci0gICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJl
ZiktPnJlZ2lzdGVyVVJJU2NoZW1lKHRvV1RGU3RyaW5nKHNjaGVtZVJlZikpOwotfQotCi12b2lk
IFdLU291cFJlcXVlc3RNYW5hZ2VyRGlkSGFuZGxlVVJJUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFu
YWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLRGF0YVJlZiBkYXRhLCB1aW50NjRfdCBj
b250ZW50TGVuZ3RoLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJlZiwgdWludDY0X3QgcmVxdWVzdElE
KQotewotICAgIHRvSW1wbChzb3VwUmVxdWVzdE1hbmFnZXJSZWYpLT5kaWRIYW5kbGVVUklSZXF1
ZXN0KHRvSW1wbChkYXRhKSwgY29udGVudExlbmd0aCwgdG9XVEZTdHJpbmcobWltZVR5cGVSZWYp
LCByZXF1ZXN0SUQpOwotfQotCi12b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVS
SVJlcXVlc3REYXRhKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJl
ZiwgV0tEYXRhUmVmIGRhdGEsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLXsKLSAgICB0b0ltcGwoc291
cFJlcXVlc3RNYW5hZ2VyUmVmKS0+ZGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKHRvSW1wbChkYXRh
KSwgcmVxdWVzdElEKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApp
bmRleCBiNGQ1Yzc4Li4xODJhOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCkBAIC05OSwxMiArOTksOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90
ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoU09VUCkKLSNpZiBFTkFCTEUoQ1VTVE9N
X1BST1RPQ09MUykKKyNpZiBVU0UoU09VUCkgJiYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAj
aW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKLSNlbHNlCi0j
aW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKLSNlbmRpZgogI2VuZGlmCiAK
ICNpZm5kZWYgTkRFQlVHCkBAIC0yMDksMTIgKzIwNSw4IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRl
eHQoV2ViQ29udGV4dENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk+KCk7
CiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKLSNpZiBFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKKyNp
ZiBVU0UoU09VUCkgJiYgRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKTsKLSNlbHNlCi0gICAgYWRk
U3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKTsKLSNlbmRpZgogI2VuZGlm
CiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQmF0dGVy
eU1hbmFnZXJQcm94eT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggMTkwYzkxNS4uZmI2ZDU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTExMywxMCArMTEzLDYgQEAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVyc0d0ay5oIgogI2VuZGlmCiAKLSNpZiBVU0UoU09VUCkgJiYgIUVOQUJMRShDVVNUT01fUFJP
VE9DT0xTKQotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0jZW5kaWYK
LQogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIK
ICNlbmRpZgpAQCAtNTA0MywxMyArNTAzOSw2IEBAIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiBX
ZWJQYWdlUHJveHk6OnRha2VWaWV3U25hcHNob3QoKQogfQogI2VuZGlmCiAKLSNpZiBVU0UoU09V
UCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
Y2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLXsK
LSAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5PigpLT5kaWRSZWNlaXZlVVJJUmVxdWVzdCh1cmlTdHJpbmcsIHRoaXMsIHJlcXVlc3RJ
RCk7Ci19Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlvblVuZGVy
bGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVj
dGlvbkVuZCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNl
bWVudFJhbmdlRW5kKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IGYwYjc4MjcuLmMwYzBhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTEyNTMsMTAgKzEyNTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5UmV2
ZWFsZWRTZWxlY3Rpb24oKTsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKLSNpZiBVU0UoU09V
UCkgJiYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotICAgIHZvaWQgZGlkUmVjZWl2ZVVSSVJl
cXVlc3QoU3RyaW5nIHVyaVN0cmluZywgdWludDY0X3QgcmVxdWVzdElEKTsKLSNlbmRpZgotCiAg
ICAgdm9pZCBjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKTsKIAogICAgIHZvaWQgcGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBXZWJDb3JlOjpEcmFn
RGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMGY0NTVlNy4uOWVjZThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNjYsMTMgKzM2Niw2IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAgICAgU2F2ZVJlY2VudFNlYXJjaGVzKFN0cmluZyBuYW1lLCBWZWN0
b3I8U3RyaW5nPiBzZWFyY2hJdGVtcykKICAgICBMb2FkUmVjZW50U2VhcmNoZXMoU3RyaW5nIG5h
bWUpIC0+IChWZWN0b3I8U3RyaW5nPiByZXN1bHQpCiAKLSNpZiBVU0UoU09VUCkKLSNpZiAhRU5B
QkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAgIyBTb3VwIGN1c3RvbSBVUkkgcmVxdWVzdCBtZXNz
YWdlcwotICAgIERpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZyB1cmlTdHJpbmcsIHVpbnQ2NF90
IHJlcXVlc3RJRCk7Ci0jZW5kaWYKLSNlbmRpZgotCiAgICAgU2F2ZVBERlRvRmlsZUluRG93bmxv
YWRzRm9sZGVyKFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0
MGQwNWIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAi
V0tBUElDYXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1ib29sIFdlYlNvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudDo6ZGlkUmVjZWl2ZVVSSVJlcXVlc3QoV2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHkqIHNvdXBSZXF1ZXN0TWFuYWdlciwgQVBJOjpVUkwqIHVybCwgV2ViUGFnZVByb3h5KiBp
bml0aWFpbmdQYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5k
aWRSZWNlaXZlVVJJUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9jbGll
bnQuZGlkUmVjZWl2ZVVSSVJlcXVlc3QodG9BUEkoc291cFJlcXVlc3RNYW5hZ2VyKSwgdG9BUEko
dXJsKSwgdG9BUEkoaW5pdGlhaW5nUGFnZSksIHJlcXVlc3RJRCwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJDbGllbnQ6OmRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KFdlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5KiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLXsKLSAgICBpZiAo
bV9jbGllbnQuZGlkRmFpbFRvTG9hZFVSSVJlcXVlc3QpCi0gICAgICAgIG1fY2xpZW50LmRpZEZh
aWxUb0xvYWRVUklSZXF1ZXN0KHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIHJlcXVlc3RJRCwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMGFm
MTguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgotCi0jaW5jbHVkZSAiQVBJRGF0
YS5oIgotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1h
bmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5TWVz
c2FnZXMuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNvbnN0IGNoYXIqIFdlYlNvdXBSZXF1
ZXN0TWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eSI7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViU291cFJlcXVlc3RNYW5h
Z2VyUHJveHk+IFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCog
Y29udGV4dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5KGNvbnRleHQpKTsKLX0KLQotV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OldlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBXZWJDb250
ZXh0U3VwcGxlbWVudChjb250ZXh0KQotICAgICwgbV9sb2FkRmFpbGVkKGZhbHNlKQotewotICAg
IFdlYkNvbnRleHRTdXBwbGVtZW50Ojpjb250ZXh0KCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
KnRoaXMpOwotfQotCi1XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6fldlYlNvdXBSZXF1ZXN0
TWFuYWdlclByb3h5KCkKLXsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6
aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNs
aWVudCkKLXsKLSAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7Ci19Ci0KLS8vIFdlYkNv
bnRleHRTdXBwbGVtZW50Ci0KLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmNvbnRl
eHREZXN0cm95ZWQoKQotewotfQotCi12b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Ojpw
cm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLXsKLX0KLQotdm9pZCBXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQotewotICAgIEFQSTo6
T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17Ci0gICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19
Ci0KLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlZ2lzdGVyVVJJU2NoZW1lKGNv
bnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghY29udGV4dCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OlJlZ2lzdGVyVVJJU2No
ZW1lKHNjaGVtZSkpOwotCi0gICAgQVNTRVJUKCFtX3JlZ2lzdGVyZWRVUklTY2hlbWVzLmNvbnRh
aW5zKHNjaGVtZSkpOwotICAgIG1fcmVnaXN0ZXJlZFVSSVNjaGVtZXMuYXBwZW5kKHNjaGVtZSk7
Ci19Ci0KLXZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZEhhbmRsZVVSSVJlcXVl
c3QoY29uc3QgQVBJOjpEYXRhKiByZXF1ZXN0RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgdWludDY0X3QgcmVxdWVzdElEKQotewotICAgIGlmICgh
Y29udGV4dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb250ZXh0KCktPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjpEaWRIYW5kbGVVUklSZXF1
ZXN0KHJlcXVlc3REYXRhLT5kYXRhUmVmZXJlbmNlKCksIGNvbnRlbnRMZW5ndGgsIG1pbWVUeXBl
LCByZXF1ZXN0SUQpKTsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZVVSSVJlcXVlc3REYXRhKGNvbnN0IEFQSTo6RGF0YSogcmVxdWVzdERhdGEsIHVpbnQ2
NF90IHJlcXVlc3RJRCkKLXsKLSAgICBpZiAoIWNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1fbG9hZEZhaWxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dCgp
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6RGlk
UmVjZWl2ZVVSSVJlcXVlc3REYXRhKHJlcXVlc3REYXRhLT5kYXRhUmVmZXJlbmNlKCksIHJlcXVl
c3RJRCkpOwotfQotCi12b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZl
VVJJUmVxdWVzdChjb25zdCBTdHJpbmcmIHVyaVN0cmluZywgV2ViUGFnZVByb3h5KiBpbml0aWFp
bmdQYWdlLCB1aW50NjRfdCByZXF1ZXN0SUQpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlVVJJUmVxdWVzdCh0aGlzLCBBUEk6OlVSTDo6Y3JlYXRlKHVyaVN0cmluZykuZ2V0KCksIGlu
aXRpYWluZ1BhZ2UsIHJlcXVlc3RJRCkpCi0gICAgICAgIGRpZEhhbmRsZVVSSVJlcXVlc3QoQVBJ
OjpEYXRhOjpjcmVhdGUoMCwgMCkuZ2V0KCksIDAsIFN0cmluZygpLCByZXF1ZXN0SUQpOwotfQot
Ci12b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRGYWlsVG9Mb2FkVVJJUmVxdWVz
dCh1aW50NjRfdCByZXF1ZXN0SUQpCi17Ci0gICAgbV9sb2FkRmFpbGVkID0gdHJ1ZTsKLSAgICBt
X2NsaWVudC5kaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdCh0aGlzLCByZXF1ZXN0SUQpOwotfQotCi12
b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRGYWlsVVJJUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgdWludDY0X3QgcmVxdWVzdElEKQotewotICAg
IGlmICghY29udGV4dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2xvYWRGYWlsZWQgPSB0
cnVlOwotICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJTb3Vw
UmVxdWVzdE1hbmFnZXI6OkRpZEZhaWxVUklSZXF1ZXN0KGVycm9yLCByZXF1ZXN0SUQpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODA1OGY1Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyBDb3B5cmln
aHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBh
cmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
Ci0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkgewotICAg
IERpZEZhaWxUb0xvYWRVUklSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA3YzE3MGIwLi5hNDQ1ODk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyOCwxMCArMTI4
LDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRp
ZgogCi0jaWYgVVNFKFNPVVApICYmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLSNpbmNsdWRl
ICJXZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTIwNCw5ICsyMDAsNiBAQCBXZWJQcm9j
ZXNzOjpXZWJQcm9jZXNzKCkKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgYWRkU3Vw
cGxlbWVudDxXZWJCYXR0ZXJ5TWFuYWdlcj4oKTsKICNlbmRpZgotI2lmIFVTRShTT1VQKSAmJiAh
RU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0gICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwUmVxdWVz
dE1hbmFnZXI+KCk7Ci0jZW5kaWYKICAgICBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcy5h
ZGQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJs
ZT4oKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9z
b3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKaW5kZXggNTVjNTAzNy4uNTY3NWY5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1
ZXN0R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktp
dFNvdXBSZXF1ZXN0R2VuZXJpYy5jcHAKQEAgLTIyLDExICsyMiw2IEBACiAKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiAhRU5BQkxFKENVU1RPTV9QUk9UT0NPTFMpCi0jaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlci5oIgot
I2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0
U291cFJlcXVlc3RHZW5lcmljLCB3ZWJraXRfc291cF9yZXF1ZXN0X2dlbmVyaWMsIFNPVVBfVFlQ
RV9SRVFVRVNUKQpAQCAtNTUsOCArNTAsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVz
dEdlbmVyaWNTZW5kQXN5bmMoU291cFJlcXVlc3QqIHJlcXVlc3QsIEdDYW5jZWxsYWJsZQogICAg
IEN1c3RvbVByb3RvY29sTWFuYWdlckltcGwqIGN1c3RvbVByb3RvY29sTWFuYWdlciA9IFdFQktJ
VF9TT1VQX1JFUVVFU1RfR0VORVJJQ19HRVRfQ0xBU1MocmVxdWVzdCktPmN1c3RvbVByb3RvY29s
TWFuYWdlcjsKICAgICBBU1NFUlQoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsKICAgICBjdXN0b21Q
cm90b2NvbE1hbmFnZXItPnNlbmQoZ190YXNrX25ldyhyZXF1ZXN0LCBjYW5jZWxsYWJsZSwgY2Fs
bGJhY2ssIHVzZXJEYXRhKSk7Ci0jZWxzZQotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnN1cHBs
ZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5zZW5kKGdfdGFza19uZXcocmVxdWVzdCwg
Y2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwogI2VuZGlmCiB9CiAKQEAgLTY4LDcg
KzYxLDcgQEAgc3RhdGljIEdJbnB1dFN0cmVhbSogd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2Vu
ZEZpbmlzaChTb3VwUmVxdWVzdCogcmVxdWVzdCwgR0EKICAgICBBU1NFUlQoY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyKTsKICAgICByZXR1cm4gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5maW5pc2goR19U
QVNLKHJlc3VsdCksIGVycm9yKTsKICNlbHNlCi0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnN1cHBsZW1lbnQ8V2ViU291cFJlcXVlc3RNYW5hZ2VyPigpLT5maW5pc2goR19UQVNLKHJl
c3VsdCksIGVycm9yKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcAppbmRleCAw
YWFhMzVjLi44NGY3YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAot
I2lmICFFTkFCTEUoQ1VTVE9NX1BST1RPQ09MUykKLSNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1h
bmFnZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIHVpbnQ2NF90
IGdldENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCkBAIC0xNzAsMTEgKzE2Niw2
IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdl
cy5pc0VtcHR5KCkpCiAgICAgICAgIHNldFNvdXBTZXNzaW9uQWNjZXB0TGFuZ3VhZ2UocGFyYW1l
dGVycy5sYW5ndWFnZXMpOwogCi0jaWYgIUVOQUJMRShDVVNUT01fUFJPVE9DT0xTKQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZC5zaXpl
KCk7IGkrKykKLSAgICAgICAgc3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXI+KCktPnJl
Z2lzdGVyVVJJU2NoZW1lKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRbaV0pOwotI2Vu
ZGlmCi0KICAgICBzZXRJZ25vcmVUTFNFcnJvcnMocGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMp
OwogCiAgICAgV2ViQ29yZTo6YWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih0aGlzLCBsYW5ndWFn
ZUNoYW5nZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dl
YlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTcxZWU0MC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
U291cFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXZWJFcnJvcnMuaCIKLSNpbmNsdWRlICJXZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWMuaCIKLSNpbmNsdWRlICJXZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQ
cm9jZXNzLmgiCi0jaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1
ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlU291cFJl
cXVlc3RJRCgpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVNvdXBSZXF1ZXN0SUQgPSAx
OwotICAgIHJldHVybiB1bmlxdWVTb3VwUmVxdWVzdElEKys7Ci19Ci0KLXN0cnVjdCBXZWJTb3Vw
UmVxdWVzdEFzeW5jRGF0YSB7Ci0gICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEoR1Rhc2sqIHRh
c2ssIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdEdlbmVyaWMpCi0gICAgICAgIDog
dGFzayh0YXNrKQotICAgICAgICAsIHJlcXVlc3QocmVxdWVzdEdlbmVyaWMpCi0gICAgICAgICwg
Y2FuY2VsbGFibGUoZ190YXNrX2dldF9jYW5jZWxsYWJsZSh0YXNrKSkKLSAgICB7Ci0gICAgICAg
IC8vIElmIHRoZSBzdHJ1Y3QgY29udGFpbnMgYSBudWxsIHJlcXVlc3QsIGl0IGlzIGJlY2F1c2Ug
dGhlIHJlcXVlc3QgZmFpbGVkLgotICAgICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdf
T0JKRUNUKHJlcXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsKLSAg
ICB9Ci0KLSAgICB+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKQotICAgIHsKLSAgICAgICAgaWYg
KHJlcXVlc3QpCi0gICAgICAgICAgICBnX29iamVjdF9yZW1vdmVfd2Vha19wb2ludGVyKEdfT0JK
RUNUKHJlcXVlc3QpLCByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJnJlcXVlc3QpKTsKLSAgICB9
Ci0KLSAgICBib29sIHJlcXVlc3RGYWlsZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGdfY2Fu
Y2VsbGFibGVfaXNfY2FuY2VsbGVkKGNhbmNlbGxhYmxlLmdldCgpKSB8fCAhcmVxdWVzdDsKLSAg
ICB9Ci0KLSAgICBHUmVmUHRyPEdUYXNrPiByZWxlYXNlVGFzaygpCi0gICAgewotICAgICAgICBH
VGFzayogcmV0dXJuVmFsdWUgPSB0YXNrOwotICAgICAgICB0YXNrID0gMDsKLSAgICAgICAgcmV0
dXJuIGFkb3B0R1JlZihyZXR1cm5WYWx1ZSk7Ci0gICAgfQotCi0gICAgR1Rhc2sqIHRhc2s7Ci0g
ICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1ZXN0OwotICAgIEdSZWZQdHI8R0NhbmNl
bGxhYmxlPiBjYW5jZWxsYWJsZTsKLSAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gc3RyZWFtOwot
fTsKLQotY29uc3QgY2hhciogV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgp
Ci17Ci0gICAgcmV0dXJuICJXZWJTb3VwUmVxdWVzdE1hbmFnZXIiOwotfQotCi1XZWJTb3VwUmVx
dWVzdE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQot
ICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCi0gICAgLCBtX3NjaGVtZXMoYWRvcHRHUmVmKGdfcHRy
X2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyhnX2ZyZWUpKSkKLXsKLSAgICBtX3Byb2Nlc3MtPmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViU291cFJlcXVlc3RNYW5hZ2VyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotV2ViU291cFJlcXVlc3RNYW5hZ2VyOjp+V2Vi
U291cFJlcXVlc3RNYW5hZ2VyKCkKLXsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6
OnJlZ2lzdGVyVVJJU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChtX3Nj
aGVtZXMtPmxlbikKLSAgICAgICAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4X2Zhc3QobV9zY2hl
bWVzLmdldCgpLCBtX3NjaGVtZXMtPmxlbiAtIDEpOwotICAgIGdfcHRyX2FycmF5X2FkZChtX3Nj
aGVtZXMuZ2V0KCksIGdfc3RyZHVwKHNjaGVtZS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgZ19wdHJf
YXJyYXlfYWRkKG1fc2NoZW1lcy5nZXQoKSwgMCk7Ci0KLSAgICBTb3VwU2Vzc2lvbiogc2Vzc2lv
biA9IFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKS5zb3VwU2Vz
c2lvbigpOwotICAgIFNvdXBSZXF1ZXN0Q2xhc3MqIGdlbmVyaWNSZXF1ZXN0Q2xhc3MgPSBzdGF0
aWNfY2FzdDxTb3VwUmVxdWVzdENsYXNzKj4oZ190eXBlX2NsYXNzX3JlZihXRUJLSVRfVFlQRV9T
T1VQX1JFUVVFU1RfR0VORVJJQykpOwotICAgIGdlbmVyaWNSZXF1ZXN0Q2xhc3MtPnNjaGVtZXMg
PSBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKio+KG1fc2No
ZW1lcy0+cGRhdGEpKTsKLSAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShzZXNz
aW9uLCBXRUJLSVRfVFlQRV9TT1VQX1JFUVVFU1RfR0VORVJJQyk7Ci19Ci0KLXZvaWQgV2ViU291
cFJlcXVlc3RNYW5hZ2VyOjpkaWRIYW5kbGVVUklSZXF1ZXN0KGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVxdWVzdERhdGEsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLXsKLSAgICBXZWJTb3VwUmVxdWVzdEFzeW5j
RGF0YSogZGF0YSA9IG1fcmVxdWVzdE1hcC5nZXQocmVxdWVzdElEKTsKLSAgICBBU1NFUlQoZGF0
YSk7Ci0gICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGRhdGEtPnJlbGVhc2VUYXNrKCk7Ci0gICAg
QVNTRVJUKHRhc2suZ2V0KCkpOwotCi0gICAgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljKiByZXF1
ZXN0ID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9HRU5FUklDKGdfdGFza19nZXRfc291cmNlX29iamVj
dCh0YXNrLmdldCgpKSk7Ci0gICAgd2Via2l0U291cFJlcXVlc3RHZW5lcmljU2V0Q29udGVudExl
bmd0aChyZXF1ZXN0LCBjb250ZW50TGVuZ3RoID8gY29udGVudExlbmd0aCA6IC0xKTsKLSAgICB3
ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNTZXRDb250ZW50VHlwZShyZXF1ZXN0LCAhbWltZVR5cGUu
aXNFbXB0eSgpID8gbWltZVR5cGUudXRmOCgpLmRhdGEoKSA6IDApOwotCi0gICAgR0lucHV0U3Ry
ZWFtKiBkYXRhU3RyZWFtOwotICAgIGlmICghcmVxdWVzdERhdGEuc2l6ZSgpKSB7Ci0gICAgICAg
IC8vIEVtcHR5IHJlcGx5LCBqdXN0IGNyZWF0ZSBhbmQgZW1wdHkgR01lbW9yeUlucHV0U3RyZWFt
LgotICAgICAgICBkYXRhU3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpOwotICAg
ICAgICBtX3JlcXVlc3RNYXAucmVtb3ZlKHJlcXVlc3RJRCk7Ci0gICAgfSBlbHNlIGlmIChyZXF1
ZXN0RGF0YS5zaXplKCkgPT0gY29udGVudExlbmd0aCkgewotICAgICAgICAvLyBXZSBkb24ndCBl
eHBlY3QgbW9yZSBkYXRhLCBzbyB3ZSBjYW4ganVzdCBjcmVhdGUgYSBHTWVtb3J5SW5wdXRTdHJl
YW0gd2l0aCBhbGwgdGhlIGRhdGEuCi0gICAgICAgIGRhdGFTdHJlYW0gPSBnX21lbW9yeV9pbnB1
dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShnX21lbWR1cChyZXF1ZXN0RGF0YS5kYXRhKCksIHJlcXVl
c3REYXRhLnNpemUoKSksIGNvbnRlbnRMZW5ndGgsIGdfZnJlZSk7Ci0gICAgICAgIG1fcmVxdWVz
dE1hcC5yZW1vdmUocmVxdWVzdElEKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBXZSBleHBl
Y3QgbW9yZSBkYXRhIGNodW5rcyBmcm9tIHRoZSBVSSBwcm9jZXNzLgotICAgICAgICBkYXRhU3Ry
ZWFtID0gd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyhjb250ZW50TGVuZ3RoKTsKLSAg
ICAgICAgZGF0YS0+c3RyZWFtID0gZGF0YVN0cmVhbTsKLSAgICAgICAgd2Via2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbUFkZERhdGEoV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0
YVN0cmVhbSksIHJlcXVlc3REYXRhLmRhdGEoKSwgcmVxdWVzdERhdGEuc2l6ZSgpKTsKLSAgICB9
Ci0gICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGRhdGFTdHJlYW0sIGdfb2Jq
ZWN0X3VucmVmKTsKLX0KLQotdm9pZCBXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OmRpZFJlY2VpdmVV
UklSZXF1ZXN0RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlcXVlc3REYXRhLCB1aW50
NjRfdCByZXF1ZXN0SUQpCi17Ci0gICAgV2ViU291cFJlcXVlc3RBc3luY0RhdGEqIGRhdGEgPSBt
X3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3RJRCk7Ci0gICAgLy8gVGhlIGRhdGEgbWlnaHQgaGF2ZSBi
ZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVxdWVzdCBtYXAgaWYgYSBwcmV2aW91cyBjaHVuayBmYWls
ZWQKLSAgICAvLyBhbmQgYSBuZXcgbWVzc2FnZSB3YXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyBi
ZWZvcmUgYmVpbmcgbm90aWZpZWQgYWJvdXQgdGhlIGZhaWx1cmUuCi0gICAgaWYgKCFkYXRhKQot
ICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGRhdGEtPnN0cmVhbS5nZXQoKSk7Ci0KLSAgICBp
ZiAoZGF0YS0+cmVxdWVzdEZhaWxlZCgpKSB7Ci0gICAgICAgIC8vIFJlc291cmNlUmVxdWVzdCBm
YWlsZWQgb3IgaXQgd2FzIGNhbmNlbGxlZC4gSXQgZG9lc24ndCBtYXR0ZXIgaGVyZSB0aGUgZXJy
b3Igb3IgaWYgaXQgd2FzIGNhbmNlbGxlZCwKLSAgICAgICAgLy8gYmVjYXVzZSB0aGF0J3MgYWxy
ZWFkeSBoYW5kbGVkIGJ5IHRoZSByZXNvdXJjZSBoYW5kbGUgY2xpZW50LCB3ZSBqdXN0IHdhbnQg
dG8gbm90aWZ5IHRoZSBVSSBwcm9jZXNzCi0gICAgICAgIC8vIHRvIHN0b3AgcmVhZGluZyBkYXRh
IGZyb20gdGhlIHVzZXIgaW5wdXQgc3RyZWFtLiBJZiBVSSBwcm9jZXNzIGFscmVhZHkgc2VudCBh
bGwgdGhlIGRhdGEgd2Ugc2ltcGx5Ci0gICAgICAgIC8vIGZpbmlzaCBzaWxlbnRseS4KLSAgICAg
ICAgaWYgKCF3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQoV0VCS0lUX1NPVVBf
UkVRVUVTVF9JTlBVVF9TVFJFQU0oZGF0YS0+c3RyZWFtLmdldCgpKSkpCi0gICAgICAgICAgICBt
X3Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlNv
dXBSZXF1ZXN0TWFuYWdlclByb3h5OjpEaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdChyZXF1ZXN0SUQp
LCAwKTsKLSAgICAgICAgbV9yZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOwotCi0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0
YShXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpLCBy
ZXF1ZXN0RGF0YS5kYXRhKCksIHJlcXVlc3REYXRhLnNpemUoKSk7Ci0gICAgaWYgKHdlYmtpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW1GaW5pc2hlZChXRUJLSVRfU09VUF9SRVFVRVNUX0lOUFVUX1NU
UkVBTShkYXRhLT5zdHJlYW0uZ2V0KCkpKSkKLSAgICAgICAgbV9yZXF1ZXN0TWFwLnJlbW92ZShy
ZXF1ZXN0SUQpOwotfQotCi12b2lkIFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6ZGlkRmFpbFVSSVJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKLXsKLSAgICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSogZGF0YSA9IG1fcmVxdWVzdE1h
cC5nZXQocmVxdWVzdElEKTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgR1JlZlB0cjxHVGFzaz4g
dGFzayA9IGRhdGEtPnJlbGVhc2VUYXNrKCk7Ci0gICAgQVNTRVJUKHRhc2suZ2V0KCkpOwotCi0g
ICAgZ190YXNrX3JldHVybl9uZXdfZXJyb3IodGFzay5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmlu
ZyhlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKLSAgICAgICAgZXJyb3IuZXJyb3JDb2Rl
KCksICIlcyIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgbV9yZXF1ZXN0TWFwLnJlbW92ZShyZXF1ZXN0SUQpOwotfQotCi12b2lkIFdlYlNvdXBSZXF1
ZXN0TWFuYWdlcjo6c2VuZChHVGFzayogdGFzaykKLXsKLSAgICBXZWJLaXRTb3VwUmVxdWVzdEdl
bmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMoZ190YXNrX2dldF9z
b3VyY2Vfb2JqZWN0KHRhc2spKTsKLSAgICBTb3VwUmVxdWVzdCogc291cFJlcXVlc3QgPSBTT1VQ
X1JFUVVFU1QocmVxdWVzdCk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmlTdHJpbmcoc291cF91
cmlfdG9fc3RyaW5nKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHNvdXBSZXF1ZXN0KSwgRkFMU0UpKTsK
LQotICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlU291cFJlcXVlc3RJRCgpOwotICAg
IG1fcmVxdWVzdE1hcC5zZXQocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvdXBSZXF1
ZXN0QXN5bmNEYXRhPih0YXNrLCByZXF1ZXN0KSk7Ci0KLSAgICB1aW50NjRfdCBpbml0aWF0aW5n
UGFnZUlEID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KHNvdXBSZXF1ZXN0KS5pbml0aWF0aW5n
UGFnZUlEKCk7Ci0gICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZzo6ZnJv
bVVURjgodXJpU3RyaW5nLmdldCgpKSwgcmVxdWVzdElEKSwgaW5pdGlhdGluZ1BhZ2VJRCk7Ci19
Ci0KLUdJbnB1dFN0cmVhbSogV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpmaW5pc2goR1Rhc2sqIHRh
c2ssIEdFcnJvcioqIGVycm9yKQotewotICAgIGdwb2ludGVyIGlucHV0U3RyZWFtID0gZ190YXNr
X3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssIGVycm9yKTsKLSAgICByZXR1cm4gaW5wdXRTdHJlYW0g
PyBHX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbSkgOiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3Vw
UmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNGFmYTk1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApA
QCAtMSwyOCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1tZXNzYWdlcyAtPiBXZWJTb3Vw
UmVxdWVzdE1hbmFnZXIgewotICAgIFJlZ2lzdGVyVVJJU2NoZW1lKFN0cmluZyB1cmlTY2hlbWUp
OwotICAgIERpZEhhbmRsZVVSSVJlcXVlc3QoSVBDOjpEYXRhUmVmZXJlbmNlIHJlcXVlc3REYXRh
LCB1aW50NjRfdCBjb250ZW50TGVuZ3RoLCBTdHJpbmcgbWltZVR5cGUsIHVpbnQ2NF90IHJlcXVl
c3RJRCk7Ci0gICAgRGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKElQQzo6RGF0YVJlZmVyZW5jZSBy
ZXF1ZXN0RGF0YSwgdWludDY0X3QgcmVxdWVzdElEKTsKLSAgICBEaWRGYWlsVVJJUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotfQotLSAK
MS43LjEwLjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>