<?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>53289</bug_id>
          
          <creation_ts>2011-01-28 01:05:58 -0800</creation_ts>
          <short_desc>DOM: Move DocumentOrderedMap from Document into separate files</short_desc>
          <delta_ts>2011-02-01 05:23:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52963</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>341356</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-28 01:05:58 -0800</bug_when>
    <thetext>DocumentOrderedMap currently is a nested class inside Document.

To cut down on the size of Document.h/.cpp, as well as allow further refactoring, esp. for shadow DOM, it would be better if this was made a separate class and moved into its own files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341375</commentid>
    <comment_count>1</comment_count>
      <attachid>80432</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-28 02:24:28 -0800</bug_when>
    <thetext>Created attachment 80432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341385</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-28 03:19:08 -0800</bug_when>
    <thetext>Attachment 80432 did not build on win:
Build output: http://queues.webkit.org/results/7560379</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341386</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-28 03:23:42 -0800</bug_when>
    <thetext>Attachment 80432 did not build on qt:
Build output: http://queues.webkit.org/results/7657049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341470</commentid>
    <comment_count>4</comment_count>
      <attachid>80432</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-28 08:50:42 -0800</bug_when>
    <thetext>Comment on attachment 80432
Patch

This is great! Please update all build systems to ensure no bot breakages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342457</commentid>
    <comment_count>5</comment_count>
      <attachid>80617</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-30 21:45:10 -0800</bug_when>
    <thetext>Created attachment 80617
Patch, try again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342475</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-30 22:43:56 -0800</bug_when>
    <thetext>Attachment 80617 did not build on win:
Build output: http://queues.webkit.org/results/7680166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342488</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-31 00:15:09 -0800</bug_when>
    <thetext>Attachment 80617 did not build on qt:
Build output: http://queues.webkit.org/results/7567944</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342494</commentid>
    <comment_count>8</comment_count>
      <attachid>80623</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-31 01:02:26 -0800</bug_when>
    <thetext>Created attachment 80623
Patch, try de third</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342509</commentid>
    <comment_count>9</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-31 02:08:16 -0800</bug_when>
    <thetext>Hmmm... any idea what issues &apos;gtk&apos; and &apos;mac&apos; have patching the .vcproj file? &apos;win&apos; seems to like it... @_@?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342598</commentid>
    <comment_count>10</comment_count>
      <attachid>80623</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-31 08:54:18 -0800</bug_when>
    <thetext>Comment on attachment 80623
Patch, try de third

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

Changes to vcproj suck. I don&apos;t know why, but I get purples on them too. But your project changes look good, except for android. Let&apos;s see if this works.

&gt; Source/WebCore/ChangeLog:13
&gt; +        * GNUMakefile.am:

I think you&apos;re going to break Android build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343082</commentid>
    <comment_count>11</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-01 01:32:44 -0800</bug_when>
    <thetext>Reverted r77229 for reason:

revert mysterious build breakage

Committed r77231: &lt;http://trac.webkit.org/changeset/77231&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343163</commentid>
    <comment_count>12</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-01 05:23:09 -0800</bug_when>
    <thetext>committed in r77239, with additional entries in Android.mk and CMakeLists.txt, so as to hopefully not-break Android and EFL.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80432</attachid>
            <date>2011-01-28 02:24:28 -0800</date>
            <delta_ts>2011-01-30 21:45:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53289-20110128192426.patch</filename>
            <type>text/plain</type>
            <size>23750</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MDg0MTUxYjk4NGU3YjkzNTIxZmUzYmMzNmNkNmQwMjgyZWM0ZGMwLi4x
OGFhOGM1MDY3NzAzNjM4N2Y1MzMzYTE4YmVlYTE2N2IyMzY2ODNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTEtMDEtMjggIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDUzMjg5IC0gRE9NOiBNb3ZlIERvY3VtZW50T3JkZXJlZE1hcCBmcm9tIERvY3Vt
ZW50IGludG8gc2VwYXJhdGUgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUzMjg5CisKKyAgICAgICAgTW92aW5nIHRoZSBuZXN0ZWQgY2xhc3Mg
RG9jdW1lbnRPcmRlcmVkTWFwIGZyb20gRG9jdW1lbnQgaW50byBzZXBhcmF0ZSBmaWxlcywKKyAg
ICAgICAgdXBkYXRpbmcgY29kZSB3aGVyZSBuZWNlc3NhcnkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAocmVmYWN0b3JpbmcpCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEltYWdlTWFwKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzSWQpOgorICAgICAgICAoV2ViQ29yZTo6a2V5TWF0
Y2hlc01hcE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6a2V5TWF0Y2hlc0xvd2VyY2FzZWRNYXBO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6Y2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRPcmRlcmVkTWFwOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFw
OjpnZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6
OmdldEVsZW1lbnRCeU1hcE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVk
TWFwOjpnZXRFbGVtZW50QnlMb3dlcmNhc2VkTWFwTmFtZSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50T3JkZXJlZE1hcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJl
ZE1hcDo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpj
b250YWluc011bHRpcGxlKToKKwogMjAxMS0wMS0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc2
ODkzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDAyNDg1Nzg0Mjg1ZjA3OGFlZmFiYjVhMzBiNDMwYzUz
YzM4NzkwNDUuLjhmMjcyZGRlZmJhYWE5OTc0NmUwMzI5M2ZkZDQwYWZiZjUxMjhkMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTEyMjAsNiArMTIyMCw4IEBACiAgICAgICAgICAgICAnZG9tL0RvY3Vt
ZW50TWFya2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgnLAorICAg
ICAgICAgICAgJ2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwJywKKyAgICAgICAgICAgICdkb20v
RG9jdW1lbnRPcmRlcmVkTWFwLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudFBhcnNlci5j
cHAnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdk
b20vRG9jdW1lbnRUaW1pbmcuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjQxN2M5N2EwMTMwY2Q0NjUxMThkZWM0MTYzZTUy
N2Y3M2RlYjMwMy4uOGEyNDY1NzU0NTA5MmI1OWI5ZWVjMmFiNTEzMGYwY2E3MDcwYTU5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzAwLDYgKzMwMCw4IEBACiAJCTE0MjAxMUI3MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0
eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MjAxMUI1MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDMy
RTg0NzBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDMyRTg0NjBDNTE0OTM4MDBCMTUwMEYgLyog
R0NDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQzMkU4NDkwQzUxNDkzRjAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDMyRTg0ODBDNTE0
OTNGMDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJMTQzQzg3ODYxMkYyOEE3
QTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzQzg3ODQxMkYyOEE3QTAwNTJGRkQwIC8qIERvY3Vt
ZW50T3JkZXJlZE1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTE0M0M4Nzg3MTJGMjhBN0EwMDUyRkZEMCAvKiBEb2N1bWVudE9yZGVyZWRNYXAu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzQzg3
ODUxMkYyOEE3QTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1hcC5jcHAgKi87IH07CiAJCTE0
NDlFMjRDMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0OUUyNEExMDdENEE4NDAwQjU3OTNG
IC8qIEpTQ2FsbGJhY2tEYXRhLmggKi87IH07CiAJCTE0NDlFMjg3MTA3RDREQjQwMEI1NzkzRiAv
KiBKU0NhbGxiYWNrRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDQ5RTI4NjEwN0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3Bw
ICovOyB9OwogCQkxNDc3RTc3NjBCRjQxMzRBMDAxNTI4NzIgLyogUGFnZUNhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc0MEJGNDEz
NEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuY3BwICovOyB9OwpAQCAtNjYxNyw2ICs2NjE5LDggQEAK
IAkJMTQyMDExQjUwQTAwMzEzMzAwODMwM0Y5IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDU1NTdHlsZURlY2xhcmF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAv
KiBHQ0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQ29u
dHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDMyRTg0ODBDNTE0OTNG
MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHQ0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNDNDODc4NDEyRjI4QTdBMDA1MkZGRDAgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50T3JkZXJlZE1hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxNDNDODc4NTEyRjI4QTdBMDA1MkZGRDAgLyogRG9jdW1l
bnRPcmRlcmVkTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
Y3VtZW50T3JkZXJlZE1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDlF
MjRBMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0NhbGxiYWNrRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDQ5RTI4NjEwN0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDYWxsYmFja0RhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDc3RTc3NDBCRjQxMzRBMDAxNTI4NzIgLyog
UGFnZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdl
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg5NzMsNiArMTg5Nzcs
OCBAQAogCQkJCUVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICov
LAogCQkJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwICovLAogCQkJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCAqLywKKwkJCQkxNDNDODc4NDEyRjI4QTdBMDA1MkZGRDAgLyogRG9jdW1l
bnRPcmRlcmVkTWFwLmggKi8sCisJCQkJMTQzQzg3ODUxMkYyOEE3QTAwNTJGRkQwIC8qIERvY3Vt
ZW50T3JkZXJlZE1hcC5jcHAgKi8sCiAJCQkJQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERv
Y3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQlCQ0NGQkFFNzBCNTE1MkVEMDAwMUYxRDcgLyogRG9j
dW1lbnRQYXJzZXIuaCAqLywKIAkJCQk4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1l
bnRUaW1pbmcuaCAqLywKQEAgLTIyNDQxLDYgKzIyNDQ3LDcgQEAKIAkJCQlCQzk1ODVFMTEyRjA5
ODk1MDA3NTU4MjEgLyogUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxMzRGNUFCMTJFRTM0M0YwMDRFQzU4RCAvKiBJbnRSZWN0SGFzaC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTc3RTJEQ0UxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxNDNDODc4NjEyRjI4QTdBMDA1MkZGRDAgLyogRG9jdW1lbnRPcmRl
cmVkTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MTM2LDYgKzI1MTQzLDcgQEAKIAkJCQlCQzhB
RTM0RTEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEYyRDIwNTUxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3N0UyRENEMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJh
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDNDODc4NzEyRjI4QTdBMDA1MkZGRDAgLyog
RG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggNmFkZWYyNjkzMGNmZTg3OTdiYTRiY2ZhODEyOTQ4NGE2OWEyODRkZS4uY2I5YTJh
YmYwMDJhYzNmYjM4MTk3YjA5Y2JjMzRlZDUwOWYxMzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0yMjYsMTEgKzIyNiw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBm
b3IgZHVhbCBHNXMuIDopCiBzdGF0aWMgY29uc3QgaW50IGNMYXlvdXRTY2hlZHVsZVRocmVzaG9s
ZCA9IDI1MDsKIAotLy8gVGhlc2UgZnVuY3Rpb25zIGNhbid0IGhhdmUgaW50ZXJuYWwgbGlua2Fn
ZSBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYXMgdGVtcGxhdGUgYXJndW1lbnRzLgotYm9vbCBrZXlN
YXRjaGVzSWQoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLWJvb2wga2V5TWF0Y2hlc01h
cE5hbWUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLWJvb2wga2V5TWF0Y2hlc0xvd2Vy
Y2FzZWRNYXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7Ci0KIC8vIERPTSBMZXZl
bCAyIHNheXMgKGxldHRlcnMgYWRkZWQpOgogLy8KIC8vIGEpIE5hbWUgc3RhcnQgY2hhcmFjdGVy
cyBtdXN0IGhhdmUgb25lIG9mIHRoZSBjYXRlZ29yaWVzIExsLCBMdSwgTG8sIEx0LCBObC4KQEAg
LTUwNywxMiArNTAyLDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MLCBjb24KICNlbmRpZgogfQogCi1p
bmxpbmUgdm9pZCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpjbGVhcigpCi17Ci0gICAg
bV9tYXAuY2xlYXIoKTsKLSAgICBtX2R1cGxpY2F0ZUNvdW50cy5jbGVhcigpOwotfQotCiB2b2lk
IERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiB7CiAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFz
QmVndW4pOwpAQCAtOTk1LDg3ICs5ODQsMTEgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdAogICAg
IHJldHVybiBjcmVhdGVFbGVtZW50KHFOYW1lLCBmYWxzZSk7CiB9CiAKLWlubGluZSB2b2lkIERv
Y3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVs
ZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQp
OwotCi0gICAgaWYgKCFtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7Ci0gICAgICAg
IC8vIEZhc3QgcGF0aC4gVGhlIGtleSBpcyBub3QgYWxyZWFkeSBpbiBtX2R1cGxpY2F0ZUNvdW50
cywgc28gd2UgYXNzdW1lIHRoYXQgaXQncwotICAgICAgICAvLyBhbHNvIG5vdCBhbHJlYWR5IGlu
IG1fbWFwIGFuZCB0cnkgdG8gYWRkIGl0LiBJZiB0aGF0IGFkZCBzdWNjZWVkcywgd2UncmUgZG9u
ZS4KLSAgICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX21hcC5h
ZGQoa2V5LCBlbGVtZW50KTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gVGhlIGFkZCBmYWlsZWQsIHNvIHRoaXMga2V5IHdh
cyBhbHJlYWR5IGNhY2hlZCBpbiBtX21hcC4KLSAgICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxl
IGVsZW1lbnRzIHdpdGggdGhpcyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKLSAgICAgICAgLy8gY2Fj
aGUgZm9yIHRoaXMga2V5IHNvIGdldCBzZWFyY2hlcyBmb3IgaXQgbmV4dCB0aW1lIGl0IGlzIGNh
bGxlZC4KLSAgICAgICAgbV9tYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7Ci0gICAgICAgIG1f
ZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoZXJl
IGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCi0g
ICAgICAgIC8vIGNhY2hlIGZvciB0aGlzIGtleSBzbyBnZXQgd2lsbCBzZWFyY2ggZm9yIGl0IG5l
eHQgdGltZSBpdCBpcyBjYWxsZWQuCi0gICAgICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9
IG1fbWFwLmZpbmQoa2V5KTsKLSAgICAgICAgaWYgKGNhY2hlZEl0ZW0gIT0gbV9tYXAuZW5kKCkp
IHsKLSAgICAgICAgICAgIG1fbWFwLnJlbW92ZShjYWNoZWRJdGVtKTsKLSAgICAgICAgICAgIG1f
ZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9kdXBs
aWNhdGVDb3VudHMuYWRkKGtleSk7Ci19Ci0KLWlubGluZSB2b2lkIERvY3VtZW50OjpEb2N1bWVu
dE9yZGVyZWRNYXA6OnJlbW92ZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1l
bnQpCi17Ci0gICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotCi0gICAgbV9t
YXAuY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1f
bWFwLmZpbmQoa2V5KTsKLSAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQoKSAmJiBjYWNo
ZWRJdGVtLT5zZWNvbmQgPT0gZWxlbWVudCkKLSAgICAgICAgbV9tYXAucmVtb3ZlKGNhY2hlZEl0
ZW0pOwotICAgIGVsc2UKLSAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMucmVtb3ZlKGtleSk7Ci19
Ci0KLXRlbXBsYXRlPGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJpbmdJbXBsKiwgRWxlbWVudCop
PiBpbmxpbmUgRWxlbWVudCogRG9jdW1lbnQ6OkRvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KEF0b21p
Y1N0cmluZ0ltcGwqIGtleSwgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAotewotICAg
IEFTU0VSVChrZXkpOwotCi0gICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwotCi0gICAgRWxl
bWVudCogZWxlbWVudCA9IG1fbWFwLmdldChrZXkpOwotICAgIGlmIChlbGVtZW50KQotICAgICAg
ICByZXR1cm4gZWxlbWVudDsKLQotICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhr
ZXkpKSB7Ci0gICAgICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0
IG1hdGNoZXM7IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgotICAgICAgICBmb3IgKE5v
ZGUqIG5vZGUgPSBkb2N1bWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJh
dmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUo
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBpZiAoIWtleU1hdGNoZXMoa2V5
LCBlbGVtZW50KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fZHVw
bGljYXRlQ291bnRzLnJlbW92ZShrZXkpOwotICAgICAgICAgICAgbV9tYXAuc2V0KGtleSwgZWxl
bWVudCk7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgfQotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5l
IGJvb2wga2V5TWF0Y2hlc0lkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVu
dCkKLXsKLSAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5nZXRJZEF0dHJp
YnV0ZSgpLmltcGwoKSA9PSBrZXk7Ci19Ci0KIEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50
QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKIHsKICAgICBpZiAoZWxl
bWVudElkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZWxlbWVu
dHNCeUlkLmdldDxrZXlNYXRjaGVzSWQ+KGVsZW1lbnRJZC5pbXBsKCksIHRoaXMpOworICAgIHJl
dHVybiBtX2VsZW1lbnRzQnlJZC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQuaW1wbCgpLCB0aGlz
KTsKIH0KIAogU3RyaW5nIERvY3VtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKQEAgLTM5MDAsMTYg
KzM4MTMsNiBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVJbWFnZU1hcChIVE1MTWFwRWxlbWVudCog
aW1hZ2VNYXApCiAgICAgbV9pbWFnZU1hcHNCeU5hbWUucmVtb3ZlKG5hbWUsIGltYWdlTWFwKTsK
IH0KIAotaW5saW5lIGJvb2wga2V5TWF0Y2hlc01hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCoga2V5
LCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKG1h
cFRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TmFtZSgp
LmltcGwoKSA9PSBrZXk7Ci19Ci0KLWlubGluZSBib29sIGtleU1hdGNoZXNMb3dlcmNhc2VkTWFw
TmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0
dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxl
bWVudCo+KGVsZW1lbnQpLT5nZXROYW1lKCkubG93ZXIoKS5pbXBsKCkgPT0ga2V5OwotfQotCiBI
VE1MTWFwRWxlbWVudCogRG9jdW1lbnQ6OmdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdAogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCkBAIC0zOTE3LDggKzM4MjAsOCBAQCBIVE1M
TWFwRWxlbWVudCogRG9jdW1lbnQ6OmdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dAogICAgIHNpemVfdCBoYXNoUG9zID0gdXJsLmZpbmQoJyMnKTsKICAgICBTdHJpbmcgbmFtZSA9
IChoYXNoUG9zID09IG5vdEZvdW5kID8gdXJsIDogdXJsLnN1YnN0cmluZyhoYXNoUG9zICsgMSkp
LmltcGwoKTsKICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0PGtleU1hdGNoZXNM
b3dlcmNhc2VkTWFwTmFtZT4oQXRvbWljU3RyaW5nKG5hbWUubG93ZXIoKSkuaW1wbCgpLCB0aGlz
KSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNC
eU5hbWUuZ2V0PGtleU1hdGNoZXNNYXBOYW1lPihBdG9taWNTdHJpbmcobmFtZSkuaW1wbCgpLCB0
aGlzKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KG1faW1h
Z2VNYXBzQnlOYW1lLmdldEVsZW1lbnRCeUxvd2VyY2FzZWRNYXBOYW1lKEF0b21pY1N0cmluZyhu
YW1lLmxvd2VyKCkpLmltcGwoKSwgdGhpcykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
TWFwRWxlbWVudCo+KG1faW1hZ2VNYXBzQnlOYW1lLmdldEVsZW1lbnRCeU1hcE5hbWUoQXRvbWlj
U3RyaW5nKG5hbWUpLmltcGwoKSwgdGhpcykpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXREZWNv
ZGVyKFBhc3NSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggZjNkOGU3N2U5YTE4ZDlhZTI3MWM0MDM2OGU3ZDdmZjQ3MTgzZGFlMC4uMGMx
YjIxYTY5ZDYxMWYyZjFjNGVkNDc2Nzk0ZTJlYmViNTIyMDE5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTMzLDE1ICszMywxNiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29u
dGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50T3JkZXJlZE1hcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAi
UXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZpeGVkQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiAjaWYgVVNFKEpTQykKICNpbmNsdWRlIDxydW50aW1l
L1dlYWtHQ01hcC5oPgpAQCAtMTA5NSwyOCArMTA5Niw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIAogcHJpdmF0
ZToKLSAgICBjbGFzcyBEb2N1bWVudE9yZGVyZWRNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAg
dm9pZCBhZGQoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLSAgICAgICAgdm9pZCByZW1v
dmUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLSAgICAgICAgdm9pZCBjbGVhcigpOwot
Ci0gICAgICAgIGJvb2wgY29udGFpbnMoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0OwotICAgICAg
ICBib29sIGNvbnRhaW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0OwotICAgICAg
ICB0ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKT4g
RWxlbWVudCogZ2V0KEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1bWVudCopIGNvbnN0Owot
Ci0gICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kj4gTWFw
OwotCi0gICAgICAgIC8vIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBtX2R1cGxpY2F0
ZUNvdW50cyBpcyB0aGUgY291bnQgb2YgYWxsIGVsZW1lbnRzIHdpdGggYSBnaXZlbiBrZXkKLSAg
ICAgICAgLy8gZXhjbHVkaW5nIHRoZSBvbmUgcmVmZXJlbmNlZCBpbiBtX21hcCwgaWYgYW55LiBU
aGlzIG1lYW5zIGl0IG9uZSBsZXNzIHRoYW4gdGhlIHRvdGFsIGNvdW50Ci0gICAgICAgIC8vIHdo
ZW4gdGhlIGZpcnN0IG5vZGUgd2l0aCBhIGdpdmVuIGtleSBpcyBjYWNoZWQsIG90aGVyd2lzZSB0
aGUgc2FtZSBhcyB0aGUgdG90YWwgY291bnQuCi0gICAgICAgIG11dGFibGUgTWFwIG1fbWFwOwot
ICAgICAgICBtdXRhYmxlIEhhc2hDb3VudGVkU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX2R1cGxp
Y2F0ZUNvdW50czsKLSAgICB9OwotCiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZl
V3JpdGVDb3VudEluY3JlbWVudGVyOwogCiAgICAgdm9pZCBkZXRhY2hQYXJzZXIoKTsKQEAgLTE0
MTIsMTYgKzEzOTEsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1pbmxpbmUgYm9vbCBEb2N1
bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWlucyhBdG9taWNTdHJpbmdJbXBsKiBpZCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXAuY29udGFpbnMoaWQpIHx8IG1fZHVwbGljYXRlQ291
bnRzLmNvbnRhaW5zKGlkKTsKLX0KLQotaW5saW5lIGJvb2wgRG9jdW1lbnQ6OkRvY3VtZW50T3Jk
ZXJlZE1hcDo6Y29udGFpbnNNdWx0aXBsZShBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoaWQpOwotfQotCiBpbmxpbmUg
Ym9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29u
c3QKIHsKICAgICBBU1NFUlQoaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ODdmY2Y0NjQ1Y2EyZjE1YjRlZTk5MWUxN2NiOTMyYTA2ZWU4
YjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJl
ZE1hcC5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVudE9yZGVyZWRNYXAuaCIKKworI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CisKK2lubGluZSBib29sIGtleU1hdGNoZXNJZChBdG9taWNTdHJpbmdJbXBsKiBr
ZXksIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0lEKCkgJiYg
ZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0ga2V5OworfQorCitpbmxpbmUgYm9v
bCBrZXlNYXRjaGVzTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSAmJiBzdGF0aWNf
Y2FzdDxIVE1MTWFwRWxlbWVudCo+KGVsZW1lbnQpLT5nZXROYW1lKCkuaW1wbCgpID09IGtleTsK
K30KKworaW5saW5lIGJvb2wga2V5TWF0Y2hlc0xvd2VyY2FzZWRNYXBOYW1lKEF0b21pY1N0cmlu
Z0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC0+aGFz
VGFnTmFtZShtYXBUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4oZWxlbWVudCkt
PmdldE5hbWUoKS5sb3dlcigpLmltcGwoKSA9PSBrZXk7Cit9CisKK3ZvaWQgRG9jdW1lbnRPcmRl
cmVkTWFwOjpjbGVhcigpCit7CisgICAgbV9tYXAuY2xlYXIoKTsKKyAgICBtX2R1cGxpY2F0ZUNv
dW50cy5jbGVhcigpOworfQorCit2b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6YWRkKEF0b21pY1N0
cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoa2V5KTsKKyAg
ICBBU1NFUlQoZWxlbWVudCk7CisKKyAgICBpZiAoIW1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5z
KGtleSkpIHsKKyAgICAgICAgLy8gRmFzdCBwYXRoLiBUaGUga2V5IGlzIG5vdCBhbHJlYWR5IGlu
IG1fZHVwbGljYXRlQ291bnRzLCBzbyB3ZSBhc3N1bWUgdGhhdCBpdCdzCisgICAgICAgIC8vIGFs
c28gbm90IGFscmVhZHkgaW4gbV9tYXAgYW5kIHRyeSB0byBhZGQgaXQuIElmIHRoYXQgYWRkIHN1
Y2NlZWRzLCB3ZSdyZSBkb25lLgorICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IGFk
ZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGVsZW1lbnQpOworICAgICAgICBpZiAoYWRkUmVzdWx0
LnNlY29uZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBUaGUgYWRkIGZhaWxl
ZCwgc28gdGhpcyBrZXkgd2FzIGFscmVhZHkgY2FjaGVkIGluIG1fbWFwLgorICAgICAgICAvLyBU
aGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21h
cAorICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBrZXkgc28gZ2V0IHNlYXJjaGVzIGZvciBpdCBu
ZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgorICAgICAgICBtX21hcC5yZW1vdmUoYWRkUmVzdWx0LmZp
cnN0KTsKKyAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhpcyBrZXkuIFJl
bW92ZSB0aGUgbV9tYXAKKyAgICAgICAgLy8gY2FjaGUgZm9yIHRoaXMga2V5IHNvIGdldCB3aWxs
IHNlYXJjaCBmb3IgaXQgbmV4dCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgICAgTWFwOjppdGVy
YXRvciBjYWNoZWRJdGVtID0gbV9tYXAuZmluZChrZXkpOworICAgICAgICBpZiAoY2FjaGVkSXRl
bSAhPSBtX21hcC5lbmQoKSkgeworICAgICAgICAgICAgbV9tYXAucmVtb3ZlKGNhY2hlZEl0ZW0p
OworICAgICAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBtX2R1cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKK30KKwordm9pZCBEb2N1bWVu
dE9yZGVyZWRNYXA6OnJlbW92ZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgQVNTRVJUKGtleSk7CisgICAgQVNTRVJUKGVsZW1lbnQpOworCisgICAgbV9t
YXAuY2hlY2tDb25zaXN0ZW5jeSgpOworICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1f
bWFwLmZpbmQoa2V5KTsKKyAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQoKSAmJiBjYWNo
ZWRJdGVtLT5zZWNvbmQgPT0gZWxlbWVudCkKKyAgICAgICAgbV9tYXAucmVtb3ZlKGNhY2hlZEl0
ZW0pOworICAgIGVsc2UKKyAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMucmVtb3ZlKGtleSk7Cit9
CisKK3RlbXBsYXRlPGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJpbmdJbXBsKiwgRWxlbWVudCop
PgoraW5saW5lIEVsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KEF0b21pY1N0cmluZ0lt
cGwqIGtleSwgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAoreworICAgIEFTU0VSVChr
ZXkpOworCisgICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOworCisgICAgRWxlbWVudCogZWxl
bWVudCA9IG1fbWFwLmdldChrZXkpOworICAgIGlmIChlbGVtZW50KQorICAgICAgICByZXR1cm4g
ZWxlbWVudDsKKworICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7Cisg
ICAgICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0IG1hdGNoZXM7
IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgorICAgICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBkb2N1bWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0
Tm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSk7CisgICAgICAgICAgICBpZiAoIWtleU1hdGNoZXMoa2V5LCBlbGVtZW50
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG1fZHVwbGljYXRlQ291
bnRzLnJlbW92ZShrZXkpOworICAgICAgICAgICAgbV9tYXAuc2V0KGtleSwgZWxlbWVudCk7Cisg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworRWxlbWVudCogRG9jdW1l
bnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0
IERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0PGtleU1hdGNoZXNJ
ZD4oa2V5LCBkb2N1bWVudCk7Cit9CisKK0VsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0
RWxlbWVudEJ5TWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IERvY3VtZW50KiBk
b2N1bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0PGtleU1hdGNoZXNNYXBOYW1lPihrZXks
IGRvY3VtZW50KTsKK30KKworRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50
QnlMb3dlcmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IERvY3VtZW50
KiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0PGtleU1hdGNoZXNMb3dlcmNhc2Vk
TWFwTmFtZT4oa2V5LCBkb2N1bWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NzY3YzY0
MzM3MWNjYWUyZGVmYWYzMWM5OTI1NjlkODY3NDhjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmgKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEb2N1bWVudE9yZGVyZWRNYXBf
aAorI2RlZmluZSBEb2N1bWVudE9yZGVyZWRNYXBfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hDb3Vu
dGVkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1l
bnQ7CitjbGFzcyBFbGVtZW50OworCitjbGFzcyBEb2N1bWVudE9yZGVyZWRNYXAgeworcHVibGlj
OgorICAgIHZvaWQgYWRkKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7CisgICAgdm9pZCBy
ZW1vdmUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKKyAgICB2b2lkIGNsZWFyKCk7CisK
KyAgICBib29sIGNvbnRhaW5zKEF0b21pY1N0cmluZ0ltcGwqKSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0OworICAgIC8vIGNvbmNyZXRl
IGluc3RhbnRpYXRpb25zIG9mIHRoZSBnZXQ8PigpIG1ldGhvZCB0ZW1wbGF0ZQorICAgIEVsZW1l
bnQqIGdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1bWVudCopIGNv
bnN0OworICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeU1hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCos
IGNvbnN0IERvY3VtZW50KikgY29uc3Q7CisgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5TG93ZXJj
YXNlZE1hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCosIGNvbnN0IERvY3VtZW50KikgY29uc3Q7CisK
KyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZTxib29sIGtleU1hdGNoZXMoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKT4gRWxlbWVu
dCogZ2V0KEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1bWVudCopIGNvbnN0OworCisgICAg
dHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kj4gTWFwOworCisgICAg
Ly8gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IG1fZHVwbGljYXRlQ291bnRzIGlzIHRo
ZSBjb3VudCBvZiBhbGwgZWxlbWVudHMgd2l0aCBhIGdpdmVuIGtleQorICAgIC8vIGV4Y2x1ZGlu
ZyB0aGUgb25lIHJlZmVyZW5jZWQgaW4gbV9tYXAsIGlmIGFueS4gVGhpcyBtZWFucyBpdCBvbmUg
bGVzcyB0aGFuIHRoZSB0b3RhbCBjb3VudAorICAgIC8vIHdoZW4gdGhlIGZpcnN0IG5vZGUgd2l0
aCBhIGdpdmVuIGtleSBpcyBjYWNoZWQsIG90aGVyd2lzZSB0aGUgc2FtZSBhcyB0aGUgdG90YWwg
Y291bnQuCisgICAgbXV0YWJsZSBNYXAgbV9tYXA7CisgICAgbXV0YWJsZSBIYXNoQ291bnRlZFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4gbV9kdXBsaWNhdGVDb3VudHM7Cit9OworCitpbmxpbmUgYm9v
bCBEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25z
dAoreworICAgIHJldHVybiBtX21hcC5jb250YWlucyhpZCkgfHwgbV9kdXBsaWNhdGVDb3VudHMu
Y29udGFpbnMoaWQpOworfQorCitpbmxpbmUgYm9vbCBEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRh
aW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
ZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGlkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRG9jdW1lbnRPcmRlcmVkTWFwX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80617</attachid>
            <date>2011-01-30 21:45:10 -0800</date>
            <delta_ts>2011-01-31 01:02:21 -0800</delta_ts>
            <desc>Patch, try again</desc>
            <filename>bug-53289-20110131144508.patch</filename>
            <type>text/plain</type>
            <size>26055</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWY1ODIwNDU5OGNlNDJkNTUwODhmMTFkYzYxNWYzZTY2NmI0N2Y1Li4x
YWMyZjMxOTg0Y2NjZWYxZDMzYzRjMTBhMjYxOGNhNjgzNzNjZWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzggQEAKKzIwMTEtMDEtMzEgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDUzMjg5IC0gRE9NOiBNb3ZlIERvY3VtZW50T3JkZXJlZE1hcCBmcm9tIERvY3Vt
ZW50IGludG8gc2VwYXJhdGUgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUzMjg5CisKKyAgICAgICAgTW92aW5nIHRoZSBuZXN0ZWQgY2xhc3Mg
RG9jdW1lbnRPcmRlcmVkTWFwIGZyb20gRG9jdW1lbnQgaW50byBzZXBhcmF0ZSBmaWxlcywKKyAg
ICAgICAgdXBkYXRpbmcgY29kZSB3aGVyZSBuZWNlc3NhcnkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAocmVmYWN0b3JpbmcpCisKKyAgICAgICAgKiBHTlVNYWtlZmlsZS5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVu
dEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEltYWdlTWFwKToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjprZXlNYXRjaGVzSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6a2V5TWF0Y2hlc01hcE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6a2V5TWF0Y2hlc0xv
d2VyY2FzZWRNYXBOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjphZGQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU1hcE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlMb3dlcmNhc2VkTWFwTmFtZSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRP
cmRlcmVkTWFwOjpjb250YWluc011bHRpcGxlKToKKwogMjAxMS0wMS0yNyAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEds
YXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGMxNzNlODc1NTk4MzhhNDhhODA4NTgwNGZm
OTJiMTEyZThiYWZhZDQuLjhkZWY2NjI3NTRiYzkzZGYzMmMzNGVhZDA2N2EzMmVhYzcwNDQ3OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMTY3LDYgKzExNjcsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50VGltaW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGFiNzJiY2U4OTU2MTJkMGNh
ZGIzNWY4NWEyMzM0MzQwMDVlNmM4ODkuLjRjMjQyNTExN2MyN2JhNjZjMDVlODNlM2I1ZTI4N2Jm
YWI4OGI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEyMjAsNiArMTIyMCw4IEBACiAgICAgICAg
ICAgICAnZG9tL0RvY3VtZW50TWFya2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmgnLAorICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwJywKKyAg
ICAgICAgICAgICdkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmgnLAogICAgICAgICAgICAgJ2RvbS9E
b2N1bWVudFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudFBhcnNlci5oJywK
ICAgICAgICAgICAgICdkb20vRG9jdW1lbnRUaW1pbmcuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDEwZDBiYzY5ZTNmZDhjZDg1MzdjNTk1
ZTliNjM1NWRlNmMxOGNmMTYuLjUzNWY5NTc1YTlmOTNmNjZjOWRlMjZkZDE1NWQ2MmJlZTUxZWQ4
ZTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC00MzAyMiw2ICs0MzAyMiw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCIKKwkJCQk+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfTFRDR3xXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRG9j
dW1lbnRPcmRlcmVkTWFwLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxEb2N1bWVudFBhcnNlci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDk4YWE0Yzc1NzUwZjdlZTgzNTE3YTg4NzdlMGU1NmI2ZTJhOTMwMjQu
LjQ1YmNjOWM0ZjJkMThjNmU1YTdmYWE0ODNhODY1OTRlZTRiM2NhNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwMiw2ICsz
MDIsOCBAQAogCQkxNDIwMTFCNzBBMDAzMTMzMDA4MzAzRjkgLyogSlNDU1NTdHlsZURlY2xhcmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDIw
MTFCNTBBMDAzMTMzMDA4MzAzRjkgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQzMkU4NDcwQzUxNDkz
ODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQzMkU4NDYwQzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0
MzJFODQ5MEM1MTQ5M0YwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzMkU4NDgwQzUxNDkzRjAwQjE1MDBG
IC8qIEdDQ29udHJvbGxlci5jcHAgKi87IH07CisJCTE0M0M4ODc5MTJGNjdDN0UwMDUyRkZEMCAv
KiBEb2N1bWVudE9yZGVyZWRNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQzQzg4NzcxMkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJl
ZE1hcC5jcHAgKi87IH07CisJCTE0M0M4ODdBMTJGNjdDN0UwMDUyRkZEMCAvKiBEb2N1bWVudE9y
ZGVyZWRNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0M0M4ODc4MTJGNjdDN0UwMDUyRkZEMCAvKiBEb2N1bWVudE9yZGVyZWRNYXAuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDQ5RTI0QzEwN0Q0
QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjRBMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxi
YWNrRGF0YS5oICovOyB9OwogCQkxNDQ5RTI4NzEwN0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFj
a0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQ0OUUyODYxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCAqLzsgfTsKIAkJ
MTQ3N0U3NzYwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc3RTc3NDBCRjQxMzRBMDAxNTI4NzIg
LyogUGFnZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTY2MjQsNiArNjYyNiw4IEBACiAJCTE0MjAxMUI1
MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDMyRTg0NjBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ0NvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzMkU4NDgwQzUxNDkzRjAwQjE1MDBGIC8q
IEdDQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R0NDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQzQzg4Nzcx
MkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1hcC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudE9yZGVyZWRNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxNDNDODg3ODEyRjY3QzdFMDA1MkZGRDAgLyogRG9jdW1lbnRP
cmRlcmVkTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50T3Jk
ZXJlZE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQ5RTI0QTEwN0Q0QTg0
MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNDYWxsYmFja0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0
OUUyODYxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3N0U3NzQwQkY0MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUNhY2hlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4OTg4LDYgKzE4OTkyLDggQEAKIAkJCQlF
RDJCQTgzQjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLywKIAkJCQlDRTA1
N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLywK
IAkJCQlDRTA1N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmggKi8sCisJCQkJMTQzQzg4NzcxMkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1h
cC5jcHAgKi8sCisJCQkJMTQzQzg4NzgxMkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJl
ZE1hcC5oICovLAogCQkJCUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNl
ci5jcHAgKi8sCiAJCQkJQkNDRkJBRTcwQjUxNTJFRDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2Vy
LmggKi8sCiAJCQkJODZEOTgyRjYxMjVDMTU0MDAwQUQ5RTNEIC8qIERvY3VtZW50VGltaW5nLmgg
Ki8sCkBAIC0yMjQ1OCw2ICsyMjQ2NCw3IEBACiAJCQkJOTc3RTJEQ0UxMkYwRTI4MzAwQzEzMzc5
IC8qIEhUTUxTb3VyY2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEy
RjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQzQzg4
N0ExMkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yNTE1Niw2ICsyNTE2Myw3IEBACiAJCQkJOTc3RTJEQ0QxMkYwRTI4MzAwQzEzMzc5IC8q
IEhUTUxTb3VyY2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYx
MkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQz
Qzg4NzkxMkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1hcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZhZGVmMjY5MzBjZmU4Nzk3YmE0YmNm
YTgxMjk0ODRhNjlhMjg0ZGUuLmNiOWEyYWJmMDAyYWMzZmIzODE5N2IwOWNiYzM0ZWQ1MDlmMTMw
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjI2LDExICsyMjYsNiBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogLy8gZm9yIGR1YWwgRzVzLiA6KQogc3RhdGljIGNvbnN0IGlu
dCBjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSAyNTA7CiAKLS8vIFRoZXNlIGZ1bmN0aW9ucyBj
YW4ndCBoYXZlIGludGVybmFsIGxpbmthZ2UgYmVjYXVzZSB0aGV5IGFyZSB1c2VkIGFzIHRlbXBs
YXRlIGFyZ3VtZW50cy4KLWJvb2wga2V5TWF0Y2hlc0lkKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVt
ZW50Kik7Ci1ib29sIGtleU1hdGNoZXNNYXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50
Kik7Ci1ib29sIGtleU1hdGNoZXNMb3dlcmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiwg
RWxlbWVudCopOwotCiAvLyBET00gTGV2ZWwgMiBzYXlzIChsZXR0ZXJzIGFkZGVkKToKIC8vCiAv
LyBhKSBOYW1lIHN0YXJ0IGNoYXJhY3RlcnMgbXVzdCBoYXZlIG9uZSBvZiB0aGUgY2F0ZWdvcmll
cyBMbCwgTHUsIExvLCBMdCwgTmwuCkBAIC01MDcsMTIgKzUwMiw2IEBAIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlz
SFRNTCwgY29uCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgRG9jdW1lbnQ6OkRvY3VtZW50T3Jk
ZXJlZE1hcDo6Y2xlYXIoKQotewotICAgIG1fbWFwLmNsZWFyKCk7Ci0gICAgbV9kdXBsaWNhdGVD
b3VudHMuY2xlYXIoKTsKLX0KLQogdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogewog
ICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKQEAgLTk5NSw4NyArOTg0LDExIEBAIFBh
c3NSZWZQdHI8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyhjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QKICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChxTmFtZSwgZmFs
c2UpOwogfQogCi1pbmxpbmUgdm9pZCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjphZGQo
QXRvbWljU3RyaW5nSW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChr
ZXkpOwotICAgIEFTU0VSVChlbGVtZW50KTsKLQotICAgIGlmICghbV9kdXBsaWNhdGVDb3VudHMu
Y29udGFpbnMoa2V5KSkgewotICAgICAgICAvLyBGYXN0IHBhdGguIFRoZSBrZXkgaXMgbm90IGFs
cmVhZHkgaW4gbV9kdXBsaWNhdGVDb3VudHMsIHNvIHdlIGFzc3VtZSB0aGF0IGl0J3MKLSAgICAg
ICAgLy8gYWxzbyBub3QgYWxyZWFkeSBpbiBtX21hcCBhbmQgdHJ5IHRvIGFkZCBpdC4gSWYgdGhh
dCBhZGQgc3VjY2VlZHMsIHdlJ3JlIGRvbmUuCi0gICAgICAgIHBhaXI8TWFwOjppdGVyYXRvciwg
Ym9vbD4gYWRkUmVzdWx0ID0gbV9tYXAuYWRkKGtleSwgZWxlbWVudCk7Ci0gICAgICAgIGlmIChh
ZGRSZXN1bHQuc2Vjb25kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIFRoZSBh
ZGQgZmFpbGVkLCBzbyB0aGlzIGtleSB3YXMgYWxyZWFkeSBjYWNoZWQgaW4gbV9tYXAuCi0gICAg
ICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1vdmUg
dGhlIG1fbWFwCi0gICAgICAgIC8vIGNhY2hlIGZvciB0aGlzIGtleSBzbyBnZXQgc2VhcmNoZXMg
Zm9yIGl0IG5leHQgdGltZSBpdCBpcyBjYWxsZWQuCi0gICAgICAgIG1fbWFwLnJlbW92ZShhZGRS
ZXN1bHQuZmlyc3QpOwotICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlz
IGtleS4gUmVtb3ZlIHRoZSBtX21hcAotICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBrZXkgc28g
Z2V0IHdpbGwgc2VhcmNoIGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgotICAgICAgICBN
YXA6Oml0ZXJhdG9yIGNhY2hlZEl0ZW0gPSBtX21hcC5maW5kKGtleSk7Ci0gICAgICAgIGlmIChj
YWNoZWRJdGVtICE9IG1fbWFwLmVuZCgpKSB7Ci0gICAgICAgICAgICBtX21hcC5yZW1vdmUoY2Fj
aGVkSXRlbSk7Ci0gICAgICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIG1fZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwotfQotCi1pbmxp
bmUgdm9pZCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpyZW1vdmUoQXRvbWljU3RyaW5n
SW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIEFTU0VSVChrZXkpOwotICAgIEFT
U0VSVChlbGVtZW50KTsKLQotICAgIG1fbWFwLmNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICBNYXA6
Oml0ZXJhdG9yIGNhY2hlZEl0ZW0gPSBtX21hcC5maW5kKGtleSk7Ci0gICAgaWYgKGNhY2hlZEl0
ZW0gIT0gbV9tYXAuZW5kKCkgJiYgY2FjaGVkSXRlbS0+c2Vjb25kID09IGVsZW1lbnQpCi0gICAg
ICAgIG1fbWFwLnJlbW92ZShjYWNoZWRJdGVtKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZHVwbGlj
YXRlQ291bnRzLnJlbW92ZShrZXkpOwotfQotCi10ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMoQXRv
bWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKT4gaW5saW5lIEVsZW1lbnQqIERvY3VtZW50OjpEb2N1
bWVudE9yZGVyZWRNYXA6OmdldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IERvY3VtZW50
KiBkb2N1bWVudCkgY29uc3QKLXsKLSAgICBBU1NFUlQoa2V5KTsKLQotICAgIG1fbWFwLmNoZWNr
Q29uc2lzdGVuY3koKTsKLQotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX21hcC5nZXQoa2V5KTsK
LSAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0KLSAgICBpZiAobV9k
dXBsaWNhdGVDb3VudHMuY29udGFpbnMoa2V5KSkgewotICAgICAgICAvLyBXZSBrbm93IHRoZXJl
J3MgYXQgbGVhc3Qgb25lIG5vZGUgdGhhdCBtYXRjaGVzOyBpdGVyYXRlIHRvIGZpbmQgdGhlIGZp
cnN0IG9uZS4KLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmZpcnN0Q2hpbGQo
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewotICAgICAgICAgICAg
aWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwotICAgICAg
ICAgICAgaWYgKCFrZXlNYXRjaGVzKGtleSwgZWxlbWVudCkpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5yZW1vdmUoa2V5KTsKLSAgICAg
ICAgICAgIG1fbWFwLnNldChrZXksIGVsZW1lbnQpOwotICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBib29sIGtleU1hdGNoZXNJZChBdG9taWNTdHJpbmdJ
bXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmhhc0lE
KCkgJiYgZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0ga2V5OwotfQotCiBFbGVt
ZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
SWQpIGNvbnN0CiB7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5nZXQ8a2V5TWF0Y2hlc0lkPihlbGVtZW50
SWQuaW1wbCgpLCB0aGlzKTsKKyAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQuZ2V0RWxlbWVudEJ5
SWQoZWxlbWVudElkLmltcGwoKSwgdGhpcyk7CiB9CiAKIFN0cmluZyBEb2N1bWVudDo6cmVhZHlT
dGF0ZSgpIGNvbnN0CkBAIC0zOTAwLDE2ICszODEzLDYgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3Zl
SW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqIGltYWdlTWFwKQogICAgIG1faW1hZ2VNYXBzQnlOYW1l
LnJlbW92ZShuYW1lLCBpbWFnZU1hcCk7CiB9CiAKLWlubGluZSBib29sIGtleU1hdGNoZXNNYXBO
YW1lKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICByZXR1
cm4gZWxlbWVudC0+aGFzVGFnTmFtZShtYXBUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVt
ZW50Kj4oZWxlbWVudCktPmdldE5hbWUoKS5pbXBsKCkgPT0ga2V5OwotfQotCi1pbmxpbmUgYm9v
bCBrZXlNYXRjaGVzTG93ZXJjYXNlZE1hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBFbGVt
ZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKG1hcFRhZykg
JiYgc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TmFtZSgpLmxvd2Vy
KCkuaW1wbCgpID09IGtleTsKLX0KLQogSFRNTE1hcEVsZW1lbnQqIERvY3VtZW50OjpnZXRJbWFn
ZU1hcChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQpA
QCAtMzkxNyw4ICszODIwLDggQEAgSFRNTE1hcEVsZW1lbnQqIERvY3VtZW50OjpnZXRJbWFnZU1h
cChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKICAgICBzaXplX3QgaGFzaFBvcyA9IHVybC5maW5k
KCcjJyk7CiAgICAgU3RyaW5nIG5hbWUgPSAoaGFzaFBvcyA9PSBub3RGb3VuZCA/IHVybCA6IHVy
bC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7CiAgICAgaWYgKGlzSFRNTERvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KG1faW1hZ2VN
YXBzQnlOYW1lLmdldDxrZXlNYXRjaGVzTG93ZXJjYXNlZE1hcE5hbWU+KEF0b21pY1N0cmluZyhu
YW1lLmxvd2VyKCkpLmltcGwoKSwgdGhpcykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
TWFwRWxlbWVudCo+KG1faW1hZ2VNYXBzQnlOYW1lLmdldDxrZXlNYXRjaGVzTWFwTmFtZT4oQXRv
bWljU3RyaW5nKG5hbWUpLmltcGwoKSwgdGhpcykpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlMb3dlcmNh
c2VkTWFwTmFtZShBdG9taWNTdHJpbmcobmFtZS5sb3dlcigpKS5pbXBsKCksIHRoaXMpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5n
ZXRFbGVtZW50QnlNYXBOYW1lKEF0b21pY1N0cmluZyhuYW1lKS5pbXBsKCksIHRoaXMpKTsKIH0K
IAogdm9pZCBEb2N1bWVudDo6c2V0RGVjb2RlcihQYXNzUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJlN2UwMGEzZWI0M2NiYzMxZjlm
YzRlOWFlODZlYTcxZDUwOTBlMmQuLmEyNzAyZmQ4MTUxZTEzZjM1YzE2OTJlMTg5YmIxYjk4N2U4
ZjI2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMywxNSArMzMsMTYgQEAKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJET01UaW1l
U3RhbXAuaCIKKyNpbmNsdWRlICJEb2N1bWVudE9yZGVyZWRNYXAuaCIKICNpbmNsdWRlICJEb2N1
bWVudFRpbWluZy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWV3
cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+Ci0jaW5jbHVkZSA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogI2lmIFVT
RShKU0MpCiAjaW5jbHVkZSA8cnVudGltZS9XZWFrR0NNYXAuaD4KQEAgLTEwOTUsMjggKzEwOTYs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lv
biA9IFN0cmluZygpOyB9CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgRG9jdW1lbnRPcmRlcmVkTWFw
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgYWRkKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVt
ZW50Kik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7
Ci0gICAgICAgIHZvaWQgY2xlYXIoKTsKLQotICAgICAgICBib29sIGNvbnRhaW5zKEF0b21pY1N0
cmluZ0ltcGwqKSBjb25zdDsKLSAgICAgICAgYm9vbCBjb250YWluc011bHRpcGxlKEF0b21pY1N0
cmluZ0ltcGwqKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBrZXlNYXRjaGVzKEF0b21p
Y1N0cmluZ0ltcGwqLCBFbGVtZW50Kik+IEVsZW1lbnQqIGdldChBdG9taWNTdHJpbmdJbXBsKiwg
Y29uc3QgRG9jdW1lbnQqKSBjb25zdDsKLQotICAgICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3ko
KSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgRWxlbWVudCo+IE1hcDsKLQotICAgICAgICAvLyBXZSBtYWludGFpbiB0aGUg
aW52YXJpYW50IHRoYXQgbV9kdXBsaWNhdGVDb3VudHMgaXMgdGhlIGNvdW50IG9mIGFsbCBlbGVt
ZW50cyB3aXRoIGEgZ2l2ZW4ga2V5Ci0gICAgICAgIC8vIGV4Y2x1ZGluZyB0aGUgb25lIHJlZmVy
ZW5jZWQgaW4gbV9tYXAsIGlmIGFueS4gVGhpcyBtZWFucyBpdCBvbmUgbGVzcyB0aGFuIHRoZSB0
b3RhbCBjb3VudAotICAgICAgICAvLyB3aGVuIHRoZSBmaXJzdCBub2RlIHdpdGggYSBnaXZlbiBr
ZXkgaXMgY2FjaGVkLCBvdGhlcndpc2UgdGhlIHNhbWUgYXMgdGhlIHRvdGFsIGNvdW50LgotICAg
ICAgICBtdXRhYmxlIE1hcCBtX21hcDsKLSAgICAgICAgbXV0YWJsZSBIYXNoQ291bnRlZFNldDxB
dG9taWNTdHJpbmdJbXBsKj4gbV9kdXBsaWNhdGVDb3VudHM7Ci0gICAgfTsKLQogICAgIGZyaWVu
ZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKIAogICAgIHZv
aWQgZGV0YWNoUGFyc2VyKCk7CkBAIC0xNDEyLDE2ICsxMzkxLDYgQEAgcHJpdmF0ZToKICNlbmRp
ZgogfTsKIAotaW5saW5lIGJvb2wgRG9jdW1lbnQ6OkRvY3VtZW50T3JkZXJlZE1hcDo6Y29udGFp
bnMoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWFwLmNvbnRh
aW5zKGlkKSB8fCBtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhpZCk7Ci19Ci0KLWlubGluZSBi
b29sIERvY3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zTXVsdGlwbGUoQXRvbWlj
U3RyaW5nSW1wbCogaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZHVwbGljYXRlQ291bnRzLmNv
bnRhaW5zKGlkKTsKLX0KLQogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRoSWQo
QXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg3ZmNmNDY0NWNh
MmYxNWI0ZWU5OTFlMTdjYjkzMmEwNmVlOGIzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC0wLDAgKzEsMTUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnRPcmRlcmVkTWFwLmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TE1hcEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitpbmxpbmUgYm9vbCBrZXlNYXRj
aGVzSWQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJl
dHVybiBlbGVtZW50LT5oYXNJRCgpICYmIGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuaW1wbCgp
ID09IGtleTsKK30KKworaW5saW5lIGJvb2wga2V5TWF0Y2hlc01hcE5hbWUoQXRvbWljU3RyaW5n
SW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiBlbGVtZW50LT5oYXNU
YWdOYW1lKG1hcFRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihlbGVtZW50KS0+
Z2V0TmFtZSgpLmltcGwoKSA9PSBrZXk7Cit9CisKK2lubGluZSBib29sIGtleU1hdGNoZXNMb3dl
cmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCit7
CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSAmJiBzdGF0aWNfY2FzdDxI
VE1MTWFwRWxlbWVudCo+KGVsZW1lbnQpLT5nZXROYW1lKCkubG93ZXIoKS5pbXBsKCkgPT0ga2V5
OworfQorCit2b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6Y2xlYXIoKQoreworICAgIG1fbWFwLmNs
ZWFyKCk7CisgICAgbV9kdXBsaWNhdGVDb3VudHMuY2xlYXIoKTsKK30KKwordm9pZCBEb2N1bWVu
dE9yZGVyZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgQVNTRVJUKGtleSk7CisgICAgQVNTRVJUKGVsZW1lbnQpOworCisgICAgaWYgKCFt
X2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7CisgICAgICAgIC8vIEZhc3QgcGF0aC4g
VGhlIGtleSBpcyBub3QgYWxyZWFkeSBpbiBtX2R1cGxpY2F0ZUNvdW50cywgc28gd2UgYXNzdW1l
IHRoYXQgaXQncworICAgICAgICAvLyBhbHNvIG5vdCBhbHJlYWR5IGluIG1fbWFwIGFuZCB0cnkg
dG8gYWRkIGl0LiBJZiB0aGF0IGFkZCBzdWNjZWVkcywgd2UncmUgZG9uZS4KKyAgICAgICAgcGFp
cjxNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBlbGVtZW50
KTsKKyAgICAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgLy8gVGhlIGFkZCBmYWlsZWQsIHNvIHRoaXMga2V5IHdhcyBhbHJlYWR5IGNhY2hl
ZCBpbiBtX21hcC4KKyAgICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGgg
dGhpcyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKKyAgICAgICAgLy8gY2FjaGUgZm9yIHRoaXMga2V5
IHNvIGdldCBzZWFyY2hlcyBmb3IgaXQgbmV4dCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgICAg
bV9tYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7CisgICAgICAgIG1fZHVwbGljYXRlQ291bnRz
LmFkZChrZXkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBl
bGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCisgICAgICAgIC8vIGNhY2hl
IGZvciB0aGlzIGtleSBzbyBnZXQgd2lsbCBzZWFyY2ggZm9yIGl0IG5leHQgdGltZSBpdCBpcyBj
YWxsZWQuCisgICAgICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1fbWFwLmZpbmQoa2V5
KTsKKyAgICAgICAgaWYgKGNhY2hlZEl0ZW0gIT0gbV9tYXAuZW5kKCkpIHsKKyAgICAgICAgICAg
IG1fbWFwLnJlbW92ZShjYWNoZWRJdGVtKTsKKyAgICAgICAgICAgIG1fZHVwbGljYXRlQ291bnRz
LmFkZChrZXkpOworICAgICAgICB9CisgICAgfQorCisgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRk
KGtleSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRPcmRlcmVkTWFwOjpyZW1vdmUoQXRvbWljU3RyaW5n
SW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChrZXkpOworICAgIEFT
U0VSVChlbGVtZW50KTsKKworICAgIG1fbWFwLmNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICBNYXA6
Oml0ZXJhdG9yIGNhY2hlZEl0ZW0gPSBtX21hcC5maW5kKGtleSk7CisgICAgaWYgKGNhY2hlZEl0
ZW0gIT0gbV9tYXAuZW5kKCkgJiYgY2FjaGVkSXRlbS0+c2Vjb25kID09IGVsZW1lbnQpCisgICAg
ICAgIG1fbWFwLnJlbW92ZShjYWNoZWRJdGVtKTsKKyAgICBlbHNlCisgICAgICAgIG1fZHVwbGlj
YXRlQ291bnRzLnJlbW92ZShrZXkpOworfQorCit0ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMoQXRv
bWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKT4KK2lubGluZSBFbGVtZW50KiBEb2N1bWVudE9yZGVy
ZWRNYXA6OmdldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IERvY3VtZW50KiBkb2N1bWVu
dCkgY29uc3QKK3sKKyAgICBBU1NFUlQoa2V5KTsKKworICAgIG1fbWFwLmNoZWNrQ29uc2lzdGVu
Y3koKTsKKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX21hcC5nZXQoa2V5KTsKKyAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisKKyAgICBpZiAobV9kdXBsaWNhdGVD
b3VudHMuY29udGFpbnMoa2V5KSkgeworICAgICAgICAvLyBXZSBrbm93IHRoZXJlJ3MgYXQgbGVh
c3Qgb25lIG5vZGUgdGhhdCBtYXRjaGVzOyBpdGVyYXRlIHRvIGZpbmQgdGhlIGZpcnN0IG9uZS4K
KyAgICAgICAgZm9yIChOb2RlKiBub2RlID0gZG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKCFub2Rl
LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOworICAgICAgICAgICAgaWYg
KCFrZXlNYXRjaGVzKGtleSwgZWxlbWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBtX2R1cGxpY2F0ZUNvdW50cy5yZW1vdmUoa2V5KTsKKyAgICAgICAgICAgIG1f
bWFwLnNldChrZXksIGVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CisgICAg
ICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJu
IDA7Cit9CisKK0VsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5SWQoQXRv
bWljU3RyaW5nSW1wbCoga2V5LCBjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGdldDxrZXlNYXRjaGVzSWQ+KGtleSwgZG9jdW1lbnQpOworfQorCitFbGVtZW50
KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU1hcE5hbWUoQXRvbWljU3RyaW5nSW1w
bCoga2V5LCBjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdl
dDxrZXlNYXRjaGVzTWFwTmFtZT4oa2V5LCBkb2N1bWVudCk7Cit9CisKK0VsZW1lbnQqIERvY3Vt
ZW50T3JkZXJlZE1hcDo6Z2V0RWxlbWVudEJ5TG93ZXJjYXNlZE1hcE5hbWUoQXRvbWljU3RyaW5n
SW1wbCoga2V5LCBjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGdldDxrZXlNYXRjaGVzTG93ZXJjYXNlZE1hcE5hbWU+KGtleSwgZG9jdW1lbnQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE9yZGVyZWRNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRN
YXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ODc2N2M2NDMzNzFjY2FlMmRlZmFmMzFjOTkyNTY5ZDg2NzQ4Y2Yy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1h
cC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRG9jdW1lbnRPcmRlcmVkTWFwX2gKKyNkZWZpbmUgRG9jdW1lbnRPcmRlcmVkTWFwX2gK
KworI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKKworY2xhc3MgRG9j
dW1lbnRPcmRlcmVkTWFwIHsKK3B1YmxpYzoKKyAgICB2b2lkIGFkZChBdG9taWNTdHJpbmdJbXBs
KiwgRWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50
Kik7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgYm9vbCBjb250YWlucyhBdG9taWNTdHJpbmdJ
bXBsKikgY29uc3Q7CisgICAgYm9vbCBjb250YWluc011bHRpcGxlKEF0b21pY1N0cmluZ0ltcGwq
KSBjb25zdDsKKyAgICAvLyBjb25jcmV0ZSBpbnN0YW50aWF0aW9ucyBvZiB0aGUgZ2V0PD4oKSBt
ZXRob2QgdGVtcGxhdGUKKyAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmdJ
bXBsKiwgY29uc3QgRG9jdW1lbnQqKSBjb25zdDsKKyAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlN
YXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1bWVudCopIGNvbnN0OworICAgIEVs
ZW1lbnQqIGdldEVsZW1lbnRCeUxvd2VyY2FzZWRNYXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqLCBj
b25zdCBEb2N1bWVudCopIGNvbnN0OworCisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Ym9vbCBrZXlNYXRjaGVzKEF0b21pY1N0cmlu
Z0ltcGwqLCBFbGVtZW50Kik+IEVsZW1lbnQqIGdldChBdG9taWNTdHJpbmdJbXBsKiwgY29uc3Qg
RG9jdW1lbnQqKSBjb25zdDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBs
KiwgRWxlbWVudCo+IE1hcDsKKworICAgIC8vIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhh
dCBtX2R1cGxpY2F0ZUNvdW50cyBpcyB0aGUgY291bnQgb2YgYWxsIGVsZW1lbnRzIHdpdGggYSBn
aXZlbiBrZXkKKyAgICAvLyBleGNsdWRpbmcgdGhlIG9uZSByZWZlcmVuY2VkIGluIG1fbWFwLCBp
ZiBhbnkuIFRoaXMgbWVhbnMgaXQgb25lIGxlc3MgdGhhbiB0aGUgdG90YWwgY291bnQKKyAgICAv
LyB3aGVuIHRoZSBmaXJzdCBub2RlIHdpdGggYSBnaXZlbiBrZXkgaXMgY2FjaGVkLCBvdGhlcndp
c2UgdGhlIHNhbWUgYXMgdGhlIHRvdGFsIGNvdW50LgorICAgIG11dGFibGUgTWFwIG1fbWFwOwor
ICAgIG11dGFibGUgSGFzaENvdW50ZWRTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fZHVwbGljYXRl
Q291bnRzOworfTsKKworaW5saW5lIGJvb2wgRG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWlucyhB
dG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXAuY29udGFpbnMo
aWQpIHx8IG1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGlkKTsKK30KKworaW5saW5lIGJvb2wg
RG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWluc011bHRpcGxlKEF0b21pY1N0cmluZ0ltcGwqIGlk
KSBjb25zdAoreworICAgIHJldHVybiBtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhpZCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERvY3VtZW50T3JkZXJlZE1h
cF9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80623</attachid>
            <date>2011-01-31 01:02:26 -0800</date>
            <delta_ts>2011-01-31 08:54:18 -0800</delta_ts>
            <desc>Patch, try de third</desc>
            <filename>bug-53289-20110131180224.patch</filename>
            <type>text/plain</type>
            <size>27350</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWY1ODIwNDU5OGNlNDJkNTUwODhmMTFkYzYxNWYzZTY2NmI0N2Y1Li5m
NzZjM2NkM2QzYmJkNjMyOTJkMDhjZTk1YmM2YTU2MTgwMzYwNDY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDEtMzEgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDUzMjg5IC0gRE9NOiBNb3ZlIERvY3VtZW50T3JkZXJlZE1hcCBmcm9tIERvY3Vt
ZW50IGludG8gc2VwYXJhdGUgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUzMjg5CisKKyAgICAgICAgTW92aW5nIHRoZSBuZXN0ZWQgY2xhc3Mg
RG9jdW1lbnRPcmRlcmVkTWFwIGZyb20gRG9jdW1lbnQgaW50byBzZXBhcmF0ZSBmaWxlcywKKyAg
ICAgICAgdXBkYXRpbmcgY29kZSB3aGVyZSBuZWNlc3NhcnkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAocmVmYWN0b3JpbmcpCisKKyAgICAgICAgKiBHTlVNYWtlZmlsZS5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmdldEltYWdlTWFwKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjprZXlN
YXRjaGVzSWQpOgorICAgICAgICAoV2ViQ29yZTo6a2V5TWF0Y2hlc01hcE5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6a2V5TWF0Y2hlc0xvd2VyY2FzZWRNYXBOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRPcmRlcmVkTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFw
OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU1hcE5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlMb3dl
cmNhc2VkTWFwTmFtZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWluc011bHRpcGxlKToKKyAg
ICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorCiAyMDExLTAxLTI3ICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYzE3M2U4NzU1OTgzOGE0OGE4MDg1ODA0ZmY5
MmIxMTJlOGJhZmFkNC4uOGRlZjY2Mjc1NGJjOTNkZjMyYzM0ZWFkMDY3YTMyZWFjNzA0NDc4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTExNjcsNiArMTE2Nyw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE9yZGVyZWRNYXAuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRl
cmVkTWFwLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUaW1pbmcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYWI3MmJjZTg5NTYxMmQwY2Fk
YjM1Zjg1YTIzMzQzNDAwNWU2Yzg4OS4uNGMyNDI1MTE3YzI3YmE2NmMwNWU4M2UzYjVlMjg3YmZh
Yjg4YjU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTIyMCw2ICsxMjIwLDggQEAKICAgICAgICAg
ICAgICdkb20vRG9jdW1lbnRNYXJrZXIuaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaCcsCisgICAgICAgICAgICAnZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAnLAorICAg
ICAgICAgICAgJ2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuaCcsCiAgICAgICAgICAgICAnZG9tL0Rv
Y3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50UGFyc2VyLmgnLAog
ICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudFRpbWluZy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZWUw
ZWZjYjAyNWE1ODMxMTMxODUzZTRlM2VhMGIyNTBiNGJhNWYyYy4uNTdiOWMyOTkwZmUwZjhiOTIy
YWFiNWRjNjY4ZGUxNTU1MDQ5ZjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTczMCw2ICs3MzAsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBkb20vRG9jdW1lbnQuY3BwIFwKICAgICBkb20vRG9jdW1lbnRG
cmFnbWVudC5jcHAgXAogICAgIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIFwKKyAg
ICBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBcCiAgICAgZG9tL0RvY3VtZW50UGFyc2VyLmNw
cCBcCiAgICAgZG9tL0RvY3VtZW50VHlwZS5jcHAgXAogICAgIGRvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAgXApAQCAtMTY2Myw2ICsxNjY0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuaCBcCiAgICAgZG9tL0RvY3VtZW50TWFya2VyLmggXAogICAgIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaCBcCisgICAgZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oIFwK
ICAgICBkb20vRG9jdW1lbnRUeXBlLmggXAogICAgIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oIFwK
ICAgICBkb20vRE9NU3RyaW5nTGlzdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMTBkMGJjNjllM2ZkOGNkODUzN2M1OTVlOWI2MzU1ZGU2
YzE4Y2YxNi4uNTM1Zjk1NzVhOWY5M2Y2NmM5ZGUyNmRkMTU1ZDYyYmVlNTFlZDhlNCAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQzMDIyLDYg
KzQzMDIyLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxEb2N1bWVudE9yZGVyZWRNYXAuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEb2N1bWVudE9yZGVy
ZWRNYXAuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXERvY3VtZW50UGFyc2VyLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOThhYTRjNzU3NTBmN2VlODM1MTdhODg3N2UwZTU2YjZlMmE5MzAyNC4uNDViY2M5YzRm
MmQxOGM2ZTVhN2ZhYTQ4M2E4NjU5NGVlNGIzY2E3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzAyLDYgKzMwMiw4IEBACiAJ
CTE0MjAxMUI3MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjAxMUI1MEEwMDMx
MzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDMyRTg0NzBDNTE0OTM4MDBCMTUwMEYg
LyogR0NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDMyRTg0NjBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQzMkU4NDkwQzUx
NDkzRjAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDMyRTg0ODBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250
cm9sbGVyLmNwcCAqLzsgfTsKKwkJMTQzQzg4NzkxMkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50
T3JkZXJlZE1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDNDODg3NzEyRjY3QzdFMDA1MkZGRDAgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCAq
LzsgfTsKKwkJMTQzQzg4N0ExMkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1hcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzQzg4Nzgx
MkY2N0M3RTAwNTJGRkQwIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0NDlFMjRDMTA3RDRBODQwMEI1Nzkz
RiAvKiBKU0NhbGxiYWNrRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQ0OUUyNEExMDdENEE4NDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmgg
Ki87IH07CiAJCTE0NDlFMjg3MTA3RDREQjQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ5RTI4NjEw
N0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3BwICovOyB9OwogCQkxNDc3RTc3NjBC
RjQxMzRBMDAxNTI4NzIgLyogUGFnZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NzdFNzc0MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2Fj
aGUuY3BwICovOyB9OwpAQCAtNjYyNCw2ICs2NjI2LDggQEAKIAkJMTQyMDExQjUwQTAwMzEzMzAw
ODMwM0Y5IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDU1NTdHlsZURlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0MzJFODQ2MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDMyRTg0ODBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0NvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDNDODg3NzEyRjY3QzdFMDA1
MkZGRDAgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERvY3VtZW50T3JkZXJlZE1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTE0M0M4ODc4MTJGNjdDN0UwMDUyRkZEMCAvKiBEb2N1bWVudE9yZGVyZWRNYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRPcmRlcmVkTWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDlFMjRBMTA3RDRBODQwMEI1NzkzRiAv
KiBKU0NhbGxiYWNrRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Nh
bGxiYWNrRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQ5RTI4NjEwN0Q0
REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDYWxsYmFja0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxNDc3RTc3NDBCRjQxMzRBMDAxNTI4NzIgLyogUGFnZUNhY2hlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQ2FjaGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTg5ODgsNiArMTg5OTIsOCBAQAogCQkJCUVEMkJBODNCMDlB
MjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovLAogCQkJCUNFMDU3RkEzMTIyMDcz
MTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovLAogCQkJCUNFMDU3
RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLywKKwkJ
CQkxNDNDODg3NzEyRjY3QzdFMDA1MkZGRDAgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCAqLywK
KwkJCQkxNDNDODg3ODEyRjY3QzdFMDA1MkZGRDAgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggKi8s
CiAJCQkJQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLywK
IAkJCQlCQ0NGQkFFNzBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJ
CQk4NkQ5ODJGNjEyNUMxNTQwMDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCAqLywKQEAgLTIy
NDU4LDYgKzIyNDY0LDcgQEAKIAkJCQk5NzdFMkRDRTEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNv
dXJjZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3
OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBE
OTE5MCAvKiBTaGFkb3dCbHVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDNDODg3QTEyRjY3QzdF
MDA1MkZGRDAgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MTU2
LDYgKzI1MTYzLDcgQEAKIAkJCQk5NzdFMkRDRDEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJj
ZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5
IC8qIFhTU0ZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAw
RDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxNDNDODg3OTEyRjY3
QzdFMDA1MkZGRDAgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKaW5kZXggYWE4NWJmYmI3YWNiMTc4NzQxZmU3OTY1YWI0
OTJkNTAxMjY2OGU3OC4uYzg4YWVjZjk0ODU0NzQ2OWFkMGRlMGU0YWQ1MGNjZmVjMDhiZjY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuY3BwIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuY3BwIgogI2luY2x1
ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAiCisjaW5jbHVkZSAiRG9jdW1lbnRPcmRl
cmVkTWFwLmNwcCIKICNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5jcHAiCiAjaW5jbHVkZSAiRG9j
dW1lbnRUeXBlLmNwcCIKICNpbmNsdWRlICJEeW5hbWljTm9kZUxpc3QuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggNmFkZWYyNjkzMGNmZTg3OTdiYTRiY2ZhODEyOTQ4NGE2OWEyODRk
ZS4uY2I5YTJhYmYwMDJhYzNmYjM4MTk3YjA5Y2JjMzRlZDUwOWYxMzAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC0yMjYsMTEgKzIyNiw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAvLyBmb3IgZHVhbCBHNXMuIDopCiBzdGF0aWMgY29uc3QgaW50IGNMYXlvdXRTY2hlZHVs
ZVRocmVzaG9sZCA9IDI1MDsKIAotLy8gVGhlc2UgZnVuY3Rpb25zIGNhbid0IGhhdmUgaW50ZXJu
YWwgbGlua2FnZSBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYXMgdGVtcGxhdGUgYXJndW1lbnRzLgot
Ym9vbCBrZXlNYXRjaGVzSWQoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLWJvb2wga2V5
TWF0Y2hlc01hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLWJvb2wga2V5TWF0
Y2hlc0xvd2VyY2FzZWRNYXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7Ci0KIC8v
IERPTSBMZXZlbCAyIHNheXMgKGxldHRlcnMgYWRkZWQpOgogLy8KIC8vIGEpIE5hbWUgc3RhcnQg
Y2hhcmFjdGVycyBtdXN0IGhhdmUgb25lIG9mIHRoZSBjYXRlZ29yaWVzIExsLCBMdSwgTG8sIEx0
LCBObC4KQEAgLTUwNywxMiArNTAyLDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MLCBjb24KICNlbmRp
ZgogfQogCi1pbmxpbmUgdm9pZCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpjbGVhcigp
Ci17Ci0gICAgbV9tYXAuY2xlYXIoKTsKLSAgICBtX2R1cGxpY2F0ZUNvdW50cy5jbGVhcigpOwot
fQotCiB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiB7CiAgICAgQVNTRVJUKCFtX2Rl
bGV0aW9uSGFzQmVndW4pOwpAQCAtOTk1LDg3ICs5ODQsMTEgQEAgUGFzc1JlZlB0cjxFbGVtZW50
PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBj
b25zdAogICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHFOYW1lLCBmYWxzZSk7CiB9CiAKLWlubGlu
ZSB2b2lkIERvY3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJbXBs
KiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJU
KGVsZW1lbnQpOwotCi0gICAgaWYgKCFtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7
Ci0gICAgICAgIC8vIEZhc3QgcGF0aC4gVGhlIGtleSBpcyBub3QgYWxyZWFkeSBpbiBtX2R1cGxp
Y2F0ZUNvdW50cywgc28gd2UgYXNzdW1lIHRoYXQgaXQncwotICAgICAgICAvLyBhbHNvIG5vdCBh
bHJlYWR5IGluIG1fbWFwIGFuZCB0cnkgdG8gYWRkIGl0LiBJZiB0aGF0IGFkZCBzdWNjZWVkcywg
d2UncmUgZG9uZS4KLSAgICAgICAgcGFpcjxNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQg
PSBtX21hcC5hZGQoa2V5LCBlbGVtZW50KTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gVGhlIGFkZCBmYWlsZWQsIHNvIHRo
aXMga2V5IHdhcyBhbHJlYWR5IGNhY2hlZCBpbiBtX21hcC4KLSAgICAgICAgLy8gVGhlcmUgYXJl
IG11bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhpcyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKLSAgICAg
ICAgLy8gY2FjaGUgZm9yIHRoaXMga2V5IHNvIGdldCBzZWFyY2hlcyBmb3IgaXQgbmV4dCB0aW1l
IGl0IGlzIGNhbGxlZC4KLSAgICAgICAgbV9tYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7Ci0g
ICAgICAgIG1fZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1vdmUgdGhl
IG1fbWFwCi0gICAgICAgIC8vIGNhY2hlIGZvciB0aGlzIGtleSBzbyBnZXQgd2lsbCBzZWFyY2gg
Zm9yIGl0IG5leHQgdGltZSBpdCBpcyBjYWxsZWQuCi0gICAgICAgIE1hcDo6aXRlcmF0b3IgY2Fj
aGVkSXRlbSA9IG1fbWFwLmZpbmQoa2V5KTsKLSAgICAgICAgaWYgKGNhY2hlZEl0ZW0gIT0gbV9t
YXAuZW5kKCkpIHsKLSAgICAgICAgICAgIG1fbWFwLnJlbW92ZShjYWNoZWRJdGVtKTsKLSAgICAg
ICAgICAgIG1fZHVwbGljYXRlQ291bnRzLmFkZChrZXkpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtleSk7Ci19Ci0KLWlubGluZSB2b2lkIERvY3VtZW50
OjpEb2N1bWVudE9yZGVyZWRNYXA6OnJlbW92ZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1l
bnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwot
Ci0gICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVk
SXRlbSA9IG1fbWFwLmZpbmQoa2V5KTsKLSAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQo
KSAmJiBjYWNoZWRJdGVtLT5zZWNvbmQgPT0gZWxlbWVudCkKLSAgICAgICAgbV9tYXAucmVtb3Zl
KGNhY2hlZEl0ZW0pOwotICAgIGVsc2UKLSAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMucmVtb3Zl
KGtleSk7Ci19Ci0KLXRlbXBsYXRlPGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJpbmdJbXBsKiwg
RWxlbWVudCopPiBpbmxpbmUgRWxlbWVudCogRG9jdW1lbnQ6OkRvY3VtZW50T3JkZXJlZE1hcDo6
Z2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25z
dAotewotICAgIEFTU0VSVChrZXkpOwotCi0gICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwot
Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IG1fbWFwLmdldChrZXkpOwotICAgIGlmIChlbGVtZW50
KQotICAgICAgICByZXR1cm4gZWxlbWVudDsKLQotICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5j
b250YWlucyhrZXkpKSB7Ci0gICAgICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUg
bm9kZSB0aGF0IG1hdGNoZXM7IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgotICAgICAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxl
bWVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBpZiAoIWtleU1h
dGNoZXMoa2V5LCBlbGVtZW50KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIG1fZHVwbGljYXRlQ291bnRzLnJlbW92ZShrZXkpOwotICAgICAgICAgICAgbV9tYXAuc2V0
KGtleSwgZWxlbWVudCk7Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgfQot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0K
LQotaW5saW5lIGJvb2wga2V5TWF0Y2hlc0lkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVu
dCogZWxlbWVudCkKLXsKLSAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5n
ZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBrZXk7Ci19Ci0KIEVsZW1lbnQqIERvY3VtZW50Ojpn
ZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKIHsKICAg
ICBpZiAoZWxlbWVudElkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
IG1fZWxlbWVudHNCeUlkLmdldDxrZXlNYXRjaGVzSWQ+KGVsZW1lbnRJZC5pbXBsKCksIHRoaXMp
OworICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQuaW1w
bCgpLCB0aGlzKTsKIH0KIAogU3RyaW5nIERvY3VtZW50OjpyZWFkeVN0YXRlKCkgY29uc3QKQEAg
LTM5MDAsMTYgKzM4MTMsNiBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVJbWFnZU1hcChIVE1MTWFw
RWxlbWVudCogaW1hZ2VNYXApCiAgICAgbV9pbWFnZU1hcHNCeU5hbWUucmVtb3ZlKG5hbWUsIGlt
YWdlTWFwKTsKIH0KIAotaW5saW5lIGJvb2wga2V5TWF0Y2hlc01hcE5hbWUoQXRvbWljU3RyaW5n
SW1wbCoga2V5LCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBlbGVtZW50LT5oYXNU
YWdOYW1lKG1hcFRhZykgJiYgc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihlbGVtZW50KS0+
Z2V0TmFtZSgpLmltcGwoKSA9PSBrZXk7Ci19Ci0KLWlubGluZSBib29sIGtleU1hdGNoZXNMb3dl
cmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCi17
Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSAmJiBzdGF0aWNfY2FzdDxI
VE1MTWFwRWxlbWVudCo+KGVsZW1lbnQpLT5nZXROYW1lKCkubG93ZXIoKS5pbXBsKCkgPT0ga2V5
OwotfQotCiBIVE1MTWFwRWxlbWVudCogRG9jdW1lbnQ6OmdldEltYWdlTWFwKGNvbnN0IFN0cmlu
ZyYgdXJsKSBjb25zdAogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCkBAIC0zOTE3LDggKzM4MjAs
OCBAQCBIVE1MTWFwRWxlbWVudCogRG9jdW1lbnQ6OmdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdAogICAgIHNpemVfdCBoYXNoUG9zID0gdXJsLmZpbmQoJyMnKTsKICAgICBTdHJp
bmcgbmFtZSA9IChoYXNoUG9zID09IG5vdEZvdW5kID8gdXJsIDogdXJsLnN1YnN0cmluZyhoYXNo
UG9zICsgMSkpLmltcGwoKTsKICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0PGtl
eU1hdGNoZXNMb3dlcmNhc2VkTWFwTmFtZT4oQXRvbWljU3RyaW5nKG5hbWUubG93ZXIoKSkuaW1w
bCgpLCB0aGlzKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9p
bWFnZU1hcHNCeU5hbWUuZ2V0PGtleU1hdGNoZXNNYXBOYW1lPihBdG9taWNTdHJpbmcobmFtZSku
aW1wbCgpLCB0aGlzKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVu
dCo+KG1faW1hZ2VNYXBzQnlOYW1lLmdldEVsZW1lbnRCeUxvd2VyY2FzZWRNYXBOYW1lKEF0b21p
Y1N0cmluZyhuYW1lLmxvd2VyKCkpLmltcGwoKSwgdGhpcykpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxIVE1MTWFwRWxlbWVudCo+KG1faW1hZ2VNYXBzQnlOYW1lLmdldEVsZW1lbnRCeU1hcE5h
bWUoQXRvbWljU3RyaW5nKG5hbWUpLmltcGwoKSwgdGhpcykpOwogfQogCiB2b2lkIERvY3VtZW50
OjpzZXREZWNvZGVyKFBhc3NSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggYmU3ZTAwYTNlYjQzY2JjMzFmOWZjNGU5YWU4NmVhNzFkNTA5
MGUyZC4uYTI3MDJmZDgxNTFlMTNmMzVjMTY5MmUxODliYjFiOTg3ZThmMjYxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTMzLDE1ICszMywxNiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5j
bHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiAjaWYgVVNFKEpTQykKICNpbmNsdWRl
IDxydW50aW1lL1dlYWtHQ01hcC5oPgpAQCAtMTA5NSwyOCArMTA5Niw2IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0K
IAogcHJpdmF0ZToKLSAgICBjbGFzcyBEb2N1bWVudE9yZGVyZWRNYXAgewotICAgIHB1YmxpYzoK
LSAgICAgICAgdm9pZCBhZGQoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLSAgICAgICAg
dm9pZCByZW1vdmUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLSAgICAgICAgdm9pZCBj
bGVhcigpOwotCi0gICAgICAgIGJvb2wgY29udGFpbnMoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0
OwotICAgICAgICBib29sIGNvbnRhaW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0
OwotICAgICAgICB0ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMoQXRvbWljU3RyaW5nSW1wbCosIEVs
ZW1lbnQqKT4gRWxlbWVudCogZ2V0KEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1bWVudCop
IGNvbnN0OwotCi0gICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVt
ZW50Kj4gTWFwOwotCi0gICAgICAgIC8vIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBt
X2R1cGxpY2F0ZUNvdW50cyBpcyB0aGUgY291bnQgb2YgYWxsIGVsZW1lbnRzIHdpdGggYSBnaXZl
biBrZXkKLSAgICAgICAgLy8gZXhjbHVkaW5nIHRoZSBvbmUgcmVmZXJlbmNlZCBpbiBtX21hcCwg
aWYgYW55LiBUaGlzIG1lYW5zIGl0IG9uZSBsZXNzIHRoYW4gdGhlIHRvdGFsIGNvdW50Ci0gICAg
ICAgIC8vIHdoZW4gdGhlIGZpcnN0IG5vZGUgd2l0aCBhIGdpdmVuIGtleSBpcyBjYWNoZWQsIG90
aGVyd2lzZSB0aGUgc2FtZSBhcyB0aGUgdG90YWwgY291bnQuCi0gICAgICAgIG11dGFibGUgTWFw
IG1fbWFwOwotICAgICAgICBtdXRhYmxlIEhhc2hDb3VudGVkU2V0PEF0b21pY1N0cmluZ0ltcGwq
PiBtX2R1cGxpY2F0ZUNvdW50czsKLSAgICB9OwotCiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZURl
c3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOwogCiAgICAgdm9pZCBkZXRhY2hQYXJzZXIo
KTsKQEAgLTE0MTIsMTYgKzEzOTEsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1pbmxpbmUg
Ym9vbCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWlucyhBdG9taWNTdHJpbmdJ
bXBsKiBpZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXAuY29udGFpbnMoaWQpIHx8IG1fZHVw
bGljYXRlQ291bnRzLmNvbnRhaW5zKGlkKTsKLX0KLQotaW5saW5lIGJvb2wgRG9jdW1lbnQ6OkRv
Y3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnNNdWx0aXBsZShBdG9taWNTdHJpbmdJbXBsKiBpZCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoaWQpOwotfQot
CiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChBdG9taWNTdHJpbmdJbXBs
KiBpZCkgY29uc3QKIHsKICAgICBBU1NFUlQoaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRPcmRlcmVkTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODdmY2Y0NjQ1Y2EyZjE1YjRlZTk5MWUxN2Ni
OTMyYTA2ZWU4YjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50T3JkZXJlZE1hcC5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEb2N1bWVudE9yZGVyZWRNYXAu
aCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CisKK2lubGluZSBib29sIGtleU1hdGNoZXNJZChBdG9taWNTdHJp
bmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhh
c0lEKCkgJiYgZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0ga2V5OworfQorCitp
bmxpbmUgYm9vbCBrZXlNYXRjaGVzTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSAm
JiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KGVsZW1lbnQpLT5nZXROYW1lKCkuaW1wbCgp
ID09IGtleTsKK30KKworaW5saW5lIGJvb2wga2V5TWF0Y2hlc0xvd2VyY2FzZWRNYXBOYW1lKEF0
b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxl
bWVudC0+aGFzVGFnTmFtZShtYXBUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4o
ZWxlbWVudCktPmdldE5hbWUoKS5sb3dlcigpLmltcGwoKSA9PSBrZXk7Cit9CisKK3ZvaWQgRG9j
dW1lbnRPcmRlcmVkTWFwOjpjbGVhcigpCit7CisgICAgbV9tYXAuY2xlYXIoKTsKKyAgICBtX2R1
cGxpY2F0ZUNvdW50cy5jbGVhcigpOworfQorCit2b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6YWRk
KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQo
a2V5KTsKKyAgICBBU1NFUlQoZWxlbWVudCk7CisKKyAgICBpZiAoIW1fZHVwbGljYXRlQ291bnRz
LmNvbnRhaW5zKGtleSkpIHsKKyAgICAgICAgLy8gRmFzdCBwYXRoLiBUaGUga2V5IGlzIG5vdCBh
bHJlYWR5IGluIG1fZHVwbGljYXRlQ291bnRzLCBzbyB3ZSBhc3N1bWUgdGhhdCBpdCdzCisgICAg
ICAgIC8vIGFsc28gbm90IGFscmVhZHkgaW4gbV9tYXAgYW5kIHRyeSB0byBhZGQgaXQuIElmIHRo
YXQgYWRkIHN1Y2NlZWRzLCB3ZSdyZSBkb25lLgorICAgICAgICBwYWlyPE1hcDo6aXRlcmF0b3Is
IGJvb2w+IGFkZFJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGVsZW1lbnQpOworICAgICAgICBpZiAo
YWRkUmVzdWx0LnNlY29uZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBUaGUg
YWRkIGZhaWxlZCwgc28gdGhpcyBrZXkgd2FzIGFscmVhZHkgY2FjaGVkIGluIG1fbWFwLgorICAg
ICAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIGtleS4gUmVtb3Zl
IHRoZSBtX21hcAorICAgICAgICAvLyBjYWNoZSBmb3IgdGhpcyBrZXkgc28gZ2V0IHNlYXJjaGVz
IGZvciBpdCBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLgorICAgICAgICBtX21hcC5yZW1vdmUoYWRk
UmVzdWx0LmZpcnN0KTsKKyAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggdGhp
cyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKKyAgICAgICAgLy8gY2FjaGUgZm9yIHRoaXMga2V5IHNv
IGdldCB3aWxsIHNlYXJjaCBmb3IgaXQgbmV4dCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgICAg
TWFwOjppdGVyYXRvciBjYWNoZWRJdGVtID0gbV9tYXAuZmluZChrZXkpOworICAgICAgICBpZiAo
Y2FjaGVkSXRlbSAhPSBtX21hcC5lbmQoKSkgeworICAgICAgICAgICAgbV9tYXAucmVtb3ZlKGNh
Y2hlZEl0ZW0pOworICAgICAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMuYWRkKGtleSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBtX2R1cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKK30KKwordm9p
ZCBEb2N1bWVudE9yZGVyZWRNYXA6OnJlbW92ZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGtleSk7CisgICAgQVNTRVJUKGVsZW1lbnQpOwor
CisgICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOworICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVk
SXRlbSA9IG1fbWFwLmZpbmQoa2V5KTsKKyAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQo
KSAmJiBjYWNoZWRJdGVtLT5zZWNvbmQgPT0gZWxlbWVudCkKKyAgICAgICAgbV9tYXAucmVtb3Zl
KGNhY2hlZEl0ZW0pOworICAgIGVsc2UKKyAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMucmVtb3Zl
KGtleSk7Cit9CisKK3RlbXBsYXRlPGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJpbmdJbXBsKiwg
RWxlbWVudCopPgoraW5saW5lIEVsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KEF0b21p
Y1N0cmluZ0ltcGwqIGtleSwgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAoreworICAg
IEFTU0VSVChrZXkpOworCisgICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOworCisgICAgRWxl
bWVudCogZWxlbWVudCA9IG1fbWFwLmdldChrZXkpOworICAgIGlmIChlbGVtZW50KQorICAgICAg
ICByZXR1cm4gZWxlbWVudDsKKworICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhr
ZXkpKSB7CisgICAgICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0
IG1hdGNoZXM7IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgorICAgICAgICBmb3IgKE5v
ZGUqIG5vZGUgPSBkb2N1bWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJh
dmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CisgICAgICAgICAgICBpZiAoIWtleU1hdGNoZXMoa2V5
LCBlbGVtZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG1fZHVw
bGljYXRlQ291bnRzLnJlbW92ZShrZXkpOworICAgICAgICAgICAgbV9tYXAuc2V0KGtleSwgZWxl
bWVudCk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfQorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworRWxlbWVu
dCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmdJbXBsKiBr
ZXksIGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0PGtl
eU1hdGNoZXNJZD4oa2V5LCBkb2N1bWVudCk7Cit9CisKK0VsZW1lbnQqIERvY3VtZW50T3JkZXJl
ZE1hcDo6Z2V0RWxlbWVudEJ5TWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IERv
Y3VtZW50KiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0PGtleU1hdGNoZXNNYXBO
YW1lPihrZXksIGRvY3VtZW50KTsKK30KKworRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpn
ZXRFbGVtZW50QnlMb3dlcmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0
IERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0PGtleU1hdGNoZXNM
b3dlcmNhc2VkTWFwTmFtZT4oa2V5LCBkb2N1bWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1h
cC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU4NzY3YzY0MzM3MWNjYWUyZGVmYWYzMWM5OTI1NjlkODY3NDhjZjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmgKQEAgLTAsMCArMSw4
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEb2N1bWVudE9y
ZGVyZWRNYXBfaAorI2RlZmluZSBEb2N1bWVudE9yZGVyZWRNYXBfaAorCisjaW5jbHVkZSA8d3Rm
L0hhc2hDb3VudGVkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OworCitjbGFzcyBEb2N1bWVudE9yZGVyZWRNYXAg
eworcHVibGljOgorICAgIHZvaWQgYWRkKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7Cisg
ICAgdm9pZCByZW1vdmUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKKyAgICB2b2lkIGNs
ZWFyKCk7CisKKyAgICBib29sIGNvbnRhaW5zKEF0b21pY1N0cmluZ0ltcGwqKSBjb25zdDsKKyAg
ICBib29sIGNvbnRhaW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0OworICAgIC8v
IGNvbmNyZXRlIGluc3RhbnRpYXRpb25zIG9mIHRoZSBnZXQ8PigpIG1ldGhvZCB0ZW1wbGF0ZQor
ICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1
bWVudCopIGNvbnN0OworICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeU1hcE5hbWUoQXRvbWljU3Ry
aW5nSW1wbCosIGNvbnN0IERvY3VtZW50KikgY29uc3Q7CisgICAgRWxlbWVudCogZ2V0RWxlbWVu
dEJ5TG93ZXJjYXNlZE1hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCosIGNvbnN0IERvY3VtZW50Kikg
Y29uc3Q7CisKKyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICB0ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQq
KT4gRWxlbWVudCogZ2V0KEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1bWVudCopIGNvbnN0
OworCisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kj4gTWFw
OworCisgICAgLy8gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IG1fZHVwbGljYXRlQ291
bnRzIGlzIHRoZSBjb3VudCBvZiBhbGwgZWxlbWVudHMgd2l0aCBhIGdpdmVuIGtleQorICAgIC8v
IGV4Y2x1ZGluZyB0aGUgb25lIHJlZmVyZW5jZWQgaW4gbV9tYXAsIGlmIGFueS4gVGhpcyBtZWFu
cyBpdCBvbmUgbGVzcyB0aGFuIHRoZSB0b3RhbCBjb3VudAorICAgIC8vIHdoZW4gdGhlIGZpcnN0
IG5vZGUgd2l0aCBhIGdpdmVuIGtleSBpcyBjYWNoZWQsIG90aGVyd2lzZSB0aGUgc2FtZSBhcyB0
aGUgdG90YWwgY291bnQuCisgICAgbXV0YWJsZSBNYXAgbV9tYXA7CisgICAgbXV0YWJsZSBIYXNo
Q291bnRlZFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9kdXBsaWNhdGVDb3VudHM7Cit9OworCitp
bmxpbmUgYm9vbCBEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zKEF0b21pY1N0cmluZ0ltcGwq
IGlkKSBjb25zdAoreworICAgIHJldHVybiBtX21hcC5jb250YWlucyhpZCkgfHwgbV9kdXBsaWNh
dGVDb3VudHMuY29udGFpbnMoaWQpOworfQorCitpbmxpbmUgYm9vbCBEb2N1bWVudE9yZGVyZWRN
YXA6OmNvbnRhaW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGlkKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRG9jdW1lbnRPcmRlcmVkTWFwX2gKKwo=
</data>
<flag name="review"
          id="72122"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="72123"
          type_id="3"
          status="-"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>